ELK日志分析平台(二)----logstash数据采集
生活随笔
收集整理的這篇文章主要介紹了
ELK日志分析平台(二)----logstash数据采集
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
logstash數(shù)據(jù)采集
- 1. logstash
- 1.1logstash介紹
- 1.2logstash的力量
- 2. Logstash的安裝與配置(一臺(tái)新的虛擬機(jī))
- 2.1軟件的下載和安裝
- 2.1.1軟件的下載
- 2.2.1軟件的安裝
- 2.3 環(huán)境變量的配置
- 2.4 標(biāo)準(zhǔn)輸入到標(biāo)準(zhǔn)輸出(命令)
- 3. elasticsearch輸出插件
- 3.1 標(biāo)準(zhǔn)輸入與標(biāo)準(zhǔn)輸出(文件)
- 3.2 標(biāo)準(zhǔn)輸入到文件
- 3.3 查看輸入到文件的內(nèi)容
- 3.3.1 查看內(nèi)容
- 3.3.2 補(bǔ)充
- 3.4 將文件內(nèi)容輸出到es主機(jī)
- 3.5 Syslog輸入插件
- 3.6 多行過濾插件codec
- 3.7 運(yùn)行多次不顯示的錯(cuò)誤解決方法
- 3.8 grok過濾插件
1. logstash
1.1logstash介紹
- Logstash是一個(gè)開源的服務(wù)器端數(shù)據(jù)處理管道,能夠接收,處理,轉(zhuǎn)發(fā)日志。支持系統(tǒng)日志,webserver日志,錯(cuò)誤日志,應(yīng)用日志,總之包括所有可以拋出來的日志類型。logstash擁有200多個(gè)插件,能夠同時(shí)從多個(gè)來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到您最喜歡的 “存儲(chǔ)庫” 中。(大多都是Elasticsearch。) Logstash管道有兩個(gè)必需的元素,輸入和輸出,以及一個(gè)可選元素過濾器。
- 雖然Logstash最初推動(dòng)了日志收集方面的創(chuàng)新,但是它的功能遠(yuǎn)遠(yuǎn)超出了這個(gè)用例,任何類型的事件都可以通過大量的輸入、過濾器和輸出插件來豐富和轉(zhuǎn)換,使用許多原生編解碼可以進(jìn)一步簡化攝取過程。Logstash通過利用大量和多種數(shù)據(jù)來提高你的洞察力。
- 如上圖,Logstash的數(shù)據(jù)處理過程主要包括:Inputs,Filters,Outputs三部分,另外在Inputs和Outputs中可以使用Codecs對數(shù)據(jù)格式進(jìn)行處理。這四個(gè)部分均以插件形式存在,用戶通過定義pipeline配置文件,設(shè)置需要使用的input,filter,output,codec插件,以實(shí)現(xiàn)特定的數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)輸出等功能。
- 輸入:采集各種樣式、大小和來源的數(shù)據(jù)
- Logstash 支持各種輸入選擇 ,同時(shí)從眾多常用來源捕捉事件。
- 能夠以連續(xù)的流式傳輸方式,輕松地從您的日志、指標(biāo)、Web 應(yīng)用、數(shù)據(jù)存儲(chǔ)以及各種 AWS 服務(wù)采集數(shù)據(jù)。
- 過濾器:實(shí)時(shí)解析和轉(zhuǎn)換數(shù)據(jù)
- 數(shù)據(jù)從源傳輸?shù)酱鎯?chǔ)庫的過程中,Logstash過濾器能夠解析各個(gè)事件,識(shí)別已命名的字段以構(gòu)建結(jié)構(gòu),并將它們轉(zhuǎn)換成通用格式,以便更輕松、更快速地分析和實(shí)現(xiàn)商業(yè)價(jià)值。
- 利用 Grok 從非結(jié)構(gòu)化數(shù)據(jù)中派生出結(jié)構(gòu)
- 從 IP 地址破譯出地理坐標(biāo)
- 將 PII 數(shù)據(jù)匿名化,完全排除敏感字段
- 簡化整體處理,不受數(shù)據(jù)源、格式或架構(gòu)的影響
- 數(shù)據(jù)從源傳輸?shù)酱鎯?chǔ)庫的過程中,Logstash過濾器能夠解析各個(gè)事件,識(shí)別已命名的字段以構(gòu)建結(jié)構(gòu),并將它們轉(zhuǎn)換成通用格式,以便更輕松、更快速地分析和實(shí)現(xiàn)商業(yè)價(jià)值。
- 輸出:選擇您的存儲(chǔ)庫,導(dǎo)出您的數(shù)據(jù)
- 盡管 Elasticsearch 是我們的首選輸出方向,能夠?yàn)槲覀兊乃阉骱头治鰩頍o限可能,但它并非唯一選擇。
- Logstash 提供眾多輸出選擇,您可以將數(shù)據(jù)發(fā)送到您要指定的地方,并且能夠靈活地解鎖眾多下游用例。
- 依賴條件:JAVA
Logstash運(yùn)行僅僅依賴java運(yùn)行環(huán)境(jre)。各位可以在命令行下運(yùn)行java -version命令
為了確保成功運(yùn)行Logstash建議大家使用較近期的jre版本。
1.2logstash的力量
- 用于Elasticsearch和更多的鑷取工作
- 具有增強(qiáng)Elasticsearch和Kibana協(xié)同的水平可伸縮數(shù)據(jù)處理管道
- 可插入管道架構(gòu)
- 混合、匹配和編排不同的輸入、過濾器和輸出,使之在管道中和諧運(yùn)行
- 社區(qū)可擴(kuò)展和開發(fā)者友好的插件生態(tài)系統(tǒng)
- 超過200個(gè)插件,加上創(chuàng)建和貢獻(xiàn)你自己的靈活性
2. Logstash的安裝與配置(一臺(tái)新的虛擬機(jī))
2.1軟件的下載和安裝
2.1.1軟件的下載
官方網(wǎng)站
[root@server16 ~]# ll ##官網(wǎng)下載 total 334812 -rw-r--r-- 1 root root 170023183 Sep 5 2018 jdk-8u181-linux-x64.rpm -rw-r--r-- 1 root root 172821011 Mar 12 2020 logstash-7.6.1.rpm2.2.1軟件的安裝
[root@server16 ~]# rpm -ivh jdk-8u181-linux-x64.rpm [root@server16 ~]# rpm -ivh logstash-7.6.1.rpm2.3 環(huán)境變量的配置
[root@server16 opt]# cd /usr/share/logstash/ [root@server16 logstash]# ls bin Gemfile LICENSE.txt modules vendor CONTRIBUTORS Gemfile.lock logstash-core NOTICE.TXT x-pack data lib logstash-core-plugin-api tools [root@server16 logstash]# cd bin/ [root@server16 bin]# ls benchmark.sh logstash logstash.lib.sh pqrepair cpdump logstash.bat logstash-plugin ruby dependencies-report logstash-keystore logstash-plugin.bat setup.bat ingest-convert.sh logstash-keystore.bat pqcheck system-install [root@server16 bin]# pwd /usr/share/logstash/bin [root@server16 bin]# cd[root@server16 ~]# vim .bash_profile [root@server16 ~]# cat .bash_profile | grep bin PATH=$PATH:$HOME/bin:/usr/share/logstash/bin [root@server16 ~]# source .bash_profile [root@server16 ~]# which logstash /usr/share/logstash/bin/logstash2.4 標(biāo)準(zhǔn)輸入到標(biāo)準(zhǔn)輸出(命令)
[root@server16 ~]# logstash -e 'input { stdin { }} output { stdout {} }' ##標(biāo)準(zhǔn)輸入輸出,鍵盤輸入,屏幕輸出。ctrl+c退出3. elasticsearch輸出插件
3.1 標(biāo)準(zhǔn)輸入與標(biāo)準(zhǔn)輸出(文件)
[root@server16 ~]# cd /etc/logstash/ [root@server16 logstash]# ls conf.d log4j2.properties logstash.yml startup.options jvm.options logstash-sample.conf pipelines.yml [root@server16 logstash]# cd conf.d/ ##目錄下任意的conf文件都可以執(zhí)行 [root@server16 conf.d]# ls [root@server16 conf.d]# vim test.conf [root@server16 conf.d]# cat test.conf input {stdin {} }output {stdout {} } [root@server16 conf.d]# logstash -f /etc/logstash/conf.d/test.conf ##執(zhí)行文件
3.2 標(biāo)準(zhǔn)輸入到文件
[root@server16 conf.d]# vim test.conf [root@server16 conf.d]# cat test.conf ##輸入到文件 input {stdin { } } output {stdout {}file {path => "/tmp/testfile"codec => line { format => "custom format: %{message}"}} } [root@server16 conf.d]# logstash -f /etc/logstash/conf.d/test.conf 運(yùn)行 [root@server16 conf.d]# cat /tmp/testfile ##查看文件內(nèi)容 custom format: hello
3.3 查看輸入到文件的內(nèi)容
3.3.1 查看內(nèi)容
## 文件需要確保權(quán)限是可以讀的,例如:chmod 644 /var/log/message [root@server16 conf.d]# vim test.conf [root@server16 conf.d]# cat test.conf input {file {path => "/tmp/testfile"start_position => "beginning" ##從頭開始顯示,end從末尾顯示,默認(rèn)是end} } output {stdout {}#file {# path => "/tmp/testfile"# codec => line { format => "custom format: %{message}"}#} } [root@server16 conf.d]# logstash -f /etc/logstash/conf.d/test.conf
3.3.2 補(bǔ)充
- sincedb文件內(nèi)容解釋# cat .sincedb_*sincedb文件一共6個(gè)字段1.inode編號(hào)2.文件系統(tǒng)的主要設(shè)備號(hào)3.文件系統(tǒng)的次要設(shè)備號(hào)4.文件中的當(dāng)前字節(jié)偏移量5.最后一個(gè)活動(dòng)時(shí)間戳(浮點(diǎn)數(shù))6.與此記錄匹配的最后一個(gè)已知路徑 ##logstash如何區(qū)分設(shè)備、文件名、文件的不同版本,logstash會(huì)把進(jìn)度保存到sincedb文件中 [root@server16 conf.d]# cd /usr/share/logstash/ [root@server16 logstash]# ls bin Gemfile LICENSE.txt modules vendor CONTRIBUTORS Gemfile.lock logstash-core NOTICE.TXT x-pack data lib logstash-core-plugin-api tools [root@server16 logstash]# cd data/plugins/inputs/file/ [root@server16 file]# ls [root@server16 file]# l. . .. .sincedb_7fccf970aa3e421aa73e89ca5c260abf [root@server16 file]# cat .sincedb_* 17747495 0 64768 21 1615281055.0049129 /tmp/testfile ##修改過的文件3.4 將文件內(nèi)容輸出到es主機(jī)
查看官網(wǎng)插件鏈接
[root@server2 ~]# systemctl start elasticsearch.service ##首先將各個(gè)主機(jī)的es服務(wù)打開 [root@server2 ~]# cd elasticsearch-head-master/ [root@server2 elasticsearch-head-master]# cnpm run start & ##啟動(dòng)web界面[root@server6 ~]# cd /etc/logstash/ [root@server6 logstash]# cd conf.d/ [root@server6 conf.d]# ls test.conf [root@server6 conf.d]# vim test.conf [root@server6 conf.d]# cat test.conf input {file {path => "/var/log/messages"start_position => "beginning"} } output {stdout {}#file {# path => "/tmp/testfile"# codec => line { format => "custom format: %{message}"}#}elasticsearch {hosts => ["172.25.13.2:9200"]index => "syslog-%{+yyyy.MM.dd}"} } [root@server6 conf.d]# pwd /etc/logstash/conf.d [root@server6 conf.d]# logstash -f /etc/logstash/conf.d/test.conf ##運(yùn)行去網(wǎng)頁查看采集到的日志
3.5 Syslog輸入插件
- logstash可以偽裝成日志服務(wù)器,直接接受遠(yuǎn)程日志。 [root@server4 ~]# vim /etc/rsyslog.conf [root@server4 ~]# cat /etc/rsyslog.conf | grep @@172.25.13.6:514 ##將系統(tǒng)日志輸出到172.25.13.6的主機(jī) *.* @@172.25.13.6:514 [root@server5 ~]# vim /etc/rsyslog.conf [root@server5 ~]# cat /etc/rsyslog.conf | grep @@172.25.13.6:514 ##將系統(tǒng)日志輸出到172.25.13.6的主機(jī) *.* @@172.25.13.6:514 [root@server4 ~]# systemctl restart rsyslog.service ##重啟 [root@server5 ~]# systemctl restart rsyslog.service ##重啟[root@server6 conf.d]# cat syslog.conf input {syslog {} } output {stdout {}elasticsearch {hosts => ["172.25.13.2:9200"]index => "message-%{+yyyy.MM.dd}"}}[root@server6 conf.d]# logstash -f /etc/logstash/conf.d/syslog.conf ##應(yīng)用 [root@server4 ~]# logger hello ##在server4和server5運(yùn)行日志數(shù)據(jù),查看web結(jié)果
3.6 多行過濾插件codec
- 多行過濾可以把多行日志記錄合并為一行事件 [root@server4 elasticsearch]# pwd /var/log/elasticsearch [root@server4 elasticsearch]# scp my-es.log server6:/var/log/ ##拷貝一份es日志文件[root@server6 conf.d]# vim test.conf [root@server6 conf.d]# cat test.conf input {file {path => "/var/log/my-es.log" ##讀取文件,文件權(quán)限必須有讀start_position => "beginning"codec => multiline {pattern => "^\["negate => "true"what => "previous" }}} output {#stdout {}#file {# path => "/tmp/testfile"# codec => line { format => "custom format: %{message}"}#}elasticsearch {hosts => ["172.25.13.2:9200"]index => "message-%{+yyyy.MM.dd}"} } [root@server6 conf.d]# logstash -f /etc/logstash/conf.d/test.conf ##應(yīng)用
3.7 運(yùn)行多次不顯示的錯(cuò)誤解決方法
[root@server6 conf.d]# cd /usr/share/logstash/data/plugins/inputs/file/ [root@server6 file]# ls [root@server6 file]# ls -a . .. .sincedb_13f094911fdac7ab3fa6f4c93fee6639 .sincedb_452905a167cf4509fd08acb964fdb20c [root@server6 file]# cat .sincedb_* 51333969 0 64768 139573 1615344160.0945382 /var/log/my-es.log 51020273 0 64768 178545 1615339859.532701 /var/log/messages3.8 grok過濾插件
[root@server6 conf.d]# yum install httpd -y ##安裝httpd,過濾日志信息 [root@server6 conf.d]# systemctl start httpd.service [root@server6 conf.d]# cd /var/www/html/ [root@server6 html]# echo server6 > index.html [root@server6 conf.d]# vim /etc/httpd/conf/httpd.conf ##查看日志采集格式[root@westos ~]# ab -c1 -n 100 http://172.25.13.6/index.html ##真機(jī)壓測獲取訪問數(shù)據(jù)[root@server6 conf.d]# pwd /etc/logstash/conf.d [root@server6 conf.d]# cat appach.conf ##書寫配置文件 input {file {path => "/var/log/httpd/access_log"start_position => "beginning"}}filter {grok {match => { "message" => "%{HTTPD_COMBINEDLOG}" } ##過濾信息} }output {elasticsearch {hosts => ["172.25.13.2:9200"]index => "apache-%{+yyyy.MM.dd}"} } [root@server6 conf.d]# logstash -f /etc/logstash/conf.d/apache.conf ##運(yùn)行,報(bào)錯(cuò)可以查看錯(cuò)誤信息
總結(jié)
以上是生活随笔為你收集整理的ELK日志分析平台(二)----logstash数据采集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++QT5学习视频笔记
- 下一篇: 利用Prometheus(普罗米修斯)G