datadog
datadog 插件支持与云应用程序最常用的可观测性服务之一 Datadog 集成。启用后,该插件会通过 UDP 协议将指标推送到 Datadog agent 附带的 DogStatsD 服务器。
指标
默认情况下,该插件导出以下指标。
所有指标都将以元数据中配置的 namespace 为前缀。例如,如果 namespace 配置为 apisix,你将在 Datadog 中看到 request.counter 指标导出为 apisix.request.counter。
| 名称 | 类型 | 描述 |
|---|---|---|
| request.counter | counter | 接收到的请求数量。 |
| request.latency | histogram | 处理请求所花费的时间(毫秒)。 |
| upstream.latency | histogram | 将请求代理到上游服务器直到接收到响应所花费的时间(毫秒)。 |
| apisix.latency | histogram | APISIX agent 处理请求所花费的时间(毫秒)。 |
| ingress.size | timer | 请求体大小(字节)。 |
| egress.size | timer | 响应体大小(字节)。 |
标签
该插件导出带有以下 标签 的指标。
如果没有适合特定标签的值,则该标签将被省略。
| 名称 | 描述 |
|---|---|
| route_name | 路由的名称。如果不存在或 prefer_name 属性设置为 false,则回退到路由 ID。 |
| service_name | 服务的名称。如果不存在或 prefer_name 属性设置为 false,则回退到服务 ID。 |
| consumer | 消费者的用户名(如果路由连接到消费者)。 |
| balancer_ip | 处理当前请求的上游负载均衡器的 IP 地址。 |
| response_status | HTTP 响应状态码,例如 201、404 或 503。 |
| response_status_class | HTTP 响应状态码类别,例如 2xx、4xx 或 5xx。在 APISIX 3.14.0 及更高版本和 API7 企业版 3.9.0 及更高版本中可用。 |
| scheme | 请求协议,例如 HTTP 和 gRPC。 |
| path | HTTP 路径模式。仅当参数 include_path 设置为 true 时可用。在 APISIX 3.14.0 及更高版本和 API7 企业版 3.9.0 及更高版本中可用。 |
| method | HTTP 方法。仅当属性 include_method 设置为 true 时可用。在 APISIX 3.14.0 及更高版本和 API7 企业版 3.9.0 及更高版本中可用。 |
示例
以下示例展示了如何在不同场景下配置 datadog 插件。
在继续之前,请确保你已安装 Datadog agent,它会从受监控对象收集事件和指标并将其发送到 Datadog。
在 Docker 中启动 Datadog agent:
docker run -d \
--name dogstatsd-agent \
// Annotate 1
-e DD_API_KEY=35ebe12345678dec56218930b79fdb4cf \
// Annotate 2
-e DD_SITE="us5.datadoghq.com" \
// Annotate 3
-e DD_HOSTNAME=apisix.quickstart \
// Annotate 4
-e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
-p 8125:8125/udp \
datadog/dogstatsd:latest
❶ DD_API_KEY: 替换为你的 API 密钥。
❷ DD_SITE: 替换为你的 Datadog 站点。
❸ DD_HOSTNAME: 替换为你的主机名。
❹ DD_DOGSTATSD_NON_LOCAL_TRAFFIC: 设置为 true 以监听来自其他容器的 DogStatsD 数据包。
你可以通过环境变量配置 agent 主配置文件 datadog.yaml 中的大多数选项,前缀为 DD_。有关更多信息,请参阅 agent 环境变量。
更新 Datadog Agent 地址和其他元数据
默认情况下,插件期望 DogStatsD 服务器在 127.0.0.1:8125 上可用。要自定义地址和其他元数据,请更新 插件元数据,如下所示:
curl "http://127.0.0.1:9180/apisix/admin/plugin_metadata/datadog" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
// Annotate 1
"host": "192.168.0.90",
// Annotate 2
"port": 8125,
// Annotate 3
"namespace": "apisix",
// Annotate 4
"constant_tags": [
"source:apisix",
"service:custom"
]
}'
❶ 如果你在 Docker 中同时运行 APISIX 和 Datadog agent,请替换为你的私有 IP 地址。
❷ 设置为 Datadog agent 监听端口。
❸ 设置所有指标的前缀命名空间。
❹ 配置常量标签。
要恢复为默认配置,请向 datadog 插件元数据发送一个空体的请求:
curl "http://127.0.0.1:9180/apisix/admin/plugin_metadata/datadog" -X PUT -d '{}'
监控路由指标
以下示例展示了如何将特定路由的指标发送到 Datadog。
创建一个带有 datadog 插件和一些可选配置项的路由:
curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "datadog-route",
"uri": "/anything",
"plugins": {
"datadog": {
// Annotate 1
"batch_max_size" : 1,
// Annotate 2
"max_retry_count": 0
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org": 1
}
}
}'
❶ batch_max_size: 设置为 1 以立即发送指标。
❷ max_retry_count: 设置为 0 以在指标发送失败时不重试。
向之前创建的路由发送一些请求:
curl "http://127.0.0.1:9080/anything"
在 Datadog 中,从左侧菜单选择 Metrics 并进入 Explorer。选择 apisix.ingress.size.count 作为指标。你应该看到反映生成的请求数量的计数:
