Haproxy通过rsyslog吐日志给kafka

为了给Haproxy做异步的监控统计,打算将Haproxy的log输出到kafka,由后面的监控应用(Spark)处理后再进行存储展现(Influxdb+Grafana),而rsyslog可以支持不同input、output类型的适配,在v8.7.0及以上的版本中,也支持omkafka模块了,因此可以选择用来将HA的log给到Kafka。

在此记录一下这部分的配置过程和填过的坑。

1、升级rsyslog

原机器上已经安装了v5的版本,但是需要升级到v8.7.0才可以支持kafka,因此需要升级rsyslog,安装相关依赖包。

另外都是内网机器,因此采用下载rpm包离线安装的方式;注意对应的操作系统(centos6对应el6)和包的位数(64位对应x86_64)

安装完后执行 rsyslogd -v,显示版本是8.1907.0,则验证rsyslog是否升级成功

查看/lib64/rsyslog/中是否存在 omkafka.so,验证rsyslog-kafka是否安装成功。

2、配置rsyslog

这里主要配置通过udp的方式获取ha的log输入,然后通过omkafka输出到kafka;

首先把新生成rsyslog.conf配置文件更名替换旧的,然后把吐kafka相关配置写到rsyslog.conf或者在rsyslog.d下独立的conf文件都可以。

module(load="omkafka")
module(load="imudp")
input(type="imudp" port="514" ruleset="tokafka")

ruleset(name="tokafka") {
      #输出到kafka
      action(type="omkafka" topic="ha2kafka" broker="ip:9092")
      #输出到文件
      action(type="omfile" file="/var/log/haproxy.log")
}

配置好之后,/etc/init.d/rsyslog restart进行重启使配置生效,此时rsyslog与broker所示的ip:port已经建立连接了。

3、修改hosts

这里是遇到的一个坑,不知为何,broker配置的是ip,但吐消息的时候却FAILED了,并报一个域名访问不到的错误;经排查,该域名正是broker所配置kafka ip对应的机器名。

因此在rsyslog服务器上修改/etc/hosts文件,添加一条kafka ip对应的机器名,之后就好使了。

    原文作者:Sherman
    原文地址: https://zhuanlan.zhihu.com/p/74154099
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞