• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

【Logstash系列】使用Redis并自定义Grok匹配

mysql 搞代码 4年前 (2022-01-09) 29次浏览 已收录 0个评论

之前提到,用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:v<mark>本文来源gaodaimacom搞#代%码@网-</mark>ersion} %{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的分布式。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【Logstash系列】使用Redis并自定义Grok匹配

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址