我试图模仿这个logstash.net/docs/1.1.0/tutorials/metrics-from-logs
我有以下设置
nginx(应用服务器)==发送增量==>Etsy statsD=====>Graphite
此设置工作正常,因为图表绘制得很好,但不正确。根据上述配置,我理解图表步长值应该是整数,但我得到的 Y 轴(命中数)是浮点数,如附图所示,我完全搞不懂如何解释此图表。
Logstash 代理配置
input {
file {
type => nginx_web
path => ["/var/log/nginx/access.log"]
}
filter {
grok {
type => nginx_web
pattern => "%{IP:ClientIP} (?:%{HOST:ClientHost}|-) (?:%{USER:ClientUser}|-) \[%{GREEDYDATA:TimeStamp}\] \"(?:%{WORD:Verb} %{URIPATHPARAM:Request} HTTP/%{NUMBER:HTTPversion}|%{DATA:UnparsedRQ})\" %{NUMBER:Response} (?:%{NUMBER:Bytes}|0) (?:%{QUOTEDSTRING:HTTPReferrer|\"-\"}) %{QUOTEDSTRING:HTTPUserAgent}"
}
output {
statsd {
type => "nginx_web"
host => "X.X.X.X"
increment => [
"nginx.response.%{Response}"
]
}
}
我正在使用以下 URL API 来生成此图表
render/?width=600&height=320&hideLegend=1&from=-60minutes&until=-0minutes&target=stats.logstash.*.nginx_web.response.*
有人可以指出我该去哪里解决我的问题吗?
答案1
因为这是一个老问题(在回答这个问题时),我只是把它放在这里作为其他想知道同样事情的人的参考。
Logstash 的指南中有一篇关于理解 Graphite 以及数据如何聚合的文章。查看这里
如果你恰好使用的是较新版本的 logstash,那么你将拥有statsd_count文件夹,它将为您提供 Graphite 收到的增量数,而不是为您计算 10 秒内的平均值。
根据 logstash 手册入口假设您在 10 秒内收到 3200 个响应,statsd 会生成如下几行数据:
stats.logstash.101010_1.apache.site1.response.200 = 3 / 10 = 0.3 (number of responses with status 200 per second)
然而,在statsd_count文件夹中,你会看到类似以下内容的内容:
stats_count.logstash.101010_1.apache.site1.response.200 = 3 (we have received 3 times status 200 for our period of 10 seconds)
答案2
图表上的值不是整数,因为它是平均值。
statsd 存储响应计数器的整数值以显示图表上的一个点,它将较早的计数器值从较晚的计数器值中减少,并将其除以步进时间。(Count(t)-count(t-step))/step。