Centos7.5搭建ELK-6.5.0日誌分析平臺
Centos7.5搭建ELK-6.5.0日誌分析平臺
1. 簡介
工作工程中,不論是開發還是運維,都會遇到各種各樣的日誌,主要包括系統日誌、應用程式日誌和安全日誌,對於開發人員來說,檢視日誌,可以實時檢視程式的執行錯誤,以及效能分析,通常,一個大中型的應用程式會被部署到多臺伺服器,那日誌檔案也會分散到不同的機器上,這樣檢視日誌難道要一臺一臺去檢視?顯然是太麻煩了,開源的日誌分析系統 ELK 完美的解決了這個問題。
ELK 並不是一個獨立的系統,她是由 ElasticSearch、Logstash、Kibana 三個開源的工具組成。
ElasticSearch
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
Logstash
Logstash 是一個開源的日誌分析、收集工具,並將日誌儲存以供以後使用。
Kibana
Kibana 是一個為 Logstash 和 ElasticSearch 提供的日誌分析的 Web 介面。可使用它對日誌進行高效的搜尋、視覺化、分析等各種操作。
2. 安裝
下載elk的三個組建,es,logstash,kibana
https://artifacts.elastic.co/downloads/logstash/logstash-6.5.0.tar.gz https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz https://artifacts.elastic.co/downloads/kibana/kibana-6.5.0-linux-x86_64.tar.gz
設定引數
設定核心引數
vim /etc/sysctl.conf # 新增下面一行 vm.max_map_count = 262144 systcl -p ## 載入配置
修改系統最大檔案開啟數
vim /etc/security/limits.conf ##新增如下兩行,儲存後重新登陸使用者及生效 * soft nofile 65536 * hard nofile 65536
關閉防火牆
service firewalld stop
解壓並移動
## 新建目錄 mkdir /usr/local/elk ## 解壓 tar -vxzf elasticsearch-6.5.0.tar.gz tar -vxzf kibana-6.5.0-linux-x86_64.tar.gz tar -vxzf logstash-6.5.0.tar.gz ## 移動 mv elasticsearch-6.5.0 /usr/local/elk/ mv kibana-6.5.0-linux-x86_64 /usr/local/elk/ mv logstash-6.5.0 /usr/local/elk/
安裝elasticsearch資料儲存器,用於資料儲存
vim /usr/local/elk/elasticsearch-6.5.0/config/elasticsearch.yml # ---------------------------------- Cluster ----------------------------------- cluster.name: ES-cluster ##設定叢集名稱,叢集內的節點都要設定相同,可自定義 # ------------------------------------ Node ------------------------------------ node.name: node-1 ## 節點名稱,自定義,各個節點不可相同 # ----------------------------------- Paths ------------------------------------ path.data: /usr/local/elk/elasticsearch-6.5.0/data path.logs: /usr/local/elk/elasticsearch-6.5.0/logs # ---------------------------------- Network ----------------------------------- network.host: 192.168.9.90 ## 本機IP http.port: 9200 ## 埠,預設9200 # --------------------------------- Discovery ---------------------------------- discovery.zen.ping.unicast.hosts: ["192.168.9.89","192.168.9.90"] ## 此叢集內所有節點的IP地址,這裡沒有使用自動發現,而是指定地址發現,因為規模較小 discovery.zen.minimum_master_nodes: 1
新增使用者,不能使用root使用者啟動
groupadd -g 1008 elasticsearch useradd -g 1008 -u 1008 elasticsearch chown -R elasticsearch:elasticsearch /usr/local/elk/elasticsearch-6.5.0/
啟動elasticsearch
su elasticsearch ./elasticsearch ## 驗證是否啟動成功 ps -ef | grep elasticsearch
安裝kibana
vim /usr/local/elk/kibana-6.5.0-linux-x86_64/config/kibana.yml server.port: 5601 ## kibana預設埠 server.host: "192.168.9.90" ## 服務的host,直接填本機IP即可。 elasticsearch.url: "http://192.168.9.89:9200" ## elasticsearch的連線地址,叢集時,連線其中一臺節點即可。
啟動kibana
cd bin ./kibana
安裝logstash
vim /usr/local/elk/logstash-6.5.0/config/logstash.yml ##修改host為0.0.0.0,這樣別的電腦就可以連線整個logstash,不然只能本機連線。 http.host: "0.0.0.0"
配置logstash配置檔案,儲存在elk/conf/all.conf
input { ## input為輸入口 redis { data_type => "list" ## 佇列輸入,預設輸入型別為list db => 10 ## 指定redis庫 key => "redis-pipeline" ## redis是key-value式的記憶體資料庫,指定key即是指定佇列的標識key的大概意思 host => "192.168.9.79" ## 下面是連線資訊,如果有密碼則需要新增password這一項 port => "6379" threads => 5 ## 執行緒數 } } filter { ## 過濾器filter grok { ## grok外掛,可以通過正則匹配,將日誌的message進行格式化轉換。 match => ["message","%{YEAR:YEAR}-%{MONTHNUM:MONTH}-%{MONTHDAY:DAY} %{HOUR:HOUR}:%{MINUTE:MIN}:%{SECOND:SEC},(?<MSEC>([0-9]*)) %{LOGLEVEL:loglevel} \[(?<Classname>(.*))\] - (?<Content>(.*))"] } } output { ## 輸出elasticsearch elasticsearch { hosts => ["192.168.9.89:9200","192.168.9.90:9200"] ## 輸出的elasticsearch的資料節點IP index => "logstash-test" ## 索引值 #user => "elastic" ## elasticsearch 的使用者密碼,需要安裝x-pack才會有,這裡先不用 #password => "changeme" } }
啟動logstash
cd /usr/local/elk/logstash-6.5.0/bin ./logstash -f /usr/local/elk/conf/all.conf
到現在,elk的三個組建就全部啟動了。