druid监控指标可以通过graphite-emitter插件很方便地直接发送到Graphite,再配合其他的展示和报警工具。
这里提供一个Graphite+Grafana+Seyren这三个开源框架的组合来监控druid的思路。
Druid监控指标发送到Graphite
Graphite是Python编写的、面向监控的工具, 是一个时间序列数据库,可以将数据可视化为图表的工具。
添加依赖
添加至extensions
修改配置
修改druid节点启动配置_common/common.runtime.properties:
druid的metrics结构为:
注意
graphite端口需要注意,druid发送的是pickled之后的数据。graphite的pickled protocal默认是2004端口,plaintext protocal才是2003端口。
否则graphite会遇见下述错误:
less /disk1/xxx/graphite-virtualenv/carbon-relay.out | grep druid
Event Converter具体说明
Event Converter用户可配置的:
- namespacePrefix:前缀
- ignoreHostname:是否忽略hostname
- ignoreServiceName:是否忽略servicename
- mapPath:
经过上述配置之后,graphite目录结构为:
druid-graphite/serviceName/host/xxxx/xxxx
Grafana展示
Grafana提供了一种强大的优雅的方式来创建,展示,分享dashboards,支持Graphite数据源。
以broker节点的监控为例,以下的$node为节点变量,broker有两个节点,$node会有两个值。
内存
transformNull(druid-graphite.druid.broker.$node.jvm.mem.*, 0)
图中两条线为其中一个broker的内存情况,黄色的线为mem.used,淡蓝色的线为mem.max
查询时间
druid-graphite.druid.broker.$node.$datasource.{groupBy,topN,timeseries}.query.time
查询时间占比
druid-graphite.druid.broker.$node.$datasource.$queryType.query.time
Seyren报警
报警使用的基于Graphite数据的开源项目seyren,提供邮件和短信等手段的报警。
举例
监控broker是否活着,可以监控内存使用情况。当broker挂了的话,内存使用会将为0,会进行报警
配置短信和邮件报警