应用运维管理 AOM-PostgreSQL Exporter接入AOM实现指标监控:在CCE集群部署PostgreSQL Exporter

时间:2025-02-12 15:01:02

在CCE集群部署PostgreSQL Exporter

  1. 登录CCE控制台。
  2. 单击已接入的集群名称,进入该集群的管理页面。
  3. 执行以下操作完成Exporter部署。

    1. 使用Secret管理PostgreSQL密码。

      在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”完成YAML配置。YAML配置说明:使用Kubernetes的Secret来管理密码并对密码进行加密处理,在启动PostgreSQL Exporter的时候直接使用Secret Key,需要调整对应的password。

      YAML 配置示例如下:

      apiVersion: v1kind: Secretmetadata:    name: postgres-testtype: OpaquestringData:    username: postgres #对应 PostgreSQL 用户名    password: *********** #对应 PostgreSQL 密码
    2. 部署PostgreSQL Exporter。

      在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”,以YAML的方式部署Exporter。

      YAML配置示例如下(请直接复制下面的内容,根据实际业务调整相应的参数):

      apiVersion: apps/v1kind: Deploymentmetadata:  name: postgres-test # 根据业务需要调整成对应的名称,建议加上 PG 实例的信息  namespace: default #需要和 postgres 的 service 在同一命名空间  labels:    app: postgres    app.kubernetes.io/name: postgresqlspec:  replicas: 1  selector:    matchLabels:      app: postgres      app.kubernetes.io/name: postgresql  template:    metadata:      labels:        app: postgres        app.kubernetes.io/name: postgresql    spec:      containers:      - name: postgres-exporter        image: swr.cn-north-4.myhuaweicloud.com/aom-exporter/postgres-exporter:v0.8.0 # 上传至 SWR 的 postgres-exporter 镜像        args:          - "--web.listen-address=:9187" # Exporter 开启的端口          - "--log.level=debug" # 日志级别        env:          - name: DATA_SOURCE_USER            valueFrom:              secretKeyRef:                name: postgres-test # 对应上一步中的 Secret 的名称                key: username  # 对应上一步中的 Secret Key          - name: DATA_SOURCE_PASS             valueFrom:              secretKeyRef:                name: postgres-test # 对应上一步中的 Secret 的名称                key: password  # 对应上一步中的 Secret Key          - name: DATA_SOURCE_URI            value: "x.x.x.x:5432/postgres?sslmode=disable"  # 对应的连接信息        ports:        - name: http-metrics          containerPort: 9187
    3. 获取指标。
      通过“curl http://exporter:9187/metrics”无法获取Postgres实例运行时间,可以通过自定义一个queries.yaml来获取该指标。
      1. 创建一个包含queries.yaml的配置。
      2. 将配置作为Volume挂载到Exporter某个目录下。
      3. 通过extend.query-path来使用配置,将上述的Secret以及Deployment进行汇总,汇总后的YAML如下所示:
        # 以下 document 创建一个包含自定义指标的 queries.yaml---apiVersion: v1kind: ConfigMapmetadata:  name: postgres-test-configmap  namespace: defaultdata:  queries.yaml: |    pg_postmaster:      query: "SELECT pg_postmaster_start_time as start_time_seconds from pg_postmaster_start_time()"      master: true      metrics:        - start_time_seconds:            usage: "GAUGE"            description: "Time at which postmaster started"# 以下 document 挂载了 Secret 和 ConfigMap ,定义了部署 Exporter 相关的镜像等参数---apiVersion: apps/v1kind: Deploymentmetadata:  name: postgres-test  namespace: default  labels:    app: postgres    app.kubernetes.io/name: postgresqlspec:  replicas: 1  selector:    matchLabels:      app: postgres      app.kubernetes.io/name: postgresql  template:    metadata:      labels:        app: postgres        app.kubernetes.io/name: postgresql    spec:      containers:        - name: postgres-exporter          image: wrouesnel/postgres_exporter:latest          args:            - "--web.listen-address=:9187"            - "--extend.query-path=/etc/config/queries.yaml"            - "--log.level=debug"          env:            - name: DATA_SOURCE_USER              valueFrom:                secretKeyRef:                  name: postgres-test-secret                  key: username            - name: DATA_SOURCE_PASS              valueFrom:                secretKeyRef:                  name: postgres-test-secret                  key: password            - name: DATA_SOURCE_URI              value: "x.x.x.x:5432/postgres?sslmode=disable"          ports:            - name: http-metrics              containerPort: 9187          volumeMounts:            - name: config-volume              mountPath: /etc/config      volumes:        - name: config-volume          configMap:            name: postgres-test-configmap---apiVersion: v1kind: Servicemetadata:  name: postgresspec:  type: NodePort  selector:    app: postgres    app.kubernetes.io/name: postgresql  ports:    - protocol: TCP      nodePort: 30433      port: 9187      targetPort: 9187
      4. 访问地址:
        http://{集群任意节点的公网IP}:30433/metrics,即可通过自定义的queries.yaml查询到Postgres实例启动时间指标。
        图1 访问地址

support.huaweicloud.com/bestpractice-aom2/aom_05_0017.html