计算最近 5 分钟的文件总数

lscount 根据指定的过滤器返回 LogStash 索引中匹配文档的时间分配计数。

对此的一个简单用法是检查在 5 分钟内收到的文件总数,并在其低于某个阈值时发出警报。

针对此的 Bosun 警报可能如下所示:

alert logstash.docs {
    $notes = This alerts if there hasn't been any logstash documents in the past 5 minutes
    template = logstash.docs
    $count_by_minute = lscount("logstash", "", "", "5m", "5m", "")
    $count_graph = lscount("logstash", "", "", "1m", "60m", "")
    $q = avg($count_by_minute)
    crit = $q < 1
    critNotification = default
}

template logstash.docs {
    body = `{{template "header" .}}
    {{.Graph .Alert.Vars.count_graph }}
    {{template "def" .}}
    {{template "computation" .}}`
    subject = {{.Last.Status}}: Logstash docs per second: {{.Eval .Alert.Vars.q | printf "%.2f"}} in the past 5 minutes
}

这有两个 lscount 实例:

  • $ count_by_minute = lscount(logstash,“”,“”,5m5m,“”)
    • 这将计算最近 5 分钟内单个 5 分钟内的文档数。你将在返回的 seriesSet 中获得一个数据点,其中包含最近的 logstash 索引中最近 5 分钟的文档总数
  • $ count_graph = lscount(logstash,“”,“”,1m60m,“”)
    • 这将计算最后一小时的文档数量,以 1 分钟为单位。返回的 seriesSet 中总共有 60 个数据点,在本例中用于图表。