Logstash——Logstash的基礎介紹

關於ELK

ELK指的是Elastic公司下面Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡稱。
Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡稱。

ELK的關係

  1. Logstash可以將數據收集起來統一刷入Elasticsearch中
  2. 數據在Elasticsearch中進行分析然後通過kibana進行展示
DATA
Logstash
Elasticsearch
Kibana

Logstash:從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到 ES。

Elasticsearch:對大容量的數據進行接近實時的存儲、搜索和分析操作。

Kibana:數據分析和可視化平臺。與 Elasticsearch 配合使用,對數據進行搜索、分析和以統計圖表的方式展示。

ELK的應用

  1. 異常分析

通過將應用的日誌內容通過Logstash輸入到Elasticsearch中來實現對程序異常的分析排查

  1. 業務分析

將消息的通訊結果通過Logstash輸入到Elasticsearch中來實現對業務效果的整理

  1. 系統分析

將處理內容的延遲作爲數據輸入到Elasticsearch中來實現對應用性能的調優

Logstash

Logstash 是開源的服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到您最喜歡的“存儲庫”中。

Logstash的基本概念

根據官方文檔Logstash對數據的處理主要流程是

進入Logstash管道
出Logstash管道
數據源
inputs
filters
output
Elasticsearch
  1. 首先數據傳入logstash,在其內部對數據進行過濾和處理
  2. logstash將處理過的數據傳遞給Elasticsearch
  3. Elasticsearch對數據進行存儲、創建索引等內容
  4. 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

對字段做處理 重命名、刪除、替換和修改字段。

  1. covert:類型轉換。類型包括:integer,float,integer_eu,float_eu,string和boolean
  2. split:使用分隔符把字符串分割成數組
  3. merge:合併字段 。數組和字符串 ,字符串和字符串
  4. rename:對字段重命名
  5. remove_field:移除字段
  6. join:用分隔符連接數組,如果不是數組則不做處理
  7. gsub:用正則或者字符串替換字段值。僅對字符串有效
  8. update:更新字段。如果字段不存在,則不做處理
  9. 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
複合表達式 ()
取反符合 !()

個人水平有限,上面的內容可能存在沒有描述清楚或者錯誤的地方,假如開發同學發現了,請及時告知,我會第一時間修改相關內容。假如我的這篇內容對你有任何幫助的話,麻煩給我點一個贊。你的點贊就是我前進的動力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章