StatsD常用于监控系统中,可以接收业务系统的打点数据(如每有一次请求,打点喂数一次),计算出qps、最长/平均用时等指标,处理后的数据可进一步发送到时序数据库、ElasticSearch等。
StatsD默认有2个端口开放,8125端口开放UDP或TCP协议,用于接收业务系统打点的数据;8126端口开放TCP协议,用于管理StatsD。
如果要删除StatsD中的指标(如counter、timer、gauge类型),可以用tcp连接StatsD的8126管理端口,发送命令来实现。
例如:
1 #删除若干counter,名称匹配s.wap.xxx.*的都会被删除。StatsD会通过tcp返回提示信息,删除成功/失败
2 [xx@yy]$ echo "delcounters s.wap.xxx.*" | nc 10.88.0.4 8126
3 metric s.wap.car.cboss.m_car_ces.user-action.* not found
4 END
5
6 #删除若干timer
7 [xx@yy]$ echo "deltimers s.wap.xxx.*" | nc 10.88.0.4 8126
8 metric s.wap.car.cboss.m_car_ces.user-action.* not found
9 END
10
11 #删除若干gauge
12 [xx@yy]$ echo "delgauges s.wap.xxx.*" | nc 10.88.0.4 8126
13 metric s.wap.car.cboss.m_car_ces.user-action.* not found
14 END
其中nc(NetCat)是一个网络工具,可以通过tcp、udp发送数据。
也可以通过telnet 10.88.0.4 8126的方式建立tcp连接,手动发送命令数据。如:
1 [xx@yy]$ telnet 10.88.0.4 8126
2 Trying 10.88.0.4...
3 Connected to 10.88.0.4.
4 Escape character is '^]'.
5 delcounters s.wap.car.cboss.m_car_ces.user-action.*
6 metric s.wap.car.cboss.m_car_ces.user-action.* not found
7 END
在公司业务中,发现当业务系统去除了某个指标后,该指标在StatsD中仍然存在,会定期向监控系统发送qps为0的数据。当在StatsD中删除该指标后,恢复正常,监控系统不再收到该指标的数据。
StatsD的8126管理端口还支持其他命令,如:
stats
counters
gauges
timers
具体可参考文档:
statsd/admin_interface.md at master · etsy/statsd
https://github.com/etsy/statsd/blob/master/docs/admin_interface.md