随着应用开发的复杂度增加,监控成为了应用的一个重要组成部分。及时、准确的监控既能满足快速迭代的周期性需求,又能够确保应用的稳定性和流畅性。如何选择一个适合的监控,以提升应用的可观测性,成为了每个开发者都必须面临的一道难题。

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 线上直播交流群,了解更多社区动态!

APISIX-Datadog 插件发布,助力用户提高系统的可观测性相关推荐

  1. 外部数据的合规引入助力银行用户营销系统冷启动

    易观数字化:银行由于内部数据源单一大都面临着用户冷启动困难的挑战,而合规地引入外部数据可以大幅提升用户画像的准确率和营销效果.虽然隐私计算为外部数据合规应用提供了新的解决途径,但仍需进一步探索落实. ...

  2. 最新AI创作系统V5.0.2+支持GPT4+支持ai绘画+实时语音识别输入+文章资讯发布功能+用户会员套餐

    最新AI创作系统V5.0.2+支持GPT4+支持ai绘画+实时语音识别输入+文章资讯发布功能+用户会员套餐! AI创作系统 一.源码系统介绍 二.AI创作系统程序下载 三.安装教程 四.主要功能展示 ...

  3. flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...

    简介: 友信金服公司推行全域的数据体系战略,通过打通和整合集团各个业务线数据,利用大数据.人工智能等技术构建统一的数据资产,如 ID-Mapping.用户标签等.友信金服用户画像项目正是以此为背景成立 ...

  4. 独行速众行远,BitTitan携手世纪互联蓝云助力用户数据完美迁移

    戳蓝字"CSDN云计算"关注我们哦! 近日,Saas解决方案提供商BitTitan宣布,将拓展与世纪互联蓝云的合作,双方将在中国的云服务市场上线BitTitan广受欢迎的Migra ...

  5. kafka redis vs 发布订阅_发布订阅的消息系统 Kafka的深度解析

    背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐 ...

  6. 游戏化设计:平台用户激励系统——互联网平台建设...

    文章是用户体验的最后一部分:平台用户的激励系统.文章内容包括什么是激励系统.怎么激励.内在激励还是外在激励.常见的激励系统四部分. 以下是数字化转型的分享线路图,您现在所在的位置为序号的分享:生态圈建 ...

  7. 提高系统开发效率的“银弹”——X-series可视化大规模应用开发工具集

    子曰,知之为知之,不知为不知,是知也. 知道自己不知道也是一种知道,但作为开发人员,面对一个系统时,无论是开发新功能还是维护老系统,我们更多的是处在一种茫然无助,不知道如何下手,甚至不知道自己不知道的 ...

  8. uniapp插件市场-涂图视频编辑-美妆-剪辑-微整形原生sdk插件发布-优雅草科技

    uniapp插件市场-涂图科技专业美颜SDK插件发布了-欢迎下载,优雅草科技与涂图科技达成战略合作 涂图视频后期处理sdk介绍: uniapp插件截图: 涂图科技介绍: 杭州微禾迅科技有限公司(下文简 ...

  9. 语音交友app开发中的用户积分系统

    引言 在当今数字时代,语音交友app已成为一种流行的社交工具.它们给用户提供了一个平台,在这里他们可以结交新朋友,分享他们的生活和信仰,并建立深厚的人际关系.然而,市场上存在大量的语音交友app,这使 ...

最新文章

  1. ubuntu如何设置环境变量,方便log输出路径?(shell文件)
  2. pix2pixHD笔记
  3. 微信小程序界面跳转(1)
  4. com接口传入、传出字符串的说明和例程
  5. python心理学实验程序_psychopy coder模式编写心理试验程序 字符程序和记录反应时...
  6. python爬虫贴吧_Python爬虫如何爬取贴吧内容
  7. 重启oracle服务顺序,oracle 10g]命令行启动ORACLE服务及顺序
  8. 差分进化算法原理及matlab代码实现
  9. VS code前端配置
  10. linux ftp mysql_linux搭建ftp服务——未连接mysql数据库的做法
  11. DQL、DML、DDL、DCL全名是啥?
  12. Atitit 图像金字塔原理与概率 attilax的理解总结qb23
  13. 北斗导航 | RAIM:基于速率监测的GNSS/INS完好性监测
  14. V4L2像素格式及其对应的含义
  15. 关于RJ45插座(HR911130C)硬件连接
  16. 离合器膜片弹簧的优化设计matlab,汽车离合器膜片弹簧结构优化设计(本科毕业论文设计)...
  17. 《Python金融大数据风控建模实战》 第15章 神经网络模型
  18. VS2019安装和使用教程
  19. docker容器的时间问题
  20. IBM AIX初级培训总结

热门文章

  1. 利用华为短信包开发短信功能中中文转码和msgId获取经验
  2. 基于tensorflow的手写数字识别
  3. Linux 中CPU占用过高问题
  4. HTML5CSS3基础:HTML的图片、音频、视频(3)
  5. 小项目:网易云音乐播放器
  6. 【内网安全】——内网主机发现
  7. SSM框架之Spring
  8. 制作属于自己的QQ机器人,超详细
  9. 怎样写标题才能获得流量,写标题的技巧
  10. 新能源汽车数据库-分类型/地区/级别月度销量2015-2021进出口数据