ELK

ELK簡介

ELK 是三個開源軟件的縮寫,分別爲:Elasticsearch、Logstash 以及 Kibana,它們都是開源軟件。不過如今還新增了一個 Beats,它是一個輕量級的日誌收集處理工具(Agent),Beats 佔用資源少,適合於在各個服務器上搜集日誌後傳輸給 Logstash,官方也推薦此工具,目前因爲本來的 ELK Stack 成員中加入了 Beats 工具因此已更名爲 Elastic Stack。html

根據 Google Trend 的信息顯示,Elastic Stack 已經成爲目前最流行的集中式日誌解決方案。java

Elastic Stack 包含:node

  • Elasticsearch 是個開源分佈式搜索引擎,提供蒐集、分析、存儲數據三大功能。它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful 風格接口,多數據源,自動搜索負載等。
  • Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支持大量的數據獲取方式。通常工做方式爲 c/s 架構,client 端安裝在須要收集日誌的主機上,server 端負責將收到的各節點日誌進行過濾、修改等操做在一併發往 Elasticsearch 上去。
  • Kibana 也是一個開源和免費的工具,Kibana 能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助彙總、分析和搜索重要數據日誌。
  • Beats 在這裏是一個輕量級日誌採集器,其實 Beats 家族有 6 個成員,早期的 ELK 架構中使用 Logstash 收集、解析日誌,可是 Logstash 對內存、cpu、io 等資源消耗比較高。相比 Logstash,Beats 所佔系統的 CPU 和內存幾乎能夠忽略不計。

ELK Stack (5.0版本以後)--> Elastic Stack == (ELK Stack + Beats)。linux

目前 Beats 包含六種工具:git

  • Packetbeat: 網絡數據(收集網絡流量數據)
  • Metricbeat: 指標(收集系統、進程和文件系統級別的 CPU 和內存使用狀況等數據)
  • Filebeat: 日誌文件(收集文件數據)
  • Winlogbeat: windows 事件日誌(收集 Windows 事件日誌數據)
  • Auditbeat:審計數據(收集審計日誌)
  • Heartbeat:運行時間監控(收集系統運行時的數據)

ELK 簡單架構圖:github

ElasticSearch:(存儲數據信息,搜索組件)web

因爲elasticsearch是用Java語言編寫的須要跑在Java虛擬機上,因此在安裝elasticsearch以前須要安裝Java的JDK包。版本至少要在1.80版本上的包。npm

#yum install java-1.8.0-openjdk-devel

官方軟件下載:https://www.elastic.co/products  vim

若是須要下載之前的版本點擊下面。windows

QQ截圖20180730203209

ElasticSearch 5的程序環境

配置文件:

/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties
Unit File:elasticsearch.service

程序文件:

/usr/share/elasticsearch/bin/elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-keystore:
/usr/share/elasticsearch/bin/elasticsearch-plugin:管理插件程序

下載安裝elasticsearch

#wget
 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.10.rpm   #下載rpm的包
#yum install java-1.8.0-openjdk-devel    #安裝JDK的包
#rpm -ivh elasticsearch-5.6.10.rpm  #將下載下來的包安裝,因爲此包沒有依賴因此使用rpm安裝就能夠
#systemctl start elasticsearch   #啓動服務
#/etc/elasticsearch/elasticsearch.ym  #修改配置文件
測試使用,主要設置網絡:
network.host: 192.168.130.7  #本機Ip
http.port: 9200  #監聽端口
#vim /etc/elasticsearch/jvm.options
-Xms1g #虛擬機內存
-Xmx1g # curl http:
//192.168.130.7:9200/ 測試

安裝插件

使用git安裝elasticsearch-head 
# yum install -y npm 
# git clone git://github.com/mobz/elasticsearch-head.git 
# cd elasticsearch-head 
# npm install 
# npm run start 檢查端口是否起來 netstat -antp |grep 9100
瀏覽器訪問測試是否正常 http://IP:9100/

實驗:實現兩個elasticsearch節點

nod01:(192.168.130.7)

#vim   /etc/hostname  #修改主機名
node1
#vim /etc/hosts   #解析DNS
192.168.130.7   node1
#yum install java-1.8.0-openjdk-devel    #安裝JDK的包
#rpm -ivh elasticsearch-5.6.10.rpm  #將下載下來的包安裝,因爲此包沒有依賴因此使用rpm安裝就能夠
systemctl daemon-reload  #包裝好後執行此命令
vim /etc/elasticsearch/jvm.options   #修改配置文件;jdk的配置文件
-Xms1g
-Xmx1g   #佔用內存設置選項,兩個的值必須設爲相同
vim /etc/elasticsearch/elasticsearch.yml   #修改主配置文件
cluster.name: myelssss    #設定是否在同一個集羣的標識;可自定義名稱
node.name:node1  #當前節點的IP地址,此處作了dns解析能夠用作節點的名稱
#node.attr.rack: r1 (節點處於哪一個機架上的設置,系統會識別機架,不將數據的主切片和從切片放到同一個機架上,本實驗中不須要設置)
path.data: /data/myels  #數據存放的路徑;能夠自定義,或者將目錄掛載到存儲設備上
path.logs: /data/logs   #日誌存放的路徑
network.host: 192.168.130.7     #當前主機的IP地址
http.port: 9200    #啓用端口號
discovery.zen.ping.unicast.hosts: [「192.168.130.7″,http.port: 9200192.168.130.8]    #定義集羣的成員
discovery.zen.minimum_master_nodes: 2
#mkdir /data/myels
#mkdir /data/logs  #建立存放數據和日誌的文件夾
#chown elasticsearch: /data/*   #將剛建立的文件夾的屬主和數組都改成elasticsearch全部
#systemctl start elasticsearch     #啓動服務

nod02:(192.168.130.8)

#vim   /etc/hostname   #修改主機名
node2
#vim /etc/hosts  #解析DNS
192.168.130.8   node2
#yum install java-1.8.0-openjdk-devel    #安裝JDK的包
#rpm -ivh elasticsearch-5.6.10.rpm  #將下載下來的包安裝,因爲此包沒有依賴因此使用rpm安裝就能夠
systemctl daemon-reload  #包裝好後執行此命令
vim /etc/elasticsearch/jvm.options   #修改配置文件;jdk的配置文件
-Xms1g
-Xmx1g   #佔用內存設置選項,兩個的值必須設爲相同
vim /etc/elasticsearch/elasticsearch.yml   #修改主配置文件
cluster.name: myelssss    #設定是否在同一個集羣的標識;可自定義名稱
node.name:node1  #當前節點的IP地址,此處作了dns解析能夠用作節點的名稱
#node.attr.rack: r1 (節點處於哪一個機架上的設置,系統會識別機架,不將數據的主切片和從切片放到同一個機架上,本實驗中不須要設置)
path.data: /data/myels  #數據存放的路徑;能夠自定義,或者將目錄掛載到存儲設備上
path.logs: /data/logs   #日誌存放的路徑
network.host: 192.168.130.8    #當前主機的IP地址
http.port: 9200    #啓用端口號
discovery.zen.ping.unicast.hosts: [「192.168.130.8″,http.port: 9200192.168.130.7]    #定義集羣的成員
discovery.zen.minimum_master_nodes: 2
#mkdir /data/myels
#mkdir /data/logs  #建立存放數據和日誌的文件夾
#chown elasticsearch: /data/*   #將剛建立的文件夾的屬主和數組都改成elasticsearch全部
#systemctl start elasticsearch     #啓動服務

下載並安裝Logstach(高度插件化服務程序)

官網:https://www.elastic.co/products/logstash

集中,轉換,存儲

高度插件化程序

三類核心插件:輸入插件(指定數據源抽取數據),過濾器插件,輸出插件(處理後的結果保留到不一樣位置)

多個logstash從本地日誌文件中收集日誌-->可在此添加消息隊列-->發送到logstash server(過濾器插件過濾)-->elasticsearch

三類插件

  • Input plugins(獲取數據)
  • Output plugins(保存數據位置)
  • Filter plugins(不一樣數據加工功能)
    •   Grok filter plugin(非文檔轉換爲文檔格式,日誌就不是K/V鍵值對格式)

# yum install java-1.8.0-openjdk-devel  #下載JDK
# wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.8.rpm  #下載相關包
# rpm -ivh logstash-5.6.8.rpm  #安裝logstash
/usr/share/logstash默認路徑
#vim /etc/profile.d/logstash.sh  #路徑加載到系統環境搜索變量中
export PATH=/usr/share/logstash/bin :$PATH
#exec bash  #重行啓動bash
#logstash --help  #啓動很慢
#cd /etc/logstash
#vim /conf.d/test1.conf  #編輯測試配置文件,輸入什麼輸出什麼
input {
  stdin{}

}

output {

  stdout{

  }

}

#logstash -f test.conf -t  #指定配置文件並檢查
#logstash -f test.conf  #啓動

 kibana下載安裝

自我獨立的web服務器

默認監聽端口:5600

工做與http協議

搜索,數據聚合

圖形界面展現

# wget ftp://172.20.0.1/pub/Sources/7.x86_64/elasticstack/kibana-5.6.8-x86_64.rpm  #下載相關包
# rpm -ivh kibana-5.6.8-x86_64.rpm  #安裝kibana
# cd /etc/kibana/
/etc/kibana]# ls
kibana.yml
/etc/kibana]# vim kibana.yml  #修改配置文件
server.port: 5601 #監聽於5601
server.host: "0.0.0.0"  #監聽本機全部地址
elasticsearch.url: "http://172.20.81.7:9200" #elasticsearch所在主機
http://172.20.81.81:5601進入圖形界面配置
頁面使用:Discover
可視化:Visualize
面板:Dashboard

 filebeat                                        

rides在中間作消息隊列       

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息