在Logstash中使用Syslog forware HAProxy日志过滤

 干将stambach_611 发布于 2022-12-07 12:55

我在理解如何正确执行此操作时遇到问题.

我有以下Logstash配置:

input {
  lumberjack {
    port => 5000
    host => "127.0.0.1"
    ssl_certificate => "/etc/ssl/star_server_com.crt"
    ssl_key => "/etc/ssl/server.key"
    type => "somelogs"
 }
}

output {
  elasticsearch {
    protocol => "http"
    host => "es01.server.com"
  }
}

使用logstash-forwarder,我将syslog生成的haproxy.log文件推送到logstash.然后Kibana向我展示了一个_source如下所示:

{"message":"Dec 8 11:32:20 localhost haproxy[5543]: 217.116.219.53:47746 [08/Dec/2014:11:32:20.938] es_proxy es_proxy/es02.server.com 0/0/1/18/20 200 305 - - ---- 1/1/1/0/0 0/0 \"GET /_cluster/health HTTP/1.1\"","@version":"1","@timestamp":"2014-12-08T11:32:21.603Z","type":"syslog","file":"/var/log/haproxy.log","host":"haproxy.server.com","offset":"4728006"}

现在,这必须被过滤(不知何故),我不得不承认我没有丝毫想法如何.
查看grok文档并摆弄grok调试器,我仍然没有从Logstash和Kibana中获得任何有用的东西.

我一直在扫描模式目录及其文件,我不能说我理解如何使用它们.我希望提供一个带有haproxy模式Logstash的过滤器可以匹配我的模式_source但是没有任何运气.

1 个回答
  • 你很幸运,因为已经有一个预定义的grok模式,它似乎可以解析这种确切类型的日志.您所要做的就是在grok过滤器中引用它:

    filter {
      grok {
        match => ["message", "%{HAPROXYHTTP}"]
      }
    }
    

    %{HAPROXYHTTP}将根据模式定义递归扩展,并且每行输入中的每个有趣片段将被提取到其自己的字段.您可能还想在成功应用grok过滤器后删除"消息"字段,因为它无论如何都包含冗余数据; 只需添加remove_field => ["message"]到grok过滤器声明中.

    2022-12-11 02:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有