carbon 的明文上报口
2003 是 Graphite 监控栈里 carbon 组件的明文接收端口。carbon 监听 2003,接收「指标路径 值 时间戳」这样的极简文本行,写入 Whisper 数据库供 Graphite Web 查询。格式简单到用 nc 就能上报,因此被大量自研采集脚本、StatsD 后端与自定义 Agent 直接使用,代价是既没有认证也没有加密。
基本信息
| 服务 | Graphite carbon(plaintext 协议) |
|---|---|
| 协议 | TCP |
| 数据格式 | metric value timestamp |
| 同族端口 | 2003 明文、2004 pickle、7002 查询缓存 |
| 安全等级 | 仅限内网可信网段 |
典型使用场景
- 自研采集脚本用几行代码把业务指标推给 Graphite
- StatsD 后端把聚合结果转发到 carbon 的 2003 端口
- 排障时手工灌一条测试指标,验证采集链路是否通畅
- 迁移监控栈时清点还有哪些脚本硬编码了这个端口
- 安全评估时确认上报口是否被限制在可信网段
手工上报一个指标
手工上报一个指标
echo "test.metric 42 $(date +%s)" | nc -q1 127.0.0.1 2003 # 路径 值 时间戳
ss -lntp | grep ':2003 ' # 服务端确认监听
ls /var/log/carbon* 2>/dev/null # 定位 carbon 日志再查写入情况carbon 端口分工
| 端口 | 协议 | 用途 |
|---|---|---|
| 2003 | TCP 明文 | 指标上报,最常用的入口 |
| 2004 | TCP pickle | 二进制协议,吞吐更高但不便手工测试 |
| 2023 | TCP 明文 | carbon-aggregator 聚合入口 |
| 2024 | TCP pickle | 聚合器的二进制入口 |
| 7002 | TCP | 查询缓存接口,供 dashboard 快速读数据 |
三个组件要分清:carbon-cache 收数据写盘,carbon-relay 按规则转发到其他后端,carbon-aggregator 先做统计再落库。同一个端口后面接的是谁,决定了指标是原样入库还是被聚合后再入库,排障时先确认链路里有哪些角色。
明文协议没有认证,能连上就能写数据。把 2003 放在不可信网段,任何主机都能往监控系统里灌假指标,把告警判断与容量规划一起带偏,事后很难辨认真实数据。
写入失败分两类:连接被拒说明 carbon 进程没监听或端口被拦;连接成功但数据不落盘,要查落库目录的权限与磁盘空间。carbon 对格式错误的行通常是直接丢弃而不回错,所以手工上报后必须回查数据库,确认数据真的写进去了。