跳到主要内容

datadog

datadog 插件支持与云应用程序最常用的可观测性服务之一 Datadog 集成。启用后,该插件会通过 UDP 协议将指标推送到 Datadog agent 附带的 DogStatsD 服务器。

指标

默认情况下,该插件导出以下指标。

所有指标都将以元数据中配置的 namespace 为前缀。例如,如果 namespace 配置为 apisix,你将在 Datadog 中看到 request.counter 指标导出为 apisix.request.counter

名称类型描述
request.countercounter接收到的请求数量。
request.latencyhistogram处理请求所花费的时间(毫秒)。
upstream.latencyhistogram将请求代理到上游服务器直到接收到响应所花费的时间(毫秒)。
apisix.latencyhistogramAPISIX agent 处理请求所花费的时间(毫秒)。
ingress.sizetimer请求体大小(字节)。
egress.sizetimer响应体大小(字节)。

标签

该插件导出带有以下 标签 的指标。

如果没有适合特定标签的值,则该标签将被省略。

名称描述
route_name路由的名称。如果不存在或 prefer_name 属性设置为 false,则回退到路由 ID。
service_name服务的名称。如果不存在或 prefer_name 属性设置为 false,则回退到服务 ID。
consumer消费者的用户名(如果路由连接到消费者)。
balancer_ip处理当前请求的上游负载均衡器的 IP 地址。
response_statusHTTP 响应状态码,例如 201404503
response_status_classHTTP 响应状态码类别,例如 2xx4xx5xx。在 APISIX 3.14.0 及更高版本和 API7 企业版 3.9.0 及更高版本中可用。
scheme请求协议,例如 HTTP 和 gRPC。
pathHTTP 路径模式。仅当参数 include_path 设置为 true 时可用。在 APISIX 3.14.0 及更高版本和 API7 企业版 3.9.0 及更高版本中可用。
methodHTTP 方法。仅当属性 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 作为指标。你应该看到反映生成的请求数量的计数:

apisix-datadog-ingress-size-count