分布式日志收集ELK
一、傳統系統的日志收集的問題
在傳統項目中,如果在生產環境中,有多臺不同的服務器集群,如果生產環境需要通過日志定位項目的Bug的話,需要在每臺節點上使用傳統的命令方式查詢,這樣效率非常低下。
通常,日志被分散在儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務器上的日志收集匯總。
集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對于要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
命令方式:
tail -n 300 myes.log | grep ‘node-1’ ##搜索某個日志在哪里
tail -100f myes.log
二、ELK介紹
ElK,(ElasticSearch+Logstash+Kibana)
- ElasticSearch是一個基于Lucene的開源分布式搜索服務器。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發的,并作為Apache許可條款下的開放源碼發布,是第二流行的企業搜索引擎。設計用于云計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
- Logstash是一個完全開源的工具,它可以對你的日志進行收集、過濾、分析,支持大量的數據獲取方法,并將其存儲供以后使用(如搜索)。說到搜索,logstash帶有一個web界面,搜索和展示所有日志。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一并發往elasticsearch上去。
核心流程:Logstash事件處理有三個階段:inputs → filters → outputs。是一個接收,處理,轉發日志的工具。支持系統日志,webserver日志,錯誤日志,應用日志,總之包括所有可以拋出來的日志類型。 - Kibana是一個基于瀏覽器頁面的Elasticsearch前端展示工具,也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
三、Logstash在Linux上的安裝
Elasticsearch和Kibana前面文章都有介紹,這里只介紹Logstash的安裝。
1、首先將jar包上傳到/usr/local目錄下
2、解壓tar –zxvf logstash-6.4.3.tar.gz
3、在config目錄下放入xwhy01.conf 讀入并且讀出日志信息
xwhy01.conf
input {# 從文件讀取日志信息 輸送到控制臺file {path => "/usr/local/elasticsearch-6.4.3/logs/myes.log"codec => "json" ## 以JSON格式讀取日志type => "elasticsearch"start_position => "beginning"} }# filter { # # }output {# 標準輸出 # stdout {}# 輸出進行格式化,采用Ruby庫來解析日志 stdout { codec => rubydebug } }4、啟動,進入logstash下的bin目錄,執行以下命令
[root@localhost bin]# ./logstash -f ../config/xwhy01.conf如下圖可以看到logstash會將myes.log的日志文件以json格式打印出來,而且我們在日志文件輸入信息后logstash會實時的將信息輸出
使用logstash連接Elasticsearch然后用過kibana可視化界面將日志輸出
在config目錄下放入xwhy02.conf 讀入并且讀出日志信息
xwhy02.conf
啟動es和kibana,然后啟動logstash
[root@localhost bin]# ./logstash -f ../config/xwhy02.conf訪問:http://192.168.112.141:5601,可以看到實時同步過來的日志信息:
可以看到許多字段類型都是text,是為了做分詞,提高查詢效率。
還可以通過界面來查看:
elastcisearch+logstash+kibana后臺啟動命令
a.elasticsearch的bin目錄下:[es@localhost bin]$ ./elasticsearch -d
b.kibana的bin目錄下:[root@localhost bin]# nohup ./kibana &
需要注意的是,我們需要在nohup命令執行后,按任意鍵回到shell提示符后,再退出終端
c.logstash的bin目錄下: [root@localhost bin]# nohup ./logstash -f ../config/mayikt02.conf &
總結
以上是生活随笔為你收集整理的分布式日志收集ELK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware虚拟机扩容磁盘,有很详细图文
- 下一篇: 学生成绩管理系统的设计-实践周作业