1. 程式人生 > >快速搭建ELK,以及簡單故障處理

快速搭建ELK,以及簡單故障處理

fir pac 模塊 timestamp roo cal 遠程連接 onerror 3.0

ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat占用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash,官方也推薦此工具。

Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。

Logstash 主要是用來日誌的搜集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一並發往elasticsearch上去。

Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日誌。

一. ElasticSearch 的安裝與運行

ES 是一個基於 Lucene 的使用 Java 開發的開源搜索引擎,因此其運行是基於 JVM 的,因此在安裝之前需要保證已經安裝了 Java 環境。ES 要求使用 Java8 或者更高版本的 Java 環境。

確定機器已經安裝了 Java 環境後,就可以安裝 ES 了。官網提供了壓縮包可以直接下載,

# 下載壓縮包 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz # 解壓 tar -xzf elasticsearch-6.2.2.tar.gz # 進入文件 cd elasticsearch-6.2.2/

  • 下載解壓完成後進入目錄,啟動命令在 bin 目錄下,直接運行命令就可以啟動了

註意: 啟動報錯

技術分享圖片技術分享圖片

解決方法:es不能用root啟動,先建立一個es用戶,並給與啟動文件權限 useradd *** chown -R **:** ././(es的文件路徑)

切換到es用戶

bin/elasticsearch


ElasticSearch 的默認啟動端口是 9200。手動訪問出現如下信息說明啟動成功。

技術分享圖片技術分享圖片

二. FileBeats 與 LogStash 的安裝

LogStash 可以用來對日誌進行收集並進行過濾整理後輸出到 ES 中,FileBeats 是一個更加輕量級的日誌收集工具。

現在最常用的方式是通過 FileBeats 收集目標日誌,然後統一輸出到 LogStash 做進一步的過濾,在由 LogStash 輸出到 ES 中進行存儲。

1. LogStash 的安裝運行

官方提供了壓縮包下載, https://www.elastic.co/downloads/logstash 。 下載完成後解壓即可。

tar zxvf logstash-6.2.2.tar.gz # 進入目錄 cd logstash-6.2.2

LogStash 的運行需要指定一個配置文件,來指定數據的流向,我們在當前目錄下創建一個 first.conf 文件,其內容如下:

# 配置輸入為 beats input { beats { port => "5044" } } # 數據過濾 filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } geoip { source => "clientip" } } # 輸出到本機的 ES output { elasticsearch { hosts => [ "localhost:9200" ] } }


配置完成後就可以通過如下方式啟動 LogStash 了

bin/logstash -f first.conf --config.reload.automatic

#--config.reload.automatic選項啟用自動配置重新加載,因此每次修改配置文件時都不必停止並重新啟動Logstash

註意:

NameError: cannot link Java class org.apache.logging.log4j.core.config.LoggerConfig needs Java 8 (java.lang.UnsupportedClassVersionError: org/logstash/log/LogstashLogEventFactory : Unsupported major.minor version 52.0)

顯示version版本問題,應該是JDK版本沒有更新 java -version查看版本是否為1.8.

如果為1.7則需要:1.去網站下載jdk18*版本

2.tar -zxvf jdk-8u181-linux-x64.tar

3.sudo mv jdk1.8.0_181 /usr/local/java

4.vim /etc/profile

export JAVA_HOME=/usr/local/java(此處根據自己jdk安裝的目錄來寫) export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=.:${JAVA_HOME}/bin:$PATH

5.生效配置文件sourc /etc/profile

6.java -version

技術分享圖片技術分享圖片

重新啟動logstash

可以看到命令行會打印出如下信息, 可以看到 LogStash 默認端口為 5044:

技術分享圖片技術分享圖片

2. 安裝運行 FileBeats

FileBeats 也提供了下載包,地址為 https://www.elastic.co/downloads/beats/filebeat 。找到系統對應的包下載後解壓即可。

tar zxvf filebeat-6.2.2-darwin-x86_64.tar.gz cd filebeat-6.2.2-darwin-x86_64

進入目錄編輯 filebeat.yml 找到對應的配置項,配置如下

- type: log # Change to true to enable this prospector configuration. enabled: True # Paths that should be crawled and fetched. Glob based paths. # 讀取 Nginx 的日誌 paths: - /usr/local/nginx/logs/*.log(想監控的日誌目錄都可以添加進去)

- /var/log/message/*.log #----------------------------- Logstash output -------------------------------- # 輸出到本機的 LogStash output.logstash: # The Logstash hosts hosts: ["localhost:5044"]

配置完成後執行如下命令,啟動 FileBeat 即可

# FileBeat 需要以 root 身份啟動,因此先更改配置文件的權限 sudo chown root filebeat.yml sudo ./filebeat -e -c filebeat.yml -d "publish"(通過./filebeat -c -e測試配置的FileBeat腳本.-d“publish”顯示所有“publish”相關的消息。)

技術分享圖片技術分享圖片

啟動成功。

三. Kibana 的安裝運行

Kibana 也提供了對應的安裝包下載,鏈接為 https://www.elastic.co/downloads/kibana , Mac、Linux、Win 都有對應的安裝包,直接下載解壓即可

tar zxvf kibana-6.2.2-darwin-x86_64.tar.gz cd kibana-6.2.2-darwin-x86_64 # 直接啟動即可 bin/kibana

Kibana 默認鏈接了本機的 9200 端口,其綁定的端口為 5601,啟動成功後直接訪問 127.0.0.1:5601 端口即可,界面如下。

技術分享圖片技術分享圖片

註意:有時本地啟動kibana之後打開界面127.0.0.1:5601會出現這樣的情況。

技術分享圖片技術分享圖片

有可能是因為本地的瀏覽器不兼容問題之類的。可以試著打開遠程連接。用別的設備遠程訪問.

1.打開Kibana配置文件: vim /usr/local/kibana-6.3.2-linux-x86_64/config/kibana.yml

2.修改訪問參數:server.host修改為本機網卡的地址。

技術分享圖片技術分享圖片

3.重啟kibana服務。

4.訪問成功。

技術分享圖片技術分享圖片

開始建立索引模式。

註意:有的時候會出現索引模式不能建立的情況。(不能點下一步)

技術分享圖片技術分享圖片

一般為數據回傳異常。先檢查filebeat、logstash、elasticsearch、kibana服務啟動是不是都正常。

檢查filebeat的配置文件。/usr/local/filebeat/config/filebeat.yml.檢查配置。

我上次就是因為配置文件裏的output.logstash模塊的端口寫錯。

修改完之後重啟服務就可以了。

技術分享圖片技術分享圖片

技術分享圖片

這裏選定一個時間戳,使用默認的 timestamp 即可,設置完成後我們可以根據時間範圍篩選數據。

技術分享圖片技術分享圖片

設置完成後創建後顯示如下

技術分享圖片技術分享圖片

這時在點擊 Discover 就可以看到我們創建的索引了,此時輸入 UnicodeEncodeError 已經返回了匹配到的日誌信息。

技術分享圖片

技術分享圖片註意:如果你覺得英語看起來很不舒服,可以考慮漢化。不過提前說明一下,漢化過程是不可逆的。

# 下載並解壓 wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz tar -zxf kibana-6.3.0-linux-x86_64.tar.gz


漢化

github漢化項目:

https://github.com/anbai-inc/Kibana_Hanization

# 下載並解壓 wget https://github.com/anbai-inc/Kibana_Hanization/archive/master.zip unzip master.zip cd master # 漢化 python main.py Kibana目錄 # 啟動elasticsearch cd elasticsearch-6.3.0/bin elasticsearch -d # 啟動kibana cd kibana-6.3.0-linux-x86_64/bin kibana

瀏覽器訪問 localhost:5601

技術分享圖片技術分享圖片

註意:最後再說一句ELK平臺的啟動可以按照filebeat--> elasticsearch ---> logstash---> kibana這個順序啟動,不會那麽容易出問題。



快速搭建ELK,以及簡單故障處理