關於ELK
ELK指的是Elastic公司下面Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡稱。
Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡稱。
ELK的關係
- Logstash可以將數據收集起來統一刷入Elasticsearch中
- 數據在Elasticsearch中進行分析然後通過kibana進行展示
Logstash:從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到 ES。
Elasticsearch:對大容量的數據進行接近實時的存儲、搜索和分析操作。
Kibana:數據分析和可視化平臺。與 Elasticsearch 配合使用,對數據進行搜索、分析和以統計圖表的方式展示。
ELK的應用
- 異常分析
通過將應用的日誌內容通過Logstash輸入到Elasticsearch中來實現對程序異常的分析排查
- 業務分析
將消息的通訊結果通過Logstash輸入到Elasticsearch中來實現對業務效果的整理
- 系統分析
將處理內容的延遲作爲數據輸入到Elasticsearch中來實現對應用性能的調優
Logstash
Logstash 是開源的服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到您最喜歡的“存儲庫”中。
Logstash的基本概念
根據官方文檔Logstash對數據的處理主要流程是
- 首先數據傳入logstash,在其內部對數據進行過濾和處理
- logstash將處理過的數據傳遞給Elasticsearch
- Elasticsearch對數據進行存儲、創建索引等內容
- kibana對數據提供可視化的支持
Logstash的核心
Logstash核心分三部分:數據輸入、數據處理、數據輸出
Logstash這三個部分會在其配置文件中體現出來,這裏只介紹支持的功能,具體配置的內容會在後面兩篇博客中介紹
其數據輸入、處理、輸出主要在配置中間中下面部分進行配置
input {}
filter {}
output {}
一個簡單的示例
input {
file {
path => "/usr/local/log/exception/*"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => {"@timestamp" => "%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day}" }
add_field => { "current_version" => "%{year}%{month}%{day}"}
}
}
output {
elasticsearch {
hosts => "http://47.99.100.0:9200"
index => "exception_demo"
user => exception_user
password => exception
}
stdout {}
}
數據輸入
input配置定義了數據的來源。其主要支持下面方式
- file
監控文件內容輸出
- stdin
監控控制檯輸入
- syslogs
從syslogs讀取數據
- beats
從Elastic beats接收數據
- kafka
從kafka topic中讀取數據
數據處理
filter plugin 過濾器插件,主要是對數據進行處理。其支持下面幾種處理策略
- grok
解析文本並構造 。把非結構化日誌數據通過正則解析成結構化和可查詢化
- date
日期解析 解析字段中的日期,然後轉存到@timestamp
- mutate
對字段做處理 重命名、刪除、替換和修改字段。
- covert:類型轉換。類型包括:integer,float,integer_eu,float_eu,string和boolean
- split:使用分隔符把字符串分割成數組
- merge:合併字段 。數組和字符串 ,字符串和字符串
- rename:對字段重命名
- remove_field:移除字段
- join:用分隔符連接數組,如果不是數組則不做處理
- gsub:用正則或者字符串替換字段值。僅對字符串有效
- update:更新字段。如果字段不存在,則不做處理
- replace:更新字段。如果字段不存在,則創建
- geoip
根據來自Maxmind GeoLite2數據庫的數據添加有關IP地址的地理位置的信息
- ruby
ruby插件可以執行任意Ruby代碼
- urldecode
用於解碼被編碼的字段,可以解決URL中 中文亂碼的問題
- kv
通過指定分隔符將字符串分割成key/value
- useragent
添加有關用戶代理(如系列,操作系統,版本和設備)的信息
數據輸出
output配置定義了數據輸出目標
- stdout
將數據輸出到屏幕上
- file
將數據寫入文件
- kafka
數據發送到kafka
- elasticseach
數據存儲到elasticseach中
Logstash配置支持的運算符
作用 | 符號 |
---|---|
等於 | == |
不等於 | != |
小於 | < |
大於 | > |
小於等於 | <= |
大於等於 | >= |
匹配正則 | =~ |
不匹配正則 | !~ |
包含 | in |
不包含 | not in |
與 | and |
或 | or |
非與 | nand |
非或 | xor |
複合表達式 | () |
取反符合 | !() |
個人水平有限,上面的內容可能存在沒有描述清楚或者錯誤的地方,假如開發同學發現了,請及時告知,我會第一時間修改相關內容。假如我的這篇內容對你有任何幫助的話,麻煩給我點一個贊。你的點贊就是我前進的動力。