logstash数据采集
logstash簡介
? Logstash是一個開源的服務器端數據處理管道。
? logstash擁有200多個插件,能夠同時從多個來源采集數據,
轉換數據,然后將數據發送到您最喜歡的 “存儲庫” 中。(大多
都是 Elasticsearch。)
? Logstash管道有兩個必需的元素,輸入和輸出,以及一個可選元素過濾器。
輸入:采集各種樣式、大小和來源的數據
? Logstash 支持各種輸入選擇 ,同時從眾多常用來源捕捉事件。
? 能夠以連續的流式傳輸方式,輕松地從您的日志、指標、Web 應用、
數據存儲以及各種 AWS 服務采集數據。
過濾器:實時解析和轉換數據
? 數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,
識別已命名的字段以構建結構,并將它們轉換成通用格式,以便更輕松、
更快速地分析和實現商業價值。
- 利用 Grok 從非結構化數據中派生出結構
- 從 IP 地址破譯出地理坐標
- 將 PII 數據匿名化,完全排除敏感字段
- 簡化整體處理,不受數據源、格式或架構的影響
輸出:選擇您的存儲庫,導出您的數據
? 盡管 Elasticsearch 是我們的首選輸出方向,能夠為我們的搜索
和分析帶來無限可能,但它并非唯一選擇。
? Logstash 提供眾多輸出選擇,您可以將數據發送到您要指定的地
方,并且能夠靈活地解鎖眾多下游用例。
Logstash安裝與配置
軟件下載
https://elasticsearch.cn/download/
logstash安裝
[root@server5 ~]# rpm -ivh jdk-8u181-linux-x64.rpm [root@server5 ~]# rpm -ivh logstash-7.6.1.rpm加到環境變量
[root@server5 ~]# vim .bash_profile [root@server5 ~]# source .bash_profile標準輸入到標準輸出
[root@server5 ~]# logstash -e 'input { stdin { } } output { stdout {} }'file輸出插件
[root@server5 ~]# vim /etc/logstash/conf.d/file.conf input {stdin { } } output {file {path => "/tmp/logstash.txt" # 輸出的文件路徑codec => line { format => "custom format: %{message}"} # 定制數據格式}stdout { } } [root@server5 ~]# logstash -f /etc/logstash/conf.d/file.conf #指定配置文件運行在標準輸入中鍵入"hello world"后可以查看
標準文件輸入日志文件
[root@server5 ~]# vim /etc/logstash/conf.d/file.conf input {file {path => "/var/log/messages"start_position => "beginning"} } output {#file {# path => "/tmp/logstash.txt"# codec => line { format => "custom format: %{message}"} #}stdout { } } [root@server5 ~]# logstash -f /etc/logstash/conf.d/file.conf
logstash如何區分設備、文件名、文件的不同版本
logstash會把進度保存到sincedb文件中
# find / -name .sincedb* /usr/share/logstash/data/plugins/inputs/file/.sincedb_452905a167cf4509fd08acb964fdb20c # cd /usr/share/logstash/data/plugins/inputs/file/ [root@server5 file]# l. . .. .sincedb_452905a167cf4509fd08acb964fdb20 [root@server5 file]# cat .sincedb_452905a167cf4509fd08acb964fdb20c 51010973 0 64768 58744 1615282030.717793 /var/log/messagessincedb文件內容解釋
[root@server5 file]# cat .sincedb_452905a167cf4509fd08acb964fdb20c 51010973 0 64768 58744 1615282030.717793 /var/log/messagessincedb文件一共6個字段
在運行時,只顯示最新的日志,不顯示之前的。
Syslog插件
root@server5 ~]# cd /etc/logstash/conf.d/ [root@server5 conf.d]# vim file.conf input {file {path => "/var/log/messages"start_position => "beginning"} } output {#file {# path => "/tmp/logstash.txt"# codec => line { format => "custom format: %{message}"} #}elasticsearch {hosts => ["172.25.3.1:9200"]index => "syslog-%{+yyyy.MM.dd}"}stdout { } } [root@server5 conf.d]# logstash -f file.conf命令行輸出結果:
默認會開啟514端口
多行過濾插件
多行過濾可以把多行日志記錄合并為一行事件
[root@server5 conf.d]# cat demo.conf input {stdin {codec => multiline {pattern => "^EOF"negate => "true" what => "previous"}} } output {stdout {} } [root@server5 conf.d]# logstash -f demo.conf [root@server4 ~]# cd /var/log/elasticsearch/ [root@server4 elasticsearch]# scp my-es.log server5:/var/log/ [root@server5 conf.d]# vim file.conf input {file {path => "/var/log/my-es.log"start_position => "beginning"codec => multiline {pattern => "^\["negate => "true"what => "previous"}}#syslog {} } output {#file {# path => "/tmp/logstash.txt"# codec => line { format => "custom format: %{message}"} #}elasticsearch {hosts => ["172.25.3.1:9200"]index => "my-es-%{+yyyy.MM.dd}"}stdout { } } [root@server5 conf.d]# logstash -f file.conf
grok過濾插件
apache服務日志過濾實戰
[root@server5 conf.d]# cat apache.conf input {file {path => "/var/log/httpd/access_log"start_position => "beginning"}#syslog {} }filter{grok {match => {"message" => "%{HTTPD_COMBINEDLOG}"} } } output {#file {# path => "/tmp/logstash.txt"# codec => line { format => "custom format: %{message}"} #}elasticsearch {hosts => ["172.25.3.1:9200"]index => "apachelog-%{+yyyy.MM.dd}"}stdout { } } [root@server5 conf.d]# logstash -f apache.conf
總結
以上是生活随笔為你收集整理的logstash数据采集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ELK日志分析平台(elasticsea
- 下一篇: kibana数据可视化