logstash grok mysql_【Logstash系列】使用Redis并自定义Grok匹配
之前提到,用RabbitMQ作為消息隊列。但是這個東西實在太過高精尖,不懂erlang不會調優的情況下,很容易掛掉——基本上我這里試驗結果跑不了半小時日志傳輸就斷了。所以改用簡單易行的redis來干這個活。 之前的lib里,有inputs/redis.rb和outputs/redis.rb兩
之前提到,用RabbitMQ作為消息隊列。但是這個東西實在太過高精尖,不懂erlang不會調優的情況下,很容易掛掉——基本上我這里試驗結果跑不了半小時日志傳輸就斷了。所以改用簡單易行的redis來干這個活。
之前的lib里,有inputs/redis.rb和outputs/redis.rb兩個庫,不過output有依賴,所以要先gem安裝redis庫,可以修改Gemfile,取消掉相關行的注釋,搜redis即可。
然后修改agent.conf:
input {
file {
type => "nginx"
path => ["/var/log/nginx/access.log" ]
}
}
output {
redis {
host => "MyHome-1.domain.com"
data_type => "channel"
key => "nginx"
type => "nginx"
}
}
啟動方式還是一樣。
接著修改server.conf:
input {
redis {
host => "MyHome-1.domain.com"
data_type => "channel"
type => "nginx"
key => "nginx"
}
}
filter {
grok {
type => "nginx"
pattern => "%{NGINXACCESS}"
patterns_dir => ["/usr/local/logstash/etc/patterns"]
}
}
output {
elasticsearch { }
}
然后創建Grok的patterns目錄,主要就是github上clone下來的那個咯~在目錄下新建一個叫nginx的文件,內容如下:
NGINXURI %{URIPATH}(?:%{URIPARAM})*
NGINXACCESS \[%{HTTPDATE}\] %{NUMBER:code} %{IP:client} %{HOSTNAME} %{WORD:method} %{NGINXURI:req} %{URIPROTO}/%{NUMBER:version} %{IP:upstream}(:%{POSINT:port})? %{NUMBER:upstime} %{NUMBER:reqtime} %{NUMBER:size} "(%{URIPROTO}://%{HOST:referer}%{NGINXURI:referer}|-)" %{QS:useragent} "(%{IP:x_forwarder_for}|-)"
Grok正則的編寫,可以參考wiki進行測試。
也可以不寫配置文件,直接用–grok-patterns-path參數啟動即可。
ps: 考察了一下statsd,發現它也要另存一份數據,放棄掉。轉研究Kibana界面和Elasticsearch的分布式。
總結
以上是生活随笔為你收集整理的logstash grok mysql_【Logstash系列】使用Redis并自定义Grok匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易CC主播梧桐专访——从抗揍老王直播间
- 下一篇: php mysql 写法_php 类的写