写点什么

AutoMQ 集成 Prometheus/VictoriaMetrics

作者:AutoMQ
  • 2025-02-21
    浙江
  • 本文字数:5452 字

    阅读完需:约 18 分钟

AutoMQ 集成 Prometheus/VictoriaMetrics

引言

在现代企业中,随着数据处理需求的不断增长,AutoMQ [1] 作为一种高效、低成本的流处理系统,逐渐成为企业实时数据处理的关键组件。然而,随着集群规模的扩大和业务复杂性的增加,确保 AutoMQ 集群的稳定性、高可用性和性能优化变得尤为重要。因此,集成一个强大而全面的监控系统对于维护 AutoMQ 集群的健康运行至关重要。Prometheus [2] 以其强大的数据采集和查询能力,成为企业监控 AutoMQ 集群的理想选择。而为了应对 Prometheus 在大规模数据存储上的局限性,VictoriaMetrics [3] 作为高效的时序数据库存储后端,能够提供更强的存储和查询性能。通过集成 Prometheus 和 VictoriaMetrics,企业可以实现对 AutoMQ 集群的全面监控,确保系统的高可用性和性能优化。

AutoMQ 概述

AutoMQ 是一种基于云重新设计的流处理系统,它在保持与 Apache Kafka 100%兼容的前提下,通过将存储分离至对象存储,显著提升了系统的成本效益和弹性能力。具体来说,AutoMQ 通过构建在 S3 上的流存储库 S3Stream,将存储卸载至云厂商提供的共享云存储 EBS 和 S3,提供低成本、低延时、高可用、高可靠和无限容量的流存储能力。与传统的 Shared Nothing 架构相比,AutoMQ 采用了 Shared Storage 架构,显著降低了存储和运维的复杂性,同时提升了系统的弹性和可靠性。


AutoMQ 的设计理念和技术优势使其成为替换企业现有 Kafka 集群的理想选择。通过采用 AutoMQ,企业可以显著降低存储成本,简化运维,并实现集群的自动扩缩容和流量自平衡,从而更高效地应对业务需求的变化。此外,AutoMQ 的架构支持高效的冷读操作和服务零中断,确保系统在高负载和突发流量情况下的稳定运行。


Prometheus 概述

Prometheus 是一款开源的系统监控和报警工具包,最初由 SoundCloud 开发,并于 2012 年开源。它具有强大的数据采集、存储和查询能力,能够实时监控系统和应用的性能指标。Prometheus 采用多维数据模型,通过标签对监控数据进行标记和查询,支持灵活的查询语言 PromQL。Prometheus 的主要优势包括高效的数据采集、强大的查询功能和丰富的报警机制,广泛应用于云原生生态系统中。


然而,Prometheus 在大规模数据存储上存在一定的局限性,特别是在长期存储和高并发查询的场景下,存储性能和查询效率可能会受到影响。因此,需要引入一个高效的存储后端来解决这些问题。

VictoriaMetrics 概述

VictoriaMetrics 是一款高性能、开源的时序数据库,专为高并发数据写入和查询而设计。它具有高效的数据压缩和存储能力,能够在低硬件资源消耗的情况下,提供高吞吐量的数据写入和查询性能。VictoriaMetrics 支持 Prometheus 的远程存储接口,可以无缝集成到现有的 Prometheus 监控体系中。下图是 VictoriaMetrics 的架构图:



通过将 VictoriaMetrics 作为 Prometheus 的存储后端,企业可以显著提升监控系统的存储和查询性能,满足大规模数据存储和高并发查询的需求。VictoriaMetrics 的主要优势包括高效的数据压缩、快速的数据查询和低资源消耗,使其成为 Prometheus 理想的存储后端选择。下面,我将着手进行 AutoMQ,Prometheus 以及 VictoriaMetrics 的部署。

前置条件

  • 部署一个可用的 AutoMQ 节点/集群,并开放 Metrics 采集端口

  • 部署 VictoriaMetrics 作为 Prometheus 的存储后端

  • 部署 Prometheus 以获取 Metrics 数据

部署 AutoMQ、VictoriaMetrics、Prometheus

部署 AutoMQ

参考 AutoMQ 文档:集群方式部署 | AutoMQ [5] 。在部署启动前,添加如下配置参数以开启 Prometheus 的拉取接口。通过以下参数启动 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 1720520709290kafka_request_time_mean_milliseconds{otel_scope_name="io.opentelemetry.jmx",type="CreatePartitions"} 0.0 1720520709290...
复制代码


关于指标介绍,可以参考 AutoMQ 官网文档:Metrics | AutoMQ [6] 。

部署 VictoriaMetrics

参考文档:VictoriaMetrics [7]。VictoriaMetrics 支持二进制版本、 Docker 镜像和源代码部署。我们这里选择通过 Docker 进行部署。通过执行下面的命令启动 VictoriaMetrics 容器,并映射数据文件到文件夹/home/VictoriaMetrics/data下,方便查看数据导入变化:


# 新建data文件夹sudo mkdir -p /home/VictoriaMetrics/data# docker 启动命令,挂载数据文件夹docker run -d --name victoria-metrics \  -p 8428:8428 \  -v /home/VictoriaMetrics/data:/victoria-metrics-data \  victoriametrics/victoria-metrics
复制代码


验证是否安装成功,浏览器访问:http://{client_ip}:8428


部署 Prometheus

Prometheus 可以通过下载二进制包部署,也可以通过 Docker 方式部署。以下是这两种部署方式的介绍。

二进制部署

为了方便使用,你可以新建一个脚本,并根据需要修改 Prometheus 的下载版本,最后执行脚本即可完成部署。首先,新建脚本:


cd /homevim install_prometheus.sh# !!! 粘贴下面的脚本内容 并保存退出# 授予权限chmod +x install_prometheus.sh# 执行脚本./install_prometheus.sh
复制代码


脚本内容如下:


version=2.45.3filename=prometheus-${version}.linux-amd64mkdir -p /opt/prometheuswget https://github.com/prometheus/prometheus/releases/download/v${version}/${filename}.tar.gztar xf ${filename}.tar.gzcp -far ${filename}/*  /opt/prometheus/
# config as a service cat <<EOF >/etc/systemd/system/prometheus.service[Unit]Description="prometheus"Documentation=https://prometheus.io/After=network.target
[Service]Type=simple
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --web.enable-lifecycle --web.enable-remote-write-receiver
Restart=on-failureSuccessExitStatus=0LimitNOFILE=65536StandardOutput=syslogStandardError=syslogSyslogIdentifier=prometheus

[Install]WantedBy=multi-user.targetEOF
systemctl enable prometheussystemctl restart prometheussystemctl status prometheus
复制代码


随后修改 Prometheus 的配置文件,增加采集 AutoMQ 可观测数据的任务,并重启 Prometheus,执行命令:


# config 配置文件内容填下面的vim /opt/prometheus/prometheus.yml# 重启 Prometheussystemctl restart prometheus
复制代码


配置文件内容参考如下,请将下列中的client_ip修改为 AutoMQ 开放的可观测数据暴露地址:


# my global configglobal:  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "automq" static_configs: - targets: ["{client_ip}:8890"]
# config victoriaMetrics IO portremote_write: - url: "http://{client_ip}:8428/api/v1/write"
remote_read: - url: "http://{client_ip}:8428/api/v1/read"
复制代码


部署完成后,我们可以通过浏览器访问 Prometheus,查看是否真正采集到了 AutoMQ 的 Metrics 数据,访问http://{client_ip}:9090/targets


Docker 部署

如果你已经有一个在运行的 Prometheus Docker 容器,请先执行命令删除该容器:


docker stop prometheusdocker rm prometheus
复制代码


新建配置文件,并在 Docker 启动时进行挂载:


mkdir -p /opt/prometheusvim /opt/prometheus/prometheus.yml# 配置内容参考上述 “二进制部署” 中的配置
复制代码


启动 Docker 容器:


docker run -d \  --name=prometheus \  -p 9090:9090 \  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \  -m 500m \  prom/prometheus \  --config.file=/etc/prometheus/prometheus.yml \  --enable-feature=otlp-write-receiver \  --web.enable-remote-write-receiver
复制代码


这样你便得到了一个采集 AutoMQ Metrics 的 Prometheus 服务,关于更多 AutoMQ Metrics 与 Prometheus 集成的介绍,可以参考:将 Metrics 集成到 Prometheus | AutoMQ [8]。

验证集成结果

VictoriaMetrics 数据验证

VictoriaMetrics 提供的 DashBorad,可以通过http://{client_ip}:8428/vmui访问可视化面板,其中基础占用为:



数据文件验证。通过 data 文件夹发现已经存在了相应的数据文件:


root@debian: ls /home/VictoriaMetrics/data/small/2024_07/17E5088F4DC9C068  17E5088F4DC9C073  17E5088F4DC9C0B3  17E509EE0189D399  17E509EE0189D39C  17E509EE0189D39F  17E509EE0189D3A2  17E509EE0189D3A517E5088F4DC9C06A  17E5088F4DC9C075  17E509EE0189D38D  17E509EE0189D39A  17E509EE0189D39D  17E509EE0189D3A0  17E509EE0189D3A3  17E509EE0189D3A617E5088F4DC9C071  17E5088F4DC9C07B  17E509EE0189D398  17E509EE0189D39B  17E509EE0189D39E  17E509EE0189D3A1  17E509EE0189D3A4  parts.json
复制代码


通过访问状态 http://{client_ip}:8428/api/v1/status/tsdb,可以得到 Json 文件:


 "status": "success",    "data": {        "totalSeries": 3125,        "totalLabelValuePairs": 15564,        "seriesCountByMetricName": [            {                "name": "prometheus_http_request_duration_seconds_bucket",                "value": 150            },            {                "name": "prometheus_http_response_size_bytes_bucket",                "value": 135            },            {                "name": "kafka_request_queue_time_50p_milliseconds",                "value": 90            },...............
复制代码

Grafana 仪表盘(可选)

由于我们已经将 VictoriaMetrics 作为 Prometheus 的存储,因此我们可以将其作为 Grafana 的数据源,即http://{client_ip}:8428,以此来获取 AutoMQ 集群的状态信息。关于 Grafana 的模板文件,可以参考 AutoMQ 官方模板:grafana [9]。最终演示效果为:


Cluster Overview: 提供了集群级别的监控信息,包括节点数量、数据大小、集群流量等指标。此外,还提供了 Topic、Group、Broker 等维度的概览指标,并支持进一步查看详细监控信息的下钻功能。



至此,我们的集成过程就结束了,更多可探索的功能可参考 VictoriaMetrics 官方文档 [10]。

总结

通过本文的介绍,我们详细探讨了如何集成 AutoMQ、Prometheus 和 VictoriaMetrics,以实现对 AutoMQ 集群的全面监控。我们首先介绍了每个组件的功能和优势,解释了为什么选择 Prometheus 作为监控系统以及为什么需要 VictoriaMetrics 作为 Prometheus 的存储后端。接着,我们逐步讲解了如何部署和配置 AutoMQ、VictoriaMetrics 和 Prometheus,并验证了集成效果。


通过这种集成方案,企业可以实现以下优势:


  1. 高效的数据采集和存储:Prometheus 负责高效的数据采集,而 VictoriaMetrics 提供高效的数据存储和压缩能力,确保系统在低硬件资源消耗的情况下,存储大量时序数据。

  2. 快速的数据查询:VictoriaMetrics 提供快速的数据查询性能,能够满足高并发查询的需求,确保在大规模数据存储场景下的高效查询。

  3. 无缝集成:VictoriaMetrics 支持 Prometheus 的远程存储接口,可以无缝集成到现有的 Prometheus 监控体系中,提升系统的整体性能和稳定性。


通过这种集成,企业可以实现对 AutoMQ 集群的全面监控,确保系统的高可用性和性能优化,及时发现和解决潜在问题,优化系统性能,确保业务的连续性和稳定性。未来,随着业务需求的不断变化和技术的不断进步,我们还可以进一步探索和优化监控方案,以满足更复杂的应用场景和更高的性能要求。

引用

[1] AutoMQ: https://www.automq.com/zh


[2] Prometheus:https://prometheus.io/docs/prometheus/latest/getting_started/


[3] VictoriaMetrics: https://docs.victoriametrics.com/


[4] VictoriaMetrics Structure: https://docs.victoriametrics.com/cluster-victoriametrics/


[5] 集群方式部署 | AutoMQ: https://docs.automq.com/zh/automq/getting-started/cluster-deployment-on-linux


[6] Metrics | AutoMQ: https://docs.automq.com/zh/automq/observability/metrics


[7] VictoriaMetrics 安装文档: https://docs.victoriametrics.com/


[8] 将 Metrics 集成到 Prometheus: https://docs.automq.com/zh/automq/observability/integrating-metrics-with-prometheus


[9] grafana: https://github.com/AutoMQ/automq/tree/main/docker/telemetry/grafana/provisioning/dashboards


[10] VictoriaMetrics 官方文档:https://docs.victoriametrics.com/

用户头像

AutoMQ

关注

还未添加个人签名 2023-12-02 加入

还未添加个人简介

评论

发布
暂无评论
AutoMQ 集成 Prometheus/VictoriaMetrics_云计算_AutoMQ_InfoQ写作社区