乐趣区

关于apisix:APISIXDatadog-插件发布助力用户提高系统的可观测性

随着利用开发的复杂度减少,监控成为了利用的一个重要组成部分。及时、精确的监控既能满足疾速迭代的周期性需要,又可能确保利用的稳定性和流畅性。如何抉择一个适宜的监控,以晋升利用的可观测性,成为了每个开发者都必须面临的一道难题。

Apache APISIX 将监控和可观测性从利用中解耦了进去,给开发人员带来了一个劣势:在构建利用的时候,只须要关注业务逻辑,而 Apache APISIX 能够和开发人员选定的监控平台对接,解决可观测性的问题。

Apache APISIX 最近公布了一个新的插件:APISIX-Datadog,以提供与 Datadog 监控平台的集成。这篇文章介绍了 APISIX-Datadog 插件的实现原理及性能。

APISIX-Datadog plugin 工作原理

APISIX-Datadog 插件将其自定义指标推送到 DogStatsD server。而 DogStatsD server 通过 UDP 连贯与 Datadog agent 捆绑在一起。DogStatsD 是 StatsD 协定的一个实现。它为 Apache APISIX agent 收集自定义指标,将其聚合成一个数据点,并将其发送到配置的 Datadog server。要理解更多对于 DogStatsD 的信息,请拜访 DogStatsD 文档。

当你启用 APISIX-Datadog 插件时,Apache APISIX agent 会在每个申请响应周期向 DogStatsD server 输入以下指标:

这些指标将被发送到 DogStatsD agent,并带有以下标签。如果任何特定的标签没有适合的值,该标签将被间接省略。

APISIX-Datadog 插件保护了一个带有 timer 的 buffer。当 timer 生效时,APISIX-Datadog 插件会将 buffer 的指标作为一个批量处理程序传送给本地运行的 DogStatsD server。这种办法通过重复使用雷同的 UDP 套接字,对资源的占用较少,而且因为能够配置 timer,所以不会始终让网络过载。

启动 Datadog Agent

1. 如果你曾经在应用 Datadog,你必须在零碎中装置一个 Datadog agent。它能够是一个 docker 容器,一个 pod 或二进制的包管理器。你只须要确保 Apache APISIX agent 能够达到 Datadog agent 的 8125 端口。

如果须要理解更多对于如何装置一个残缺的 Datadog agent,请拜访这里。

2. 如果你从没应用过 Datadog

  • 首先拜访 www.datadoghq.com,创立一个账户。
  • 而后依照上面演示的步骤生成一个 API 密钥。

3. APISIX-Datadog 插件只须要依赖 datadog/agent 的 dogstatsd 组件即可实现,因为该插件依照 statsd 协定通过规范的 UDP 套接字向 dogstatsd server 异步发送参数。咱们举荐应用独立的 datadog/dogstatsd 镜像,而不是应用残缺的 datadog/agent,因为 datadog/dogstatsd 的组件大小只有大概 11 MB,更加轻量化。而残缺的 datadog/agent 镜像的大小为 2.8 GB。

运行以下命令,将它作为一个容器来运行:

# 拉取 datadog/dogstatsd 的最新镜像
docker pull datadog/dogstatsd:latest
# 运行容器
docker run -d --name dogstatsd-agent -e DD_API_KEY=<Your API Key from step 2> -p 8125:8125/udp  datadog/dogstatsd

如果你在生产环境中应用 Kubernetes,你能够将 dogstatsd 作为一个 Daemonset 或多容器 Pod 与 Apache APISIX agent 一起部署。

如何在 Apache APISIX 中应用 Datadog

启用 APISIX-Datadog 插件

如果你曾经启动了 dogstatsd/agent,只需执行一条命令,就能够为指定路由启用 APISIX-Datadog 插件。

# 为指定路由启用 APISIX-Datadog 插件
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"plugins": {"datadog": {}       
    },      
    "upstream": {
        "type": "roundrobin",
        "nodes": {"127.0.0.1:1980": 1}      
    },      
    "uri": "/hello"
}'

启用 APISIX-Datadog 插件后,任何对端点 URI /hello 的申请都会产生上述指标,并推送到 Datadog agent 的本地 DogStatsD server。

自定义配置

如果启用 APISIX-Datadog 插件时,应用的是默认配置,dogstatsd 服务在 127.0.0.1:8125 可用。如果你想更新配置,请更新插件的元数据。

元数据参数解释

要理解更多对于如何无效地编写标签,请拜访这里。

/apisix/admin/plugin_metadata 端点发出请求,更新元数据,如下所示。

curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/datadog -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"host":"127.0.0.1","port": 8125,"constant_tags": ["source:apisix","service:custom"],"namespace":"apisix"}'

插件参数解释

与元数据相似,在启用 APISIX-Datadog 插件时,你也能够调整其余参数。

因为所有的字段都是可选的,如果你没有手动设置任何参数,APISIX-Datadog 插件将应用默认值设置这些参数。如果你须要更新任何参数,只需用更新的参数值更新所需的路由、服务或消费者。例如,上面的代码将 batch_max_size 批改为 10。

'{
...
"plugins": {
    "datadog": {"batch_max_size": 10}
}
... }'

停用 APISIX-Datadog 插件

你只需在插件配置中删除相应的 json 配置即可停用 APISIX-Datadog 插件。因为 Apache APISIX 插件是热加载的,因而删除 json 配置后,会立刻停用 APISIX-Datadog 插件,不须要从新加载。

# 为指定路由停用 APISIX-Datadog 插件
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"uri":"/hello","plugins": {},"upstream": {"type":"roundrobin","nodes": {"127.0.0.1:1980": 1}    
    }
}'

今晚(11 月 30 日)19:30 锁定 Apache APISIX 视频号,第二期大咖面对面直播如约而至,本期嘉宾邀请到了融云联结创始人兼 CTO – 杨攀、Kyligence 联结创始人兼首席架构师 – 史少锋、KubeSphere 创始人 – 周小四、Apache APISIX Committer – 王晔倞,众咖齐聚一起畅谈面对职场变动和转型分岔路,技术人投身 To B 畛域的问题与挑战。

  • 中国的 To B 企业为什么倒退很难?
  • 技术人投身 To B 畛域胜利的起因有哪些、转型失败的起因又有哪些?
  • “年纪轻了做技术,年纪大了转治理”这是不是惟一的路径?职业倒退还有哪些路径?
  • 开源根底软件 To B 商业化和传统根底软件 To B 商业化,经营形式有哪些不同?

入群交换

扫描下方二维码,或在公众号后盾回复【直播交换群】,退出 Apache APISIX 线上直播交换群,理解更多社区动静!

退出移动版