StatsD 与 8125 端口
8125 是 StatsD 的默认端口,运行在 UDP 上。应用用一行文本,例如 test.metric:1|c,把打点发到 StatsD,由它聚合后推送给后端时序库。UDP 无握手无认证的特性让打点开销极低,但也意味着任何能发包的主机都能污染指标。排查指标异常时,这个无认证入口常是被忽略的盲区。
基本信息
| 服务 | StatsD 及兼容实现 |
|---|---|
| 端口/协议 | UDP 8125,部分实现支持 TCP |
| 数据格式 | 指标名冒号值竖线类型的文本协议 |
| 后端对接 | 时序数据库与可视化平台 |
| 权限要求 | 应用侧直接发 UDP,无需凭据 |
| 安全等级 | 仅受控的监控网段 |
典型使用场景
- 应用打点:埋点计数、计时与仪表值
- 批量聚合:在采集端做统计以减轻后端压力
- 短任务指标:脚本与批处理上报执行结果
- 采集迁移:用兼容实现替换接收端
- 排障:指标缺失时区分发送侧与聚合侧问题
发送测试打点
发送测试打点
echo 'test.metric:1|c' | nc -u -w1 127.0.0.1 8125 # 发送一条计数打点
ss -lunp | grep 8125 # 确认监听与进程
sudo tcpdump -n 'udp port 8125' # 观察打点流量
# 提示:UDP 没有确认机制,接收端未监听时发送方不会报错打点格式读法
| 片段 | 含义 | 注意 |
|---|---|---|
| 指标名 | 点号分层的命名 | 命名规范要统一 |
| 数值 | 本次上报的数值 | 负值需确认实现是否支持 |
| 类型标记 | 计数、计时、仪表等 | 写错会被丢弃或统计错误 |
| 采样率 | 按比例上报 | 需与聚合侧口径一致 |
运维要点
- 指标命名建立统一规范,避免同一含义出现多个名字
- 接收端限制来源网段,减少被伪造打点的可能
- 把接收端存活与端口监听纳入自身监控,避免静默失效
- 采样率与聚合口径写进文档,避免数值被误读
- 迁移实现时对比新旧口径,验证一段时间再切换
UDP 打点没有回执:接收端未启动或端口写错时,发送方不会收到任何错误。指标消失时先确认接收端监听与网络路径,再检查应用侧配置。
无认证的 UDP 端口意味着任何可达主机都能伪造打点,往指标里灌入垃圾数据。对指标质量有要求的场景应限制来源网段,或改用带鉴权的采集方式。