Logstash 基礎知識整理


相關名詞:
Pipeline:

input-filter-output的三階段處理流程
隊列管理
插件生命周期管理
Logstash Event:

內部流轉的數據表現形式
原始數據在input被轉換為Event,在output event被轉換為目標格式數據
在配置文件中可以對Event中的屬性進行增刪改查
Logstash架構圖:


Batcher負責批量的從queue中取數據

Queue分類:

  • In Memory : 無法處理進程Crash、機器宕機等情況,會導致數據丟失
  • Persistent Queue In Disk:可處理進程Crash等情況,保證數據不丟失,保證數據至少消費一次,充當緩沖區,可以替代kafka等消息隊列的作用

性能分析:


持久隊列的基本配置:

queue.type:persisted #默認是memory
queue.max_bytes:4gb #隊列存儲最大數據量

  

線程:

相關配置:

pipeline.worksers | -w
# pipeline線程數,即filter_output的處理線程數,默認是cpu核數

pipeline.batch.size | -b
#Batcher一次批量獲取的待處理文檔數,默認是125,可以根據輸出進行調整,越大會占用越多的heap空間,可以通過jvm.options調整

pipeline.batch.delay | -u
#Batcher等待的時長,單位為ms

  

Logstash配置文件:
logstash設置相關的配置文件(在conf文件夾中,setting files)

  • logstash.yml:logstash相關配置,比如node.name、path.data、pipeline.workers、queue.type等,這其中的配置可以被命令行參數中的相關參數覆蓋
  • jvm.options:修改jvm的相關參數,比如修改heap size等

pipeline配置文件:定義數據處理流程的文件,以.conf結尾

logstash.yml配置項:

node.name: 節點名稱,便於識別
path.data: 持久化存儲數據的文件夾,默認是logstash home目錄下的data
path.config: 設定pipeline配置文件的目錄(如果指定文件夾,會默認把文件夾下的所有.conf文件按照字母順序拼接為一個文件)
path.log: 設定pipeline日志文件的目錄
pipeline.workers: 設定pipeline的線程數(filter+output),優化的常用項
pipeline.batch.size/delay: 設定批量處理數據的數據和延遲
queue.type: 設定隊列類型,默認是memory
queue.max_bytes: 隊列總容量,默認是1g

logstash命令行配置項:

--node.name
-f --path.config #pipeline路徑,可以是文件或者文件夾
--path.settings #logstash配置文件夾路徑,其中要包含logstash.yml
-e --config.string #指明pipeline內容,多用於測試使用
-w --pipeline.workers
-b --pipeline.batch.size
--path.data
--debug
-t --config.test_and_exit
建議:線上環境推薦采用配置文件的方式來設定logstash的相關配置,這樣可以減少犯錯的機會,而且文件便於進行版本化管理;命令行形式多用來進行快速的配置測試、驗證、檢查等

logstash多實例運行方式:

bin/logstash --path.settings instance1
bin/logstash --path.settings instance2
不同instance中修改logstash.yml,自定義path.data,確保其不相同即可

pipeline配置簡介:

Pipeline用於配置input、filter和output插件,框架如下所示:

input {
...
}
filter {
...
}
output {
...
}

 

Pipeline配置語法:

主要有如下的數值類型:
布爾類型Boolean:

IDFailed => true

數值類型Number:

port => 33

字符創類型String:

name => "Hello world"

數組Array/List:

users => [{id => 1,name => bod},{id => 2,name => jane}]
path => ["/var/log/messages","/var/log/*.log"]

哈希類型Hash:

match => {
"field1" => "value1"
"field2" => "value2"
}


在配置中可以引用Logstash Event的屬性(字段),主要有如下兩種方式:

  • 直接引用字段值
使用[]即可,嵌套字段寫多層[]即可
if [path] =~ "access"
if [ua][os] =~ "windows"
  • 在字符串中以sprintf方式引用
使用%{}來實現
req => "request is %{request}"
us => "ua is %{[ua][os]}"

支持條件判斷語法,從而擴展了配置的多樣性,主要格式如下:

if EXPRESSION{
...
}else if EXPRESSION{
...
}else{
...
}


表達式主要包含如下操作符:

- 操作符
比較 ==、!=、<、>、<=、>=
正則是否匹配 =~、!~
包含(字符串或者數組) in、not in
布爾操作符 and、or、nand、xor、!
分組操作符 ()

 


logstash監控運維:

API
x-pack
API:Logstash提供了豐富的api來查看Logstash的當前狀態

http://192.168.20.101:9600
http://192.168.20.101:9600/_node
http://192.168.20.101:9600/_node/stats
http://192.168.20.101:9600/_node/hot_threads

# curl http://192.168.20.101:9600/_node/stats?pretty


原文:https://blog.csdn.net/wfs1994/article/details/80862225


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM