![Rsyslog. 如何统计发送到 kafka 的消息](https://linux22.com/image/690659/Rsyslog.%20%E5%A6%82%E4%BD%95%E7%BB%9F%E8%AE%A1%E5%8F%91%E9%80%81%E5%88%B0%20kafka%20%E7%9A%84%E6%B6%88%E6%81%AF.png)
我正在使用 rsyslog 将数据从 nginx 发送到 kafka。管道如下所示:
nginx -> unix_socket -> rsyslog -> omkafka module -> kafka
rsyslog 的 Omkafka 模块使用 tcp 传输消息,因此我可以轻松计算发送到 kafka 的数据流字节数和 tcp 数据包数,但这些指标对我来说不够有代表性。看来我应该使用一些应用程序级解决方案来精确计算消息数。
我知道“impstats”模块能够计算 rsyslog 消息,但它不支持 omkafka 模块。
寻求任何建议来获取适合我的情况的统计数据。谢谢!
答案1
好的。最后伊普斯塔特看起来是一个很好的解决方案。
通过简单的配置它可以产生足够的信息,因为 omkafka 默认将其计数器添加到全局计数器中。
配置:
module(
load="impstats"
interval="10" # how often to generate stats
resetCounters="on" # to get deltas (e.g. # of messages submitted in the last 10 seconds)
log.file="/var/log/impstats" # file to write those stats to
log.syslog="off" # don't send stats through the normal processing pipeline. More on that in a bit
)
我的管道的输出:
Tue Oct 4 12:40:22 2016: imuxsock: origin=imuxsock submitted=12942 ratelimit.discarded=0 ratelimit.numratelimiters=0
Tue Oct 4 12:40:22 2016: omkafka: submitted=12942 maxoutqsize=1434 failures=0 topicdynacache.skipped=0 topicdynacache.miss=0 topicdynacache.evicted=0