ELK分布式日志收集搭建和使用


大型系統分布式日志采集系統ELK
全框架 SpringBootSecurity
1、傳統系統日志收集的問題
2、Logstash操作工作原理
3、分布式日志收集ELK原理
4、Elasticsearch+Logstash+Kiabana整合
5、Logstash將數據推送到ES
6、Kibana圖形界面展示ES日志信息

搭建環境虛擬機要求:2G以上內存

 

1.傳統問題:

傳統系統日志收集的問題

在傳統項目中,如果在生產環境中,有多台不同的服務器集群,如果生產環境需要通過日志定位項目的Bug的話,需要在每台節點上使用傳統的命令方式查詢,這樣效率非常底下。
通常,日志被分散在儲存不同的設備上。如果你管理數十上百台服務器,你還在使用依次登錄每台機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務器上的日志收集匯總。
集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
命令方式:
tail -n 300 myes.log | grep 'node-1'    ##搜索某個日志在哪里
tail -100f myes.log
傳統:

 

  分布式日志收集問題      解決傳統 日志分布在每台節點的問題 分散的。在搜索日志時候非常繁瑣  (可以存放在redis哦,可以定時,但是不要存放在數據庫中,不需要持久啊)

  

ELK分布式日志收集系統介紹

ElasticSearch是一個基於Lucene的開源分布式搜索服務器。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是第二流行的企業搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
Logstash是一個完全開源的工具,它可以對你的日志進行收集、過濾、分析,支持大量的數據獲取方法,並將其存儲供以后使用(如搜索)。說到搜索,logstash帶有一個web界面,搜索和展示所有日志。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一並發往elasticsearch上去。 
Kibana是一個基於瀏覽器頁面的Elasticsearch前端展示工具,也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。

  

 ELK分布式日志收集系統原理:

     在每個服務器節點安裝Logstash插件,把節點的本底文件日志讀取到Logstash中去,以每天的方式創建索引。然后再把本底的日志文件進行格式化轉成json格式,寫入到ES服務器集群中去。

     

小結:

ELK分布式日志收集原理
1、每台服務器集群節點安裝Logstash日志收集系統插件
2、每台服務器節點將日志輸入到Logstash中
3、Logstash將該日志格式化為json格式,根據每天創建不同的索引,輸出到ElasticSearch中
4、瀏覽器使用安裝Kibana查詢日志信息

  

關於Logstash介紹
Logstash是一個完全開源的工具,它可以對你的日志進行收集、過濾、分析,支持大量的數據獲取方法,並將其存儲供以后使用(如搜索)。說到搜索,logstash帶有一個web界面,搜索和展示所有日志。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一並發往elasticsearch上去。
核心流程:Logstash事件處理有三個階段:inputs → filters → outputs。是一個接收,處理,轉發日志的工具。支持系統日志,webserver日志,錯誤日志,應用日志,總之包括所有可以拋出來的日志類型。

Logstash環境安裝
1、上傳logstash安裝包(資料)
2、解壓tar –zxvf logstash-6.4.3.tar.gz
3、在config目錄下放入mayikt01.conf 讀入並且讀出日志信息

 

 

 ELK搭建:

1、安裝ElasticSearch 
2、安裝Logstash
3、 安裝Kibana 

(1,3:https://www.cnblogs.com/toov5/p/10295790.html)

實際項目中 ELK+Kafka 

 

 上傳安裝包解壓,本文使用的日志文件是 es自己產生的日志文件:

/home/elasticsearch/elasticsearch-6.4.3/logs 下面的日志

 

 查詢日志的Linux指令:   tail -n 300 myes.log | grep 'node-1'    ## 查詢關鍵字‘node-1’的內容 前300行

  

 實時搜索:tail -100f myes.log 

 

 

 在:/home/elasticsearch/logstash-6.4.3/config 目錄下創建Logstash的配置文件:

 內容如下:

input {
    # 從文件讀取日志信息 輸送到控制台  path要對應讀取的目錄
    file {
        path => "/home/elasticsearch/elasticsearch-6.4.3/logs/myes.log"
 codec => "json" ## 以JSON格式讀取日志 type => "elasticsearch" start_position => "beginning" } } # filter { # # } output { # 標准輸出 # stdout {} # 輸出進行格式化,采用Ruby庫來解析日志 stdout { codec => rubydebug } }

 

如圖: (當然可以配置多個 輸入 多個輸出)

 

保存

切換到bin目錄下啟動(指定啟動文件):  ./logstash -f ../config/toov501.conf 

啟動相當慢 小伙伴們要耐心等待哦

 當前配置的形式是打印到窗口的方式: 啟動后打印的日志非常漂亮~ JSON格式

  

 

 配置下日志的輸出到ES中:

 修改下 outoput 就OK了

 

output {
    # 標准輸出 
    # stdout {}
    # 輸出進行格式化,采用Ruby庫來解析日志   
     stdout { codec => rubydebug }
     elasticsearch {
        hosts => ["192.168.91.7:9200"]
        index => "es-%{+YYYY.MM.dd}"
    }     
}

idex:索引! 根據每一天創建索引!!!!   默認doc!

 

注意如果你啟動不成功,報錯:

No sincedb_path set, generating one based on the "path" setting {:sincedb_pa

 

解決方案:

https://stackoverflow.com/questions/32001752/logstash-fails-to-read-file-no-sincedb-path-set-generating-one-based-on-the-fi

Maybe you can do as follows:

change your input config like this:

input {
  file {
    path =>[ "/usr/share/logstash-1.5.3/test.txt"]
    start_position => beginning
    sincedb_path => "/opt/logstash/sincedb-access"
  }
}

then touch a file for sincedb_path:

touch /opt/logstash/sincedb-access
chown logstash:logstash /opt/logstash/sincedb-access

the most important thing is:

ln -s /lib/x86_64-linux-gnu/libcrypt.so.1 /usr/lib/x86_64-linux-gnu/libcrypt.so

You may lost libcrypt.so file.

 

 

 

我們使用 kibana查詢

http://192.168.91.7:5601/app/kibana#/dev_tools/console?_g=()

 

GET /es-2019.01.22

  

 

 查看:

可以進行各種查詢:

 

 ES查詢效率快 倒排索引!

 

可以用圖形化界面,大家可以自己玩玩

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM