指标主题支持 Prometheus Remote Write 协议,可使用兼容该协议的各类采集器采集指标并上报至指标主题,例如 vmagent 及 telegraf。通过这些采集器,您可以将各种类型的监控指标上报至指标主题,例如:
服务器监控指标,例如 CPU、内存、磁盘使用率等。
容器集群监控指标,例如 Pods 内存使用量、apiserver 请求延迟等。
中间件监控指标,例如 MySQL、Kafka、Nginx 等中间件的性能指标。
应用系统监控指标,例如接口吞吐率、响应时间、错误请求数等。
指标主题也可以作为本地 Prometheus 的远程存储,以 Remote Write 的方式将本地 Prometheus 中的指标上报至指标主题。
上报地址
网络类型 | 地址 |
外网 | https:// ${region} .cls.tencentcs.com/prometheus/${topicId} /api/v1/write |
内网 | https:// ${region} .cls.tencentyun.com/prometheus/${topicId} /api/v1/write |
其中:
${region}
需替换为指标主题所在的地域,例如 ap-beijing,更多地域简称参见 可用地域,目前仅支持北京、上海、广州及南京地域。${topicId}
需替换为指标主题 ID,例如 0e69453c-0727-4c9c-xxxx-ea51b10d2aba,可在 指标主题列表 中查询。鉴权方式
username:
${SecretId}
password:
${SecretKey}
{"version": "2.0","statement": [{"effect": "allow","action": ["cls:MetricsRemoteWrite"],"resource": ["*"]}]}
配置示例
Telegraf
[[outputs.http]]## 上报地址,请替换其中的${region}及${topicId},本示例采用外网地址,如果网络条件允许建议使用内网地址## 内网地址 url = "https://${region}.cls.tencentyun.com/prometheus/${topicId}/api/v1/write"url = "https://${region}.cls.tencentcs.com/prometheus/${topicId}/api/v1/write"## 鉴权信息,请替换其中的${SecretId
}及${SecretKey
}username = "${SecretId
}"password = "${SecretKey
}"## Telegraf output 数据格式配置,请勿修改data_format = "prometheusremotewrite"[outputs.http.headers]Content-Type = "application/x-protobuf"Content-Encoding = "snappy"X-Prometheus-Remote-Write-Version = "0.1.0"
Vmagent
启动 Vmagent 时使用如下参数配置 remoteWrite:
./vmagent-prod \\-remoteWrite.url=https://${region}.cls.tencentcs.com/prometheus/${topicId}/api/v1/write \\-remoteWrite.basicAuth.username=${SecretId
} \\-remoteWrite.basicAuth.password=${SecretKey
}
说明:
其中 remoteWrite.url 为外网地址,如果网络条件允许建议使用内网地址。
内网地址为
https://${region}.cls.tencentyun.com/prometheus/${topicId}/api/v1/write
。Prometheus
# 上报地址,请替换其中的${region}及${topicId},本示例采用外网地址,如果网络条件允许建议使用内网地址# 内网地址 url: https://${region}.cls.tencentyun.com/prometheus/${topicId}/api/v1/writeurl: https://${region}.cls.tencentcs.com/prometheus/${topicId}/api/v1/write# 鉴权信息,请替换其中的${SecretId}及${SecretKey}basic_auth:username: ${SecretId
}password: ${SecretKey
}# 数据写入策略,包括缓存及重试等,数据量较大时可参考如下配置queue_config:capacity: 20480min_shards: 100max_samples_per_send: 2048batch_send_deadline: 20smin_backoff: 100msmax_backoff: 5s
Prometheus Operator
1. 使用 kubectl 创建鉴权所需的 Secret,例如如下命令:
kubectl create secret generic kubepromsecret \\--from-literal=username=${SecretId
} \\--from-literal=password=${SecretKey
} \\-n monitoring
说明:
请替换其中的
${SecretId}
及${SecretKey}
如果 Prometheus 部署在其它 namespace 中,请修改其中的
-n monitoring
为正确的 namespace。也可以使用 manifest file 创建 Secret,详见 kubernetes 官方文档。
2. 打开 Prometheus manifest 配置文件,配置文件一般位于 Prometheus Operator 使用的 GitHub repo 文件夹中,路径一般为
kube-prometheus/manifests/prometheus-prometheus.yaml
。3. 修改 Prometheus manifest 配置文件,在末尾添加如下配置:
remoteWrite:- url: "https://${region}.cls.tencentcs.com/prometheus/${topicId}/api/v1/write"basicAuth:username:name: kubepromsecretkey: usernamepassword:name: kubepromsecretkey: password
说明:
请替换其中的
${region}
及${topicId}
,本示例采用外网地址,如果网络条件允许建议使用内网地址。内网地址为
url: "https://${region}.cls.tencentyun.com/prometheus/${topicId}/api/v1/write"
数据量较大时可添加如下数据写入策略,包括缓存及重试等,详见 prometheus-operator 官方文档。
queueConfig:capacity: 204800minShards: 100maxShards: 2048maxSamplesPerSend: 4096batchSendDeadline: 30sminBackoff: 100msmaxBackoff: 5s
4. 应用配置文件,例如如下命令:
kubectl apply -f prometheus-prometheus.yaml -n monitoring
说明:
请替换
prometheus-prometheus.yaml
为正确的配置文件路径如果 Prometheus 部署在其它 namespace 中,请修改其中的
-n monitoring
为正确的 namespace。