ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash 。
官方文檔 :https://www.elastic.co/ java
- Elasticsearch是個開源分佈式搜索引擎,提供蒐集、分析、存儲數據三大功能。它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
- Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支持大量的數據獲取方式。通常工做方式爲c/s架構,client端安裝在須要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操做在一併發往elasticsearch上去。
- Kibana 也是一個開源和免費的工具,Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助彙總、分析和搜索重要數據日誌。
主機 | IP | 主要服務 |
---|---|---|
linux-node1 | 192.168.200.129 | jdk、logstash、elasticsearch、kibana |
linux-node2 | 192.168.200.130 | jdk、elasticsearch |
Logstash須要Java 8.不支持Java 9。node
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch //導入密鑰 # vim /etc/yum.repos.d/elasticsearch.repo //配置源 [elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=http://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enable=1 # yum install elasticsearch -y //安裝elasticsearch # yum install java -y //安裝java jdk # java -version //查看java版本 (1.8版本)
配置elasticsearchlinux
-------------------linux-node1服務器配置 ------------------------- # vim /etc/elasticsearch/elasticsearch.yml cluster.name: abner //17行 集羣名稱 node.name: linux-node1 //23行 節點名稱 path.data: /data/es-data //33行37行 工做目錄 path.logs: /var/log/elasticsearch/ bootstrap.memory_lock: true //43行 防止交換swap分區 network.host: 0.0.0.0 //54行 監聽網絡 http.port: 9200 //58行 端口 discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.200.130"] //68行 單播列表自動發現機制 -------------------linux-node2服務器配置(其餘同上)--------------------- node.name: linux-node2 // 23行 節點名稱 discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.200.129"] //68行 單播列表自動發現機制 # mkdir -p /data/es-data # chown -R elasticsearch:elasticsearch /data/es-data/ # systemctl start elasticsearch.service # netstat -ntap | grep 9200
RESTful API (經過json格式交互)bootstrap
# curl -i -XGET 'http://192.168.200.129:9200/_count?pretty' -d '{"query": { "match_all": {} }}'
生產環境中必需要修改(注意)vim
# vim /etc/security/limits.conf //末尾插入 elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited * soft nofile 65535 * hard nofile 65535 # systemctl stop elasticsearch.service # systemctl start elasticsearch.service
http://192.168.200.129:9200/_plugin/head/centos
# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
http://192.168.200.129:9200/_plugin/kopf/#!/cluster瀏覽器
# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
安裝logstashruby
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch # vim /etc/yum.repos.d/logstash.repo [logstash-2.1] name=Logstash repository for 2.1.x packages baseurl=http://packages.elastic.co/logstash/2.1/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enable=1 # yum install logstash -y
定義輸入和輸出流,相似管道服務器
# /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{} }'
詳細格式顯示
# /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }'
寫入到elasticsearch中
# /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.200.129:9200"] } }'
寫入ES和同時詳細格式顯示
# /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.200.129:9200"] } stdout { codec => rubydebug } }'
建立 logstash配置文件寫入
# vim /etc/logstash/conf.d/01-logstash.conf input { stdin { } } output { elasticsearch { hosts => ["192.168.200.129:9200"] } stdout { codec => rubydebug } } # /opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstash.conf
事件優化處理
# vim /root/file.conf input { file { path => "/var/log/messages" type => "system" start_position => "beginning" } file { path => "/var/log/elasticsearch/abner.log" type => "es-error" start_position => "beginning" codec => multiline { pattern => "^\[" negate => true what => "previous" } } } output { if [type] == "system" { elasticsearch { hosts => ["192.168.200.129:9200"] index => "system-%{+YYYY.MM.dd}" } } if [type] == "es-error" { elasticsearch { hosts => ["192.168.200.129:9200"] index => "es-error-%{+YYYY.MM.dd}" } } } # logstash -f /root/file.conf
Kibana 也是一個開源和免費的工具,Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助彙總、分析和搜索重要數據日誌。
# wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz # tar zxvf kibana-4.3.1-linux-x64.tar.gz -C /opt/ # mv /opt/kibana-4.3.1-linux-x64/ /usr/local/kibana # vim /usr/local/kibana/config/kibana.yml server.port: 5601 //2行 server.host: "0.0.0.0" //5行 elasticsearch.url: "http://192.168.200.129:9200" //12行 ES地址 elasticsearch.url: "http://192.168.200.130:9200" //節點2的 ES地址 kibana.index: ".kibana" //20行
Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶能夠經過該軟件同時鏈接多個本地或遠程的命令行會話,並在其間自由切換。GNU Screen能夠看做是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
# yum install screen -y # screen //開啓 # /usr/local/kibana/bin/kibana //啓動監聽
按下組合鍵 ctrl+a+d 進行丟入後臺
打開瀏覽器:http://192.168.200.129:5601/