01
前言
观测云
观测云 [1] 是一款专为云平台、云原生、应用及业务相关需求设计的统一实时监测应用,集成了指标、日志和追踪三大信号,覆盖测试、预发和生产环境,实现对软件开发全生命周期的可观测性。通过观测云,企业能够构建完整的应用全链路可观测性,提升整体 IT 架构的透明度和可控性。作为一个强大的数据分析平台,观测云包括多个核心模块,如 DataKit [2] 统一数据采集器和 DataFlux Func 数据处理开发平台。
可观测性的数据流动
AutoMQ
AutoMQ [3],是基于云原生理念重新设计的新一代 Apache Kafka 发行版,在 100% 兼容 Apache Kafka 协议的前提下提供了高达 10 倍的成本优势和弹性优势。并且 AutoMQ 将数据完全存储在 S3 上,因此在集群扩容时无需数据复制即可快速应对突发的流量洪峰。相比之下,Apache Kafka 在扩容后需要大量带宽进行分区数据的复制,难以应对突发流量。通过自动扩缩容、自动流量平衡和自动故障恢复等功能,AutoMQ 实现了系统的高度自治,无需人工干预即可实现更高水平的可用性。AutoMQ 的共享存储结构:
02
AutoMQ 的可观测接口
由于 AutoMQ 对 Kafka 的完全兼容,并且支持开放基于 Prometheus 的 Metrics 收集端口,因此可以利用观测云提供的数据采集工具 DataKit 与观测云平台进行集成。方便用户对 AutoMQ 集群的状态进行监测和管理,并且观测云平台支持用户自定义地对 Metrics 数据进行聚合以及查询,通过给定的仪表盘模板或者自定义仪表盘,我们可以有效地对 AutoMQ 集群的各种信息进行统计,比如常见 Topics, Brokers, Partitions 以及 Group 统计数据。
除此之外,根据 Metrics 可观测数据,我们也可以查询到 AutoMQ 集群运行过程中遇到的错误情况以及当前系统的各种占用指标,如 JVM CPU 占用,JVM 堆占用和缓存大小,这些指标都能够帮助我们在集群发送异常的情况下,迅速的发现问题并进行解决,这对于系统的高可用和快速恢复都是非常有利的。接下来,我将介绍如何使用观测云平台进行 AutoMQ 集群状态的监测。
03
集成观测云的步骤
AutoMQ 开启 Metric 拉取接口
参考 AutoMQ 文档:集群方式部署 | AutoMQ [4] 部署启动前,添加如下配置参数开启 Prometheu的拉取接口。通过以下参数启动 AutoMQ 集群以后,每个节点将会额外开放一个 HTTP 接口供我们拉取 AutoMQ 的监控指标。指标的格式均遵循 Prometheus Metrics 的格式。
bin/kafka-server-start.sh ...
--override s3.telemetry.metrics.exporter.type=prometheus
--override s3.metrics.exporter.prom.host=0.0.0.0
--override s3.metrics.exporter.prom.port=8890
....
当启用 AutoMQ 监控指标后,可以在任意一台节点上通过 HTTP 协议拉取到 Prometheus 格式的监控指标,地址为:http://{node_ip}:8890,响应结果示例如下:
....
kafka_request_time_mean_milliseconds{otel_scope_name="io.opentelemetry.jmx",type="DescribeDelegationToken"} 0.0 1720520709290
kafka_request_time_mean_milliseconds{otel_scope_name="io.opentelemetry.jmx",type="CreatePartitions"} 0.0 1720520709290
...
关于指标介绍,可以参考 AutoMQ 官网文档:Metrics | AutoMQ [5] 。
安装和配置 DataKit 采集工具
DataKit 是一款由观测云提供的开源的监控采集工具,支持 Promethues Metrics 的拉取。我们可以通过 DataKit 来拉取 AutoMQ 上的监控数据汇总到观测云平台。
安装 DataKit 工具
Tips: 更多 DataKit 安装细节参考文档:主机安装 - 观测云文档 [6]。
首先,注册观测云账号并登录,随后在主界面点击左侧「集成」选择顶部「DataKit」,即可看到 DataKit 的安装命令:
DK_DATAWAY="https://openway.guance.com?token=<TOKEN>" bash -c "$(curl -L https://static.guance.com/datakit/install.sh)"
拷贝以上命令,在集群中的所有节点上运行 DataKit 的安装命令完成安装。
Tips: 集群中所有需要被监控的 Broker 都需要安装 DataKit.
执行安装命令成功后使用命令datakit monitor可以验证 DataKit 是否成功安装。
AutoMQ 采集器配置与生效
这里我们要在每个待采集数据的节点所在的服务器上配置好 DataKit 的 AutoMQ 采集器配置。进入目录/usr/local/datakit/conf.d/prom,创建一个采集器配置文件 prom.conf。采集器配置会包括开放的可观测数据接口、采集器名称、prom 实例名以及重要的采集间隔 interval 等,你可以根据需要对每个服务器上的配置进行一些调整:
[[inputs.prom]]
urls = ["http://clientIP:8890/metrics"] # clientIP 为你自己的服务器地址
source = "AutoMQ"
## Keep Exist Metric Name
## If the keep_exist_metric_name is true, keep the raw value for field names.
keep_exist_metric_name = true
[inputs.prom.tags_rename]
overwrite_exist_tags = true
[inputs.prom.tags_rename.mapping]
service_name = "job"
service_instance_id = "instance"
[inputs.prom.tags]
component="AutoMQ"
interval = "10s"
调整参数说明 :
执行 datakit service -R 重启该节点的 DataKit 生效采集器配置。
04
通过观测云可视化管理 AutoMQ 集群
观测云平台已经集成了 AutoMQ 并且提供了多个默认的仪表盘,可以前往 仪表盘示例 [7] 查看。下面是其中几种常用模板示例,我们介绍一下他们的功能:
集群监控
主要显示的是当前活跃 Broker 的数量,以及总的 Topics 数量、Partitions 分区数量等,除此之外,我们也可以指定具体查询哪个节点,这个可以在 Cluster_id 里选择。
通过监测 Kafka 集群的状态,我们可以及时发现并解决潜在的问题,如节点故障、磁盘空间不足、网络延迟等,以保证系统更加可控稳定。
Broker 监控
观测云的 AutoMQ Broker 仪表盘描述了所有 Broker 的一些指标、比如连接数、分区数、每秒接受到的消息数量 ops 以及每秒输入和输出的数据量,单位是 Byte。
Topic 监控
这里就是对于所有节点中包含的所有 Topic 的信息总览了,当然你也可以像上面介绍的那样,指定查询某个节点下的 Topic 信息。这些指标主要包括每个 Topic 占用的空间大小,以及接受到的消息数量,还有 Request Throughput 表示单位时间内处理请求的能力。
至此,我们通过观测云成功监测了 AutoMQ 集群状态,并且仪表盘中的数据都是由 Metrics 指标进行聚合或查询的方式得到的。
05
总结
本文我们介绍了如何将观测云平台与 AutoMQ 完美地结合在一起,完成对 AutoMQ 集群状态信息的监测,其实还有更多进一步的高级操作,比如自定义的报警功能,自定义的数据查询等,这些都可以通过官方给出的规则进行 DIY,你可以手动试验一下这些操作,相信你会找到适合你的需求。同时也希望这篇文章能够在你结合观测云平台和 AutoMQ 时有所帮助!
引用
[1] 观测云:https://docs.guance.com/getting-started/product-introduction/
[2] DataKit: https://docs.guance.com/datakit/
[3] AutoMQ: https://www.automq.com
[4] 集群方式部署 AutoMQ:https://docs.automq.com/zh/docs/automq-opensource/IyXrw3lHriVPdQkQLDvcPGQdnNh
[5] 主机安装 - 观测云文档:https://docs.guance.com/datakit/datakit-install/
[6] Metrics | AutoMQ:https://docs.automq.com/zh/docs/automq-opensource/ArHpwR9zsiLbqwkecNzcqOzXn4b
[7] 仪表盘示例:https://console.guance.com/scene/dashboard/createDashboard?w=wksp_63b96920660e4962a07429b65ef163e7&la+k=Scene
END
关于我们
我们是来自 Apache RocketMQ 和 Linux LVS 项目的核心团队,曾经见证并应对过消息队列基础设施在大型互联网公司和云计算公司的挑战。现在我们基于对象存储优先、存算分离、多云原生等技术理念,重新设计并实现了 Apache Kafka 和 Apache RocketMQ,带来高达 10 倍的成本优势和百倍的弹性效率提升。
🌟 GitHub 地址:https://github.com/AutoMQ/automq
💻 官网:https://www.automq.com?utm_source=openwrite