logstash基礎操作

Logstash:

  • 數據收集、日誌數據

  • 配置框架


input {
    ...
}

filter {
    ...
}

output {
    ...
}
  • 四種類型的插件:input ,filter ,codec, output

  • 數據類型

Array: [item1,item2,...]
Boolean: true, false
Bytes:
codec: 編碼器
Hash: key => value
Number:
Password:
Path: 文件系統路徑
String: 字符串
  • 條件判斷

==, != ,< ,<= ,> ,>=
=~ , !~
in , not in 
and , or
()
  • logstash的工作流程:input | filter |output ,如無需對數據進行額處理,filter可省略

    從標準輸入,至標準輸出


input {
    stdin{}
}

output {
    stdout {
        codec => rubydebug
    }
}

  • logstash的插件:



    • input插件:

      • file:從指定的文件中讀取事件流;其工作特性類似於tail -f -1,使用FileWatch(ruby gem庫)來監聽文件是否發生變化;

      • .sincedb:記錄了每個被監聽的文件的inode,major,number,minor number,pos;

      示例:

input {
    file {
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
    }
}

output {
    stdout {
        codec => rubydebug
    }
}

     


     udp:通過udp協議從網絡連接來讀取messages,其必備參數爲port,用於指明自己監聽的端口,host則用指明自己監聽的地址;

    示例:

input {
    udp {
	port => 25826
	codec => collectd {}
	type => "collectd"
	}
}

output {
    stdout {
	codec => rubydebug
	}
}

  • filter插件:

    用於將event執行ouput之前對其實現處理功能;

    • grok:用於分析並結構化文本數據;目前,是logstash中將非結構化日誌數據轉化爲結構化的可查詢數據的不二之選。

    • 模式定義位置:

       /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-0.3.0/patterns/grok-patterns

      語法格式:

          %{SYNTAX:SEMANTIC}

          SYNTAX:預定義模式名稱

          SEMANTIC:匹配到的文本的自定義標識符;

      示例:

input {
    stdin{}
}

filter {
    grok {
        match => { "message" => "%{IP:clientip} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"}
    }
}

output {
    stdout {
        codec => rubydebug
    }
}


1.1.1.1 GET /index.html 30 0.23
					
%{IP:clientip} %{WORD:methond} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}
					
{
    "message" => "1.1.1.1 GET /index.html 30 0.23",
     "@version" => "1",
    "@timestamp" => "2018-05-15T04:16:39.808Z",
    "host" => "0.0.0.0",
    "clientip" => "1.1.1.1",
    "method" => "GET",
    "request" => "/index.html",
    "bytes" => "30",
    "duration" => "0.23"
}


自定義grok的模式:

  grok的模式是基於正則表達式編寫,其元字符與其它用到正則表達式的工具差別不大。


output插件:

示例:

stdout{}
			
elasticsearch{
	cluster => "myes"
	index => "logstash-%{+YYYY.MM.dd}"
				
}
			
			
redis {
	port => "6379"
	host => ["127.0.0.1"]
	data_type => "list"
	key =>
}


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