ELK日志分析平台(二)----logstash数据采集
生活随笔
收集整理的這篇文章主要介紹了
ELK日志分析平台(二)----logstash数据采集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
logstash數據采集
- 1. logstash
- 1.1logstash介紹
- 1.2logstash的力量
- 2. Logstash的安裝與配置(一臺新的虛擬機)
- 2.1軟件的下載和安裝
- 2.1.1軟件的下載
- 2.2.1軟件的安裝
- 2.3 環境變量的配置
- 2.4 標準輸入到標準輸出(命令)
- 3. elasticsearch輸出插件
- 3.1 標準輸入與標準輸出(文件)
- 3.2 標準輸入到文件
- 3.3 查看輸入到文件的內容
- 3.3.1 查看內容
- 3.3.2 補充
- 3.4 將文件內容輸出到es主機
- 3.5 Syslog輸入插件
- 3.6 多行過濾插件codec
- 3.7 運行多次不顯示的錯誤解決方法
- 3.8 grok過濾插件
1. logstash
1.1logstash介紹
- Logstash是一個開源的服務器端數據處理管道,能夠接收,處理,轉發日志。支持系統日志,webserver日志,錯誤日志,應用日志,總之包括所有可以拋出來的日志類型。logstash擁有200多個插件,能夠同時從多個來源采集數據,轉換數據,然后將數據發送到您最喜歡的 “存儲庫” 中。(大多都是Elasticsearch。) Logstash管道有兩個必需的元素,輸入和輸出,以及一個可選元素過濾器。
- 雖然Logstash最初推動了日志收集方面的創新,但是它的功能遠遠超出了這個用例,任何類型的事件都可以通過大量的輸入、過濾器和輸出插件來豐富和轉換,使用許多原生編解碼可以進一步簡化攝取過程。Logstash通過利用大量和多種數據來提高你的洞察力。
- 如上圖,Logstash的數據處理過程主要包括:Inputs,Filters,Outputs三部分,另外在Inputs和Outputs中可以使用Codecs對數據格式進行處理。這四個部分均以插件形式存在,用戶通過定義pipeline配置文件,設置需要使用的input,filter,output,codec插件,以實現特定的數據采集,數據處理,數據輸出等功能。
- 輸入:采集各種樣式、大小和來源的數據
- Logstash 支持各種輸入選擇 ,同時從眾多常用來源捕捉事件。
- 能夠以連續的流式傳輸方式,輕松地從您的日志、指標、Web 應用、數據存儲以及各種 AWS 服務采集數據。
- 過濾器:實時解析和轉換數據
- 數據從源傳輸到存儲庫的過程中,Logstash過濾器能夠解析各個事件,識別已命名的字段以構建結構,并將它們轉換成通用格式,以便更輕松、更快速地分析和實現商業價值。
- 利用 Grok 從非結構化數據中派生出結構
- 從 IP 地址破譯出地理坐標
- 將 PII 數據匿名化,完全排除敏感字段
- 簡化整體處理,不受數據源、格式或架構的影響
- 數據從源傳輸到存儲庫的過程中,Logstash過濾器能夠解析各個事件,識別已命名的字段以構建結構,并將它們轉換成通用格式,以便更輕松、更快速地分析和實現商業價值。
- 輸出:選擇您的存儲庫,導出您的數據
- 盡管 Elasticsearch 是我們的首選輸出方向,能夠為我們的搜索和分析帶來無限可能,但它并非唯一選擇。
- Logstash 提供眾多輸出選擇,您可以將數據發送到您要指定的地方,并且能夠靈活地解鎖眾多下游用例。
- 依賴條件:JAVA
Logstash運行僅僅依賴java運行環境(jre)。各位可以在命令行下運行java -version命令
為了確保成功運行Logstash建議大家使用較近期的jre版本。
1.2logstash的力量
- 用于Elasticsearch和更多的鑷取工作
- 具有增強Elasticsearch和Kibana協同的水平可伸縮數據處理管道
- 可插入管道架構
- 混合、匹配和編排不同的輸入、過濾器和輸出,使之在管道中和諧運行
- 社區可擴展和開發者友好的插件生態系統
- 超過200個插件,加上創建和貢獻你自己的靈活性
2. Logstash的安裝與配置(一臺新的虛擬機)
2.1軟件的下載和安裝
2.1.1軟件的下載
官方網站
[root@server16 ~]# ll ##官網下載 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 環境變量的配置
[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 標準輸入到標準輸出(命令)
[root@server16 ~]# logstash -e 'input { stdin { }} output { stdout {} }' ##標準輸入輸出,鍵盤輸入,屏幕輸出。ctrl+c退出3. elasticsearch輸出插件
3.1 標準輸入與標準輸出(文件)
[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文件都可以執行 [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 ##執行文件
3.2 標準輸入到文件
[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 運行 [root@server16 conf.d]# cat /tmp/testfile ##查看文件內容 custom format: hello
3.3 查看輸入到文件的內容
3.3.1 查看內容
## 文件需要確保權限是可以讀的,例如: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從末尾顯示,默認是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 補充
- sincedb文件內容解釋# cat .sincedb_*sincedb文件一共6個字段1.inode編號2.文件系統的主要設備號3.文件系統的次要設備號4.文件中的當前字節偏移量5.最后一個活動時間戳(浮點數)6.與此記錄匹配的最后一個已知路徑 ##logstash如何區分設備、文件名、文件的不同版本,logstash會把進度保存到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 將文件內容輸出到es主機
查看官網插件鏈接
[root@server2 ~]# systemctl start elasticsearch.service ##首先將各個主機的es服務打開 [root@server2 ~]# cd elasticsearch-head-master/ [root@server2 elasticsearch-head-master]# cnpm run start & ##啟動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 ##運行去網頁查看采集到的日志
3.5 Syslog輸入插件
- logstash可以偽裝成日志服務器,直接接受遠程日志。 [root@server4 ~]# vim /etc/rsyslog.conf [root@server4 ~]# cat /etc/rsyslog.conf | grep @@172.25.13.6:514 ##將系統日志輸出到172.25.13.6的主機 *.* @@172.25.13.6:514 [root@server5 ~]# vim /etc/rsyslog.conf [root@server5 ~]# cat /etc/rsyslog.conf | grep @@172.25.13.6:514 ##將系統日志輸出到172.25.13.6的主機 *.* @@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 ##應用 [root@server4 ~]# logger hello ##在server4和server5運行日志數據,查看web結果
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" ##讀取文件,文件權限必須有讀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 ##應用
3.7 運行多次不顯示的錯誤解決方法
[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 ##真機壓測獲取訪問數據[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 ##運行,報錯可以查看錯誤信息
總結
以上是生活随笔為你收集整理的ELK日志分析平台(二)----logstash数据采集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++QT5学习视频笔记
- 下一篇: Tesla M40 下Ubuntu an