ELK分布式日志收集搭建和使用
大型系統(tǒng)分布式日志采集系統(tǒng)ELK
全框架 SpringBootSecurity
1、傳統(tǒng)系統(tǒng)日志收集的問題
2、Logstash操作工作原理
3、分布式日志收集ELK原理
4、Elasticsearch+Logstash+Kiabana整合
5、Logstash將數(shù)據(jù)推送到ES
6、Kibana圖形界面展示ES日志信息
搭建環(huán)境虛擬機(jī)要求:2G以上內(nèi)存
?
1.傳統(tǒng)問題:
傳統(tǒng)系統(tǒng)日志收集的問題
在傳統(tǒng)項(xiàng)目中,如果在生產(chǎn)環(huán)境中,有多臺(tái)不同的服務(wù)器集群,如果生產(chǎn)環(huán)境需要通過日志定位項(xiàng)目的Bug的話,需要在每臺(tái)節(jié)點(diǎn)上使用傳統(tǒng)的命令方式查詢,這樣效率非常底下。
通常,日志被分散在儲(chǔ)存不同的設(shè)備上。如果你管理數(shù)十上百臺(tái)服務(wù)器,你還在使用依次登錄每臺(tái)機(jī)器的傳統(tǒng)方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當(dāng)務(wù)之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務(wù)器上的日志收集匯總。
集中化管理日志后,日志的統(tǒng)計(jì)和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實(shí)現(xiàn)檢索和統(tǒng)計(jì),但是對(duì)于要求更高的查詢、排序和統(tǒng)計(jì)等要求和龐大的機(jī)器數(shù)量依然使用這樣的方法難免有點(diǎn)力不從心。
命令方式:
tail -n 300 myes.log | grep 'node-1'? ? ##搜索某個(gè)日志在哪里
tail -100f myes.log
傳統(tǒng):
?
? 分布式日志收集問題? ? ? 解決傳統(tǒng) 日志分布在每臺(tái)節(jié)點(diǎn)的問題 分散的。在搜索日志時(shí)候非常繁瑣? (可以存放在redis哦,可以定時(shí),但是不要存放在數(shù)據(jù)庫中,不需要持久啊)
??
ELK分布式日志收集系統(tǒng)介紹
ElasticSearch是一個(gè)基于Lucene的開源分布式搜索服務(wù)器。它的特點(diǎn)有:分布式,零配置,自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制,restful風(fēng)格接口,多數(shù)據(jù)源,自動(dòng)搜索負(fù)載等。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是第二流行的企業(yè)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。
Logstash是一個(gè)完全開源的工具,它可以對(duì)你的日志進(jìn)行收集、過濾、分析,支持大量的數(shù)據(jù)獲取方法,并將其存儲(chǔ)供以后使用(如搜索)。說到搜索,logstash帶有一個(gè)web界面,搜索和展示所有日志。一般工作方式為c/s架構(gòu),client端安裝在需要收集日志的主機(jī)上,server端負(fù)責(zé)將收到的各節(jié)點(diǎn)日志進(jìn)行過濾、修改等操作在一并發(fā)往elasticsearch上去。?
Kibana是一個(gè)基于瀏覽器頁面的Elasticsearch前端展示工具,也是一個(gè)開源和免費(fèi)的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。
??
?ELK分布式日志收集系統(tǒng)原理:
? ? ?在每個(gè)服務(wù)器節(jié)點(diǎn)安裝Logstash插件,把節(jié)點(diǎn)的本底文件日志讀取到Logstash中去,以每天的方式創(chuàng)建索引。然后再把本底的日志文件進(jìn)行格式化轉(zhuǎn)成json格式,寫入到ES服務(wù)器集群中去。
? ? ?
小結(jié):
ELK分布式日志收集原理
1、每臺(tái)服務(wù)器集群節(jié)點(diǎn)安裝Logstash日志收集系統(tǒng)插件
2、每臺(tái)服務(wù)器節(jié)點(diǎn)將日志輸入到Logstash中
3、Logstash將該日志格式化為json格式,根據(jù)每天創(chuàng)建不同的索引,輸出到ElasticSearch中
4、瀏覽器使用安裝Kibana查詢?nèi)罩拘畔?br />
??
關(guān)于Logstash介紹
Logstash是一個(gè)完全開源的工具,它可以對(duì)你的日志進(jìn)行收集、過濾、分析,支持大量的數(shù)據(jù)獲取方法,并將其存儲(chǔ)供以后使用(如搜索)。說到搜索,logstash帶有一個(gè)web界面,搜索和展示所有日志。一般工作方式為c/s架構(gòu),client端安裝在需要收集日志的主機(jī)上,server端負(fù)責(zé)將收到的各節(jié)點(diǎn)日志進(jìn)行過濾、修改等操作在一并發(fā)往elasticsearch上去。
核心流程:Logstash事件處理有三個(gè)階段:inputs → filters → outputs。是一個(gè)接收,處理,轉(zhuǎn)發(fā)日志的工具。支持系統(tǒng)日志,webserver日志,錯(cuò)誤日志,應(yīng)用日志,總之包括所有可以拋出來的日志類型。
Logstash環(huán)境安裝
1、上傳logstash安裝包(資料)
2、解壓tar –zxvf logstash-6.4.3.tar.gz
3、在config目錄下放入mayikt01.conf 讀入并且讀出日志信息
?
?
?ELK搭建:
1、安裝ElasticSearch?
2、安裝Logstash
3、 安裝Kibana?
(1,2:https://www.cnblogs.com/toov5/p/10295790.html)
實(shí)際項(xiàng)目中 ELK+Kafka?
?
?上傳安裝包解壓,本文使用的日志文件是 es自己產(chǎn)生的日志文件:
/home/elasticsearch/elasticsearch-6.4.3/logs 下面的日志
?
?查詢?nèi)罩镜腖inux指令:? ?tail -n 300 myes.log | grep 'node-1'? ? ## 查詢關(guān)鍵字‘node-1’的內(nèi)容 前300行
??
?實(shí)時(shí)搜索:tail -100f myes.log?
?
?
?在:/home/elasticsearch/logstash-6.4.3/config 目錄下創(chuàng)建Logstash的配置文件:
?內(nèi)容如下:
input {# 從文件讀取日志信息 輸送到控制臺(tái) path要對(duì)應(yīng)讀取的目錄file {path => "/home/elasticsearch/elasticsearch-6.4.3/logs/myes.log" codec => "json" ## 以JSON格式讀取日志type => "elasticsearch"start_position => "beginning"}}# filter { # # }output {# 標(biāo)準(zhǔn)輸出 # stdout {}# 輸出進(jìn)行格式化,采用Ruby庫來解析日志 stdout { codec => rubydebug } }?
如圖: (當(dāng)然可以配置多個(gè) 輸入 多個(gè)輸出)
?
保存
切換到bin目錄下啟動(dòng)(指定啟動(dòng)文件):??./logstash -f ../config/toov501.conf?
啟動(dòng)相當(dāng)慢 小伙伴們要耐心等待哦
?當(dāng)前配置的形式是打印到窗口的方式: 啟動(dòng)后打印的日志非常漂亮~ JSON格式
??
?
?配置下日志的輸出到ES中:
?修改下 outoput 就OK了
?
output {# 標(biāo)準(zhǔn)輸出 # stdout {}# 輸出進(jìn)行格式化,采用Ruby庫來解析日志 stdout { codec => rubydebug }elasticsearch {hosts => ["192.168.91.7:9200"]index => "es-%{+YYYY.MM.dd}"} }idex:索引! 根據(jù)每一天創(chuàng)建索引!!!!? ?默認(rèn)doc!
?
注意如果你啟動(dòng)不成功,報(bào)錯(cuò):
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 => beginningsincedb_path => "/opt/logstash/sincedb-access"} }then touch a file for sincedb_path:
touch /opt/logstash/sincedb-access chown logstash:logstash /opt/logstash/sincedb-accessthe most important thing is:
ln -s /lib/x86_64-linux-gnu/libcrypt.so.1 /usr/lib/x86_64-linux-gnu/libcrypt.soYou may lost?libcrypt.so?file.
?
?
?
我們使用 kibana查詢
http://192.168.91.7:5601/app/kibana#/dev_tools/console?_g=()
?
GET /es-2019.01.22
??
?
?查看:
可以進(jìn)行各種查詢:
?
?ES查詢效率快 倒排索引!
?
可以用圖形化界面,大家可以自己玩玩
?
轉(zhuǎn)載于:https://www.cnblogs.com/toov5/p/10301727.html
總結(jié)
以上是生活随笔為你收集整理的ELK分布式日志收集搭建和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础 course6(函数)
- 下一篇: 分享阿里最全面试88题:阿里巴巴核心技术