日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实战ELK(5) Logstash 入门

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战ELK(5) Logstash 入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實戰ELK(5) Logstash 入門

?

?

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,并按照開發者的制定的規范輸出到目的地。

一、原理

?Logstash 通過管道進行運作,管道有兩個必需的元素,輸入和輸出,還有一個可選的元素,過濾器。

輸入插件從數據源獲取數據,過濾器插件根據用戶指定的數據格式修改數據,輸出插件則將數據寫入到目的地。如下圖:

?

輸入:采集各種樣式、大小和來源的數據

數據往往以各種各樣的形式,或分散或集中地存在于很多系統中。Logstash 支持各種輸入選擇 ,可以在同一時間從眾多常用來源捕捉事件。能夠以連續的流式傳輸方式,輕松地從您的日志、指標、Web 應用、數據存儲以及各種 AWS 服務采集數據。

?

過濾器:實時解析和轉換數據

數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,并將它們轉換成通用格式,以便更輕松、更快速地分析和實現商業價值。

Logstash 能夠動態地轉換和解析數據,不受格式或復雜度的影響:

  • 利用 Grok 從非結構化數據中派生出結構
  • 從 IP 地址破譯出地理坐標
  • 將 PII 數據匿名化,完全排除敏感字段
  • 整體處理不受數據源、格式或架構的影響

?

輸出:選擇你的存儲,導出你的數據

盡管 Elasticsearch 是我們的首選輸出方向,能夠為我們的搜索和分析帶來無限可能,但它并非唯一選擇。

Logstash 提供眾多輸出選擇,您可以將數據發送到您要指定的地方,并且能夠靈活地解鎖眾多下游用例。

?

二、安裝?

2.1、下載

Logstash 依賴 JDK1.8 ,因此在安裝之前請確保機器已經安裝和配置好 JDK1.8。

Logstash 下載:https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1.rpm

2.2、安裝

yum install logstash-6.5.1.rpm

查看啟動文件來了解下文件目錄

vim /etc/systemd/system/logstash.service

常用的目錄:

/etc/default/logstash /etc/sysconfig/logstash /usr/share/logstash/bin/logstash
/etc/logstash

2.3、設置執行權限

  • 方法1,修改
logstash.service vim /etc/systemd/system/logstash.service User=root #直接以root賬戶允許 Group=root
  • 方法2
chown -R logstash:logstash /var/lib/logstash chown -R logstash:logstash /var/log/logstash

2.4?、開機啟動?

systemctl start logstash.service systemctl enable logstash.service systemctl status logstash.service

2.5、我們先來一個簡單的案例:

cd /usr/share/logstash bin/logstash -e 'input { stdin { } } output { stdout {} }'

可能會有點慢

這時候輸入個Hello World

在生產環境中,Logstash 的管道要復雜很多,可能需要配置多個輸入、過濾器和輸出插件。

因此,需要一個配置文件管理輸入、過濾器和輸出相關的配置。配置文件內容格式如下:

?

# 輸入 input {... }# 過濾器 filter {... }# 輸出 output {... }

根據自己的需求在對應的位置配置?輸入插件、過濾器插件、輸出插件?和?編碼解碼插件?即可。

?

三、插件用法

?Logstash 每讀取一次數據的行為叫做事件。

在 Logstach 目錄中創建一個配置文件,名為 logstash.conf(名字任意)。

cd /usr/share/logstash

3.1 輸入插件

輸入插件允許一個特定的事件源可以讀取到 Logstash 管道中,配置在 input {} 中,且可以設置多個。

修改配置文件:

input {# 從文件讀取日志信息file {path => "/var/log/elasticsearch/"type => "elasticsearch"start_position => "beginning"} }# filter { # # }output {# 標準輸出stdout { codec => rubydebug } }

其中,messages 為系統日志。

?保存文件。鍵入:

bin/logstash -f logstash.conf

?

3.2 輸出插件

輸出插件將事件數據發送到特定的目的地,配置在 output {} 中,且可以設置多個。

修改配置文件:

input {# 從文件讀取日志信息file {path => "/var/log/error.log"type => "error"start_position => "beginning"}}# filter { # # }output {# 輸出到 elasticsearchelasticsearch {hosts => ["192.168.50.70:9200"]index => "error-%{+YYYY.MM.dd}"} }

保存文件。鍵入:

bin/logstash -f logstash.conf

?

3.3 編碼解碼插件

編碼解碼插件本質是一種流過濾器,配合輸入插件或輸出插件使用。

從上圖中,我們發現一個問題:Java 異常日志被拆分成單行事件記錄到 Elasticsearch 中,這不符合開發者或運維人員的查看習慣。因此,我們需要對日志信息進行編碼將多行事件轉成單行事件記錄起來。

我們需要配置 Multiline codec 插件,這個插件可以將多行日志信息合并成一行,作為一個事件處理。

Logstash 默認沒有安裝該插件,需要開發者自行安裝。鍵入:

bin/logstash-plugin install logstash-codec-multiline

修改配置文件:

input {# 從文件讀取日志信息file {path => "/var/log/error.log"type => "error"start_position => "beginning"# 使用 multiline 插件codec => multiline {# 通過正則表達式匹配,具體配置根據自身實際情況而定pattern => "^\d"negate => truewhat => "previous"}}}# filter { # # }output {# 輸出到 elasticsearchelasticsearch {hosts => ["192.168.2.41:9200"]index => "error-%{+YYYY.MM.dd}"} }

保存文件。鍵入:

bin/logstash -f logstash.conf

4.4 過濾器插件

?

過濾器插件位于 Logstash 管道的中間位置,對事件執行過濾處理,配置在 filter {},且可以配置多個。

本次測試使用 grok 插件演示,grok 插件用于過濾雜亂的內容,將其結構化,增加可讀性。

安裝:

bin/logstash-plugin install logstash-filter-grok

修改配置文件:

input {stdin {} }filter {grok {match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER :duration}" } } }output {stdout {codec => "rubydebug"} }

保存文件。鍵入:

bin/logstash -f logstash.conf

啟動成功后,我們輸入:

55.3.244.1 GET /index.html 15824 0.043

控制臺返回:

[root@localhost logstash-5.6.3]# bin/logstash -f logstash.conf Sending Logstash's logs to /root/logstash-5.6.3/logs which is now configured via log4j2.properties [2017-10-30T08:23:20,456][INFO ][logstash.modules.scaffold] Initializing module {:module_name=>"fb_apache", :directory=>"/root/logstash-5.6.3/modules/fb_apache/configuration"} [2017-10-30T08:23:20,459][INFO ][logstash.modules.scaffold] Initializing module {:module_name=>"netflow", :directory=>"/root/logstash-5.6.3/modules/netflow/configuration"} [2017-10-30T08:23:21,447][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>125} The stdin plugin is now waiting for input: [2017-10-30T08:23:21,516][INFO ][logstash.pipeline ] Pipeline main started [2017-10-30T08:23:21,573][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600} 55.3.244.1 GET /index.html 15824 0.043 {"duration" => "0.043","request" => "/index.html","@timestamp" => 2017-10-30T15:23:23.912Z,"method" => "GET","bytes" => "15824","@version" => "1","host" => "localhost.localdomain","client" => "55.3.244.1","message" => "55.3.244.1 GET /index.html 15824 0.043" }

輸入的內容被匹配到相應的名字中。

?

posted on 2018-12-03 10:49 tianyamoon 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/tianyamoon/p/10045282.html

總結

以上是生活随笔為你收集整理的实战ELK(5) Logstash 入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。