如何让Graphite简单地计算计数器,而不是对它们进行时间评分

时间:2014-08-17 05:13:06

标签: graphite collectd graphite-carbon

我正在使用Graphite和Collectd来监控我的服务器。特别是,我正在使用tail插件来计算失败的SSH登录。我正在使用这个指标的计数器,所以期望看到数据点的1,2,3,0等。然而,我所看到的是0.1,0.2,0.3,0等......在我看来,像Graphite这样提供每秒计数。我这样说是因为我的保留策略是每10秒一个数据点,持续两个小时。因此,每10秒登录失败=每秒0.1次。我正在图中看到这个。它看起来像这样:

Image

此外,当我缩小到下一个保留级别时,数字会相应调整:因此1登录失败,显示为0.1现在显示为远低于此:0.017或其他。

我认为这与使用的聚合方法无关:即使是最精细的数据也是关闭的。如何让Graphite将此指标视为纯粹的原始计数器?

这是我的storage-schemas.conf(保留策略):

[my_server]
pattern = .*
retentions = 10s:2h,1m:2d,30m:400d

这是我对collectd尾部插件的配置:

<Plugin "tail">
    <File "/var/log/auth.log">
            Instance "auth"
            <Match>
                    Regex "sshd[^:]*: Failed password"
                    DSType "CounterInc"
                    Type "counter"
                    Instance "sshd-invalid_user"
            </Match>
    </File>
</Plugin>

这是我的write_graphite插件的配置(将数据发送到石墨):

<Plugin write_graphite>
    <Node "my_server_name">
            Host "localhost"
            Port "2003"
            Protocol "tcp"
            LogSendErrors true
            Prefix "collectd."
            #Postfix ""
            StoreRates true
            AlwaysAppendDS false
            EscapeCharacter "_"
    </Node>
</Plugin>

我尝试为write_graphite插件设置StoreRates false,但这不起作用。它确实改变了行为:当我执行单个失败的SSH登录时,该指标显示为1.但是,它没有降回到0.当我再执行两次失败的登录时,指标会弹出3。

同样感兴趣的是:我还加载了用户插件,它只显示登录的用户数量并且工作正常:当我进入SSH时显示1,当我再次进入SSH时显示1,当我退出时返回1一个SSH。对于StoreRates的两种设置。所以看起来我想要的东西有可能以某种方式。也许不是使用尾部插件。

在这些图表中可以看到带有StoreRates false的SSH登录以及登录用户的正确行为:

Image

有什么想法吗?谢谢,

3 个答案:

答案 0 :(得分:3)

您要求系统计算事件数。这正是它正在做的事情:它计算自启动以来登录失败的次数。您是否正在使用StoreRates或者只是更改信息的显示方式:作为费率或原始计数器。柜台可能永远不会减少!您实际要求的是一个计数器,在读取时自行重置:计算自上次收集被检查以来登录失败的次数。

实际上,rrdtool中的ABSOLUTE数据源类型可用于实现此目的,但这对您没有帮助。

退一步,考虑一下你想要实现的目标:每秒登录失败的次数在我看来就像是一个完美的指标!

答案 1 :(得分:2)

尽管swissunix的答案非常有用,但为了达到我想要的行为,我最终使用了Logster而不是Collectd。使用Logster,您可以编写解析文件的代码位以及返回指标的位。因此,尽管将计数除以时间与Logster相同,但如果您不想这样做,则不必执行此操作:具有很大的灵活性。

我把解析器放在这里:https://github.com/camlee/logster-parsers

答案 2 :(得分:2)

如果将StoreRates设置为false,则可以将衍生函数应用于不断增加的计数器,以获得每个保留间隔的增加率,这符合您的要求。

E.g。在你的报告1失败登录的例子中,然后是2,你看到了值1和3.衍生物是1和2:石墨跟踪的每个区间的失败日志。