MongoDB Exporter接入AOM实现指标监控
应用场景
使用MongoDB过程中需要对MongoDB运行状态进行监控,以便了解MongoDB服务是否运行正常,排查MongoDB故障问题原因。Prometheus监控服务提供了CCE容器场景下基于Exporter的方式来监控MongoDB运行状态。本文介绍如何部署Exporter以及实现MongoDB Exporter告警接入等操作。
约束与限制
为了方便安装管理Exporter,推荐使用云容器引擎 CCE进行统一管理。
前提条件
- CCE服务已拥有CCE集群,已安装MongoDB。
- 服务已接入可观测Prometheus监控并接入CCE集群,具体请参见Prometheus实例 for CCE。
- 已将mongodb_exporter镜像上传到SWR,具体操作请参见使用容器引擎客户端上传镜像。
在CCE集群部署MongoDB Exporter
- 登录CCE控制台。
- 单击已接入的CCE集群名称,进入该集群的管理页面。
- 执行以下操作完成Exporter部署。
- 配置密钥。
在左侧导航栏中选择“配置与密钥”,在页面右上角单击“YAML创建”。配置密钥的详细操作可参考创建密钥。
YAML配置示例如下,密码已按照Opaque加密:
apiVersion: v1 kind: Secret metadata: name: mongodb-secret-test namespace: default type: Opaque stringData: datasource: "mongodb://{user}:{passwd}@{host1}:{port1},{host2}:{port2},{host3}:{port3}/admin" # 对应连接URI
- 部署MongoDB Exporter。
在左侧导航栏中选择“工作负载”,在右上角单击“创建负载”,选择“负载类型”为无状态工作负载Deployment,选择需要的命名空间部署MongoDB Exporter。
如果以YAML的方式部署Exporter,更多Exporter详细参数介绍可参考mongodb_exporter,YAML配置示例如下:apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: mongodb-exporter # 根据业务需要调整,建议加上MongoDB实例的信息 name: mongodb-exporter # 根据业务需要调整,建议加上MongoDB实例的信息 namespace: default #需要和CCE集群中安装的MongoDB命名空间一致 spec: replicas: 1 selector: matchLabels: k8s-app: mongodb-exporter # 根据业务需要调整,建议加上MongoDB实例的信息 template: metadata: labels: k8s-app: mongodb-exporter # 根据业务需要调整,建议加上MongoDB实例的信息 spec: containers: - args: - --collect.database # 启用数据库指标采集 - --collect.collection # 启用集合指标采集 - --collect.topmetrics # 启用数据库表头指标信息采集 - --collect.indexusage # 启用索引使用统计信息采集 - --collect.connpoolstats # 启动MongoDB连接池统计信息采集 env: - name: MONGODB_URI valueFrom: secretKeyRef: name: mongodb-secret-test key: datasource image: swr.cn-north-4.myhuaweicloud.com/mall-swarm-demo/mongodb-exporter:0.10.0 imagePullPolicy: IfNotPresent name: mongodb-exporter ports: - containerPort: 9216 name: metric-port # 这个名称在配置抓取任务的时候需要 securityContext: privileged: false terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst imagePullSecrets: - name: default-secret restartPolicy: Always schedulerName: default-scheduler securityContext: { } terminationGracePeriodSeconds: 30 --- apiVersion: v1 kind: Service metadata: name: mongodb-exporter spec: type: NodePort selector: k8s-app: mongodb-exporter ports: - protocol: TCP nodePort: 30003 port: 9216 targetPort: 9216
- 验证MongoDB Exporter是否部署成功。
- 在工作负载列表中“无状态负载”页签下,单击3.b创建的无状态工作负载的名称,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露访问地址。
图1 查看日志
- 输入命令验证MongoDB Exporter是否部署成功,有指标数据返回则表示MongoDB Exporter已部署成功。有以下三种方法进行验证:
- 登录集群节点执行如下任意一种命令:
curl http://{集群IP}:9216/metrics
curl http://{集群任意节点私有IP}:30003/metrics
- 访问地址:http://{集群任意节点的公网IP}:30003/metrics。
图2 访问地址
- 在实例列表中单击操作列下的“更多 > 远程登录”,执行如下命令。
curl http://localhost:9216/metric
- 登录集群节点执行如下任意一种命令:
- 在工作负载列表中“无状态负载”页签下,单击3.b创建的无状态工作负载的名称,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露访问地址。
- 配置密钥。
配置CCE集群指标采集规则
通过“新增PodMonitor”方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。
- 登录AOM 2.0控制台。
- 在左侧菜单栏中选择“Prometheus监控 > 实例列表”。
- 在Prometheus实例列表中,单击CCE类型的Prometheus实例名称,进入该实例的详情界面。
- 在左侧导航栏单击“指标管理”,在“配置”页签下单击“PodMonitor”。
- 单击“新增PodMonitor”,在弹出的对话框中输入PodMonitor的相关参数信息,然后单击“确定”。
采集规则YAML配置样例如下,样例的指标采集的周期是30秒,所以等待大概30秒后才能在AOM的界面上查看到上报的指标:
apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: mongodb-exporter namespace: default spec: namespaceSelector: #选择要监控 Exporter Pod 所在的namespace matchNames: - default # exporter所在的命名空间 podMetricsEndpoints: - interval: 30s # 设置指标采集周期 path: /metrics # 填写Prometheus Exporter对应的Path的值,默认/metrics port: metric-port # 填写 Prometheus Exporter 对应的 YAML 的 ports的name selector: # 填写要监控Exporter Pod的Label标签,以定位目标Exporter matchLabels: k8s-app: mongodb-exporter
验证CCE集群指标上报到AOM
- 登录AOM 2.0控制台。
- 在左侧菜单栏中选择“Prometheus监控 > 实例列表”。
- 单击接入了该CCE集群的“prometheus for CCE”实例名称,进入实例详情页面。
- 在“指标管理”页面的“指标”页签下,选择对应集群。
- 选择job:{namespace}/MongoDB-exporter,可以查询到mongodb开头的自定义指标。
在AOM上配置仪表盘和告警
通过仪表盘功能可视化监控CCE集群数据,通过告警规则功能,在集群发生故障时能够及时发现并预警。
- 配置仪表盘图表
- 登录AOM 2.0控制台。
- 在左侧菜单栏中选择“仪表盘”,单击“创建仪表盘”新建一个仪表盘,详情可参见创建仪表盘。
- 在仪表盘页面选择实例类型为“Prometheus for CCE”的实例并单击“添加图表”,详情请参见添加图表至仪表盘。
- 配置告警
- 登录AOM 2.0控制台。
- 在左侧菜单栏中选择“告警管理 > 告警规则”。
- 在“指标或事件”页签下单击“创建”配置告警,详情请参见创建指标告警规则。