logstash 配置檔案語法介紹
來源:藍胖子的程式設計夢
!! 大家好,我是藍胖子,之前在構建服務監控實踐那個系列裡,有提到用logstash來做日誌的收集,但是對於logstash的配置檔案語法沒有做很詳細的介紹,今天就來詳細聊聊logstash配置檔案的語法。
很多時候一門新框架的配置都會有自己獨有的配置檔案格式,是先簡單瞭解配置檔案語法結構,能夠讓自己更加系統的掌控新框架的各項配置。
檔案結構
先來看看logstash的配置檔案結構,配置檔案分為3部分,input輸入,filter過濾,output輸出。配置檔案是以{} 來定義區段的。如下,
input { }
filter { }
output { }
顧名思義,它們分別表示logstash的輸入來源,輸入來源可以是檔案,filebeat等等。filter則是定義對輸入源內容進行二次處理,過濾提取等等。outpout則是將處理後的內容重新輸出到其他元件,比如elasticsearch或者透過http介面輸出到自定義服務中。
外掛
在每一個區段內,可以引入logstash的外掛,外掛的配置同樣也是用{}包裹起來的。如下,我在input區域內部定義了stdin和syslog外掛。
input { stdin {} syslog {} }
不過通常在filebeat和logstash搭配使用時,通常是將logstash的輸入來源定義為filebeat的外掛,如下
input {
beats {
port => 5044
}
}
而filebeat的配置檔案中,則是將輸出源設定為logstash,如下是filebeat的部分配置檔案示例,
output.logstash:
hosts: 192.168.0.2:5054
不同的外掛具體有哪些配置,有哪些外掛可以使用,參考官方檔案 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html
語法規則
介紹了配置檔案的結構後,我們來看看配置檔案的語法規則。
宣告賦值變數
在配置檔案中,賦值一個變數使用的是=>符號,像前面提到把輸入源定義為filebeat時,就將port變數賦值為5044了。
port => 5044
除了數值型別,logstash還會有字串,布林,陣列,hash型別,它們寫法如下,
字串型別
host =>"hostname"
布林型別
debug => true
陣列型別
match => ["datetime", "UNIX", "ISO8601"]
hash型別
options => { key1 =>"value1", key2 =>"value2" }
引用變數
宣告賦值完變數後,如何引用呢,在logstash中是透過[]對變數進行引用,如下,我宣告瞭一個變數debug, 然後引用它。
filter {
debug => true
}
output {
if [debug]==true {
...
}
}
如果是那種結構體型別,比如json,或者hash結構,那麼可以使用多重[]得到其值,如下,
output {
options => { key1 =>"value1", key2 =>"value2" }
if [options][key1]=="2" {
...
}
}
內插變數
logstash還支援內插變數,如下,我在使用elasticsearch外掛時,需要定義輸出的索引名稱,這個名稱是根據日誌來源中不同的內容建立不同的索引名稱。[fields][log_type]引用的則是出入來源中的變數名。
output {
elasticsearch {
hosts => ["]
index => "easymonitor-%{[fields][log_type]}-%{+yyyy.MM.dd}"
}
}
條件判斷
其實在介紹變數引用的時候,你應該已經看到if語句,除此以外if else語句也是支援的。如下所示,
if "_grokparsefailure" not in [tags] {
...
} else if [status] !~ /^2\d\d/ and [url] == "/noc.gif" {
...
} else {
...
}
logstash支援的判斷表示式包括
比較大小: ==, !=, <, >, <=, >= ·
正則: =~, !~
包含關係: in, not in
布林表示式: and, or, nand, xor
對錶達式取反操作: !(表示式)
注意logstash是不支援&& 和 || 表示並且和或關係的,應該用and 和or代替。
條件表示式定義多個輸出源
使用條件表示式,在條件表示式中定義不同的輸出外掛,達到根據不同內容輸出到不同元件的目的,以下是配置案例,透過判斷日誌的等級,等級為error或者日誌型別是es的日誌時,則輸出到報警服務中。
output {
elasticsearch {
hosts => ["]
index => "easymonitor-%{[fields][log_type]}-%{+yyyy.MM.dd}"
}
if [loglevel] == "Error" or [fields][log_sub_type]=="es" {
http {
http_method => "post"
url => "http://192.168.0.2:36060/alert_log"
}
}
}
總結
logstash的配置檔案語法還算是很簡單的,靈活的使用條件表示式可以定義多個輸出源,想要掌握logstash更多的配置還是要去官網掌握一些外掛的用法,不過在看懂語法的基礎上,學習外掛的用法就是水到渠成的事情了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2997836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- YAM yml 配置檔案介紹
- Travis CI 配置檔案 .travis.yml 的語法介紹和一些用法舉例
- Nginx配置檔案的語法格式Nginx
- shell 語法介紹
- JavaScript 語法介紹JavaScript
- logstash常用外掛介紹
- vue 腳手架 配置 及檔案介紹Vue
- keepalived(一)原理介紹和配置檔案詳解
- javascript字串的語法介紹JavaScript字串
- vue 腳手架 配置 及檔案介紹 2.0 版本Vue
- CPL檔案利用介紹
- 檔案管理簡單介紹
- PostCSS 常用外掛與語法介紹CSS
- nginx配置檔案語法高亮的Sublime Text擴充套件Nginx套件
- 簡單介紹nacos單機本地配置檔案儲存位置方式
- 檔案傳輸協議介紹協議
- Linux 檔案系統基本介紹Linux
- 關於PHP的語法介紹,新手必看PHP
- Jenkins系列之pipeline語法介紹與案例Jenkins
- Go彙編語法和MatrixOne使用介紹Go
- YAML檔案語法及示例YAML
- Qt 檔案模型(QFileSystemModel)詳細介紹QT模型
- ros學習檔案系統介紹ROS
- 如何快速傳輸大檔案,介紹大檔案快速方法
- dxf檔案用什麼開啟(dxf檔案格式介紹)
- Vue 框架-11-介紹src檔案流程及根元件app+HBuilder 配置Vue框架元件APPUI
- docker-compose 配置檔案內容詳解以及常用命令介紹Docker
- Flask快速入門day 01(flask介紹、快速使用、配置檔案、路由系統)Flask路由
- 檔案系統(十一):Linux Squashfs只讀檔案系統介紹Linux
- 9、RK3399J 檔案IO介紹
- Ansible自動化部署工具-元件及語法介紹元件
- CMakeLists.txt 語法介紹與例項演練
- SPF 記錄:原理、語法及配置方法簡介
- vuepress專案 配置/使用/部署 markdown語法Vue
- Python 中常見的配置檔案寫法Python
- supervisor監管的配置檔案寫法
- Nacos配置中心 (介紹與配置)
- LVS介紹與配置