快速搭建ELK,以及简单故障处理
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這個順序啟動,不會那么容易出問題。
轉載于:https://blog.51cto.com/12283048/2159115
總結
以上是生活随笔為你收集整理的快速搭建ELK,以及简单故障处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS7Jenkins安装
- 下一篇: WPF - Group分组对ListBo