编辑: 645135144 | 2014-09-23 |
8 alert haproxy_session_limit { template = generic $notes = This alert monitors the percentage of sessions against the session limit in haproxy (maxconn) and alerts when we are getting close to that limit and will need to raise that limit. This alert was created due to a socket outage we experienced for that reason $current_sessions = max(q( sum:haproxy.frontend.scur{host=*,pxname=*,tier=*} , 5m , )) $session_limit = max(q( sum:haproxy.frontend.slim{host=*,pxname=*,tier=*} , 5m , )) $query = ($current_sessions / $session_limit) *
100 warn = $query >
80 crit = $query >
95 warnNotification = default critNotification = default } 我们并不需要全部了解上述的预警规则,我们只需要注意其中的一些要点即可: haproxy_session_limit 这是预警的名称,一个预警实例通过预警名称以及它所属的 Group来做区分 haproxy_session_limit{host=lb,pxname=http-in,tier=2} $notes 这是一个变量, 变量不是自适应的,这里它只是字符串类型. 如果你熟悉C中 得变量规则,这里的规则跟其类似.这里的变量能够被notification引用到,所以我们可以 直接在alert中定义这个变量. q( sum:haproxy.frontend.scur{host=*,pxname=*,tier=*} , 5m , ) 这是一条 OpenTSDB查询语句,它会返回N个元素, 通过这条语句我们知道每个元素都有host、 pxname、tier三个Tag. max(...) 这是个规约函数, 它会获取series并reduces转化为 number (情参看上面的 数据结构). $current_sessions / $session_limit 这个变量代表 numbers拥有相同的时间序列,这 样我们就可以使用 / 操作符来操作这两个集合. warn = $query >
80 如果这条语句返回True,那么就会触发 warnNotification . 查询语句 Graphite查询语句(待续) 表达式语言
9 InfluxDB查询语句(待续) Logstash查询语句(待续) Elastic查询语句(待续) OpenTSDB查询语句 本查询通过查询字符串(例如 sum:os.cpu{host=*} )来获得时间序列集合的返回 q(query string, startDuration string, endDuration string) seriesSet 通用查询以当前时间减去endDuration时间作为最后的时间,往前追溯当前时间减去 startDuration作为开始时间.如果endDuration被置为空字符串( ),那么最后时间就是当前 时间.支持的字符串见opentsdb的文档,支持的查询语句也位于opentsdb的文档.查询参数 的表达式是 m=... , * 和 | 都被支持.另外,像 sys.cpu.user{host=ny-*} 这样的语句也是 被支持的,这样的语句执行的时候会由附加的步骤来决定好有效的匹配,替换`ny- 为 ny- web01|ny-web02|...|ny-web10`,最后的结果是一致的.这个查找的过程在在系统的内存中进 行,并不会增加OPENTSDB的API请求操作,但是需要scollector实例提前发送类型到bosun 服务器中. band(query string, duration string, period string, num scalar) seriesSet band执行 num 次查询,从当前时间减去 period 为最后的时间,每个循环把最后时间减 去 period ,开始时间从当前循环的最后时间减去 duration 作为查询的时间段,最后把所有 结果拼........