在搜索ELK資料的時候,發現這篇文章比較好,因而摘抄一小段:css
如下內容來自: http://baidu.blog.51cto.com/71938/1676798 node
日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員能夠經過日誌瞭解服務器軟硬件信息、檢查配置過程當中的錯誤及錯誤發生的緣由。常常分析日誌能夠了解服務器的負荷,性能安全性,從而及時採起措施糾正錯誤。linux
一般,日誌被分散的儲存不一樣的設備上。若是你管理數十上百臺服務器,你還在使用依次登陸每臺機器的傳統方法查閱日誌。這樣是否是感受很繁瑣和效率低下。當務之急咱們使用集中化的日誌管理,例如:開源的syslog,將全部服務器上的日誌收集彙總。nginx
集中化管理日誌後,日誌的統計和檢索又成爲一件比較麻煩的事情,通常咱們使用grep、awk和wc等Linux命令能實現檢索和統計,可是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法不免有點力不從心。web
開源實時日誌分析ELK平臺可以完美的解決咱們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。官方網站: https://www.elastic.co/products bootstrap
Elasticsearch是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。vim
Logstash是一個徹底開源的工具,他能夠對你的日誌進行收集、過濾,並將其存儲供之後使用(如,搜索)。安全
Kibana 也是一個開源和免費的工具,它Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。ruby
—————————- 摘抄內容結束——————————- bash
畫了一個ELK工做的原理圖:
如圖:Logstash收集AppServer產生的Log,並存放到ElasticSearch集羣中,而Kibana則從ES集羣中查詢數據生成圖表,再返回給Browser。
System: Centos release 6.6 (Final)
ElasticSearch: elasticsearch-5.3.0.tar.gz
Logstash: logstash-5.3.0.tar.gz
Kibana: kibana-5.3.0-linux-x86_64.tar.gz
Java: openjdk version 」1.8.0_51″
ELK官網下載: https://www.elastic.co/downloads/
配置ElasticSearch:
useradd elk #ES不容許root啓動服務
tar -zxvf elasticsearch-5.3.0.tar.gz
cd elasticsearch-5.3.0
vi config/elasticsearch.yml
修改如下配置項:
cluster.name: es_cluster node.name: node0 path.data: /tmp/elasticsearch/data path.logs: /tmp/elasticsearch/logs network.host: 172.16.160.122 http.port: 9200
其餘的選項保持默認,而後啓動ES:
su elk
./bin/elasticsearch &
三、
補:啓動異常:ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
問題緣由:由於Centos6不支持SecComp,而ES5.2.1默認bootstrap.system_call_filter爲true進行檢測,因此致使檢測失敗,失敗後直接致使ES不能啓動。
解決方法須要修改幾個地方:
1, 在elasticsearch.yml中配置,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
2,vim /etc/security/limits.d/90-nproc.conf
* soft nproc 65535
root soft nproc unlimited
3,vim /etc/sysctl.conf
vm.max_map_count = 655360
能夠看到,它跟其餘的節點的傳輸端口爲9300,接受HTTP請求的端口爲9200。
Logstash的功能以下:
其實它就是一個 收集器 而已,咱們須要爲它指定Input和Output(固然Input和Output能夠爲多個)。而Output就是ElasticSearch。
配置Logstash:
tar -zxvf logstash-5.3.0.tar.gz cd logstash-5.3.0
編寫配置文件(名字和位置能夠隨意,這裏我放在config目錄下,取名爲a_es.conf):
mkdir config vi config/a_es.conf
input { file { path => "/tmp/a.log" #建立的測試日誌文件 } } filter { } output { stdout { codec => rubydebug } elasticsearch { index => "test_%{+YYYY.MM.dd}" #索引信息 hosts => [ "172.16.160.122:9200" ] } }
./bin/logstash -f config/a_es.conf
以下圖,證實通訊無誤
配置Kibana:
tar -zxvf kibana-4.3.0-linux-x86.tar.gz cd kibana-4.3.0-linux-x86 vi config/kibana.yml server.port: 5601 server.host: "172.16.160.122" elasticsearch.url: http://172.16.160.122:9200 kibana.index: ".kibana.yml" ./bin/kibana