应用运维管理 AOM-PostgreSQL Exporter接入:PostgreSQL Exporter 部署
PostgreSQL Exporter 部署
- 登录CCE控制台。
- 单击已接入的集群名称,进入该集群的管理页面。
- 执行以下操作完成Exporter部署。
- 使用Secret管理PostgreSQL密码。
在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”完成YAML配置。YAML配置说明:使用Kubernetes的Secret来管理密码并对密码进行加密处理,在启动PostgreSQL Exporter的时候直接使用Secret Key,需要调整对应的password。
YAML 配置示例如下:
apiVersion: v1 kind: Secret metadata: name: postgres-test type: Opaque stringData: username: postgres password: you-guess #对应 PostgreSQL 密码
- 部署PostgreSQL Exporter。
在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”,以YAML的方式部署Exporter。
YAML配置示例如下(请直接复制下面的内容,根据实际业务调整相应的参数):
apiVersion: apps/v1 kind: Deployment metadata: name: postgres-test # 根据业务需要调整成对应的名称,建议加上 PG 实例的信息 namespace: default #需要和 postgres 的 service 在同一命名空间 labels: app: postgres app.kubernetes.io/name: postgresql spec: 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
- 获取指标。
通过“curl http://exporter:9187/metrics”无法获取Postgres实例运行时间,可以通过自定义一个queries.yaml来获取该指标。
- 创建一个包含queries.yaml的配置。
- 将配置作为Volume挂载到Exporter某个目录下。
- 通过extend.query-path来使用配置,将上述的Secret以及Deployment进行汇总,汇总后的YAML如下所示:
# 以下 document 创建一个包含自定义指标的 queries.yaml --- apiVersion: v1 kind: ConfigMap metadata: name: postgres-test-configmap namespace: default data: 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/v1 kind: Deployment metadata: name: postgres-test namespace: default labels: app: postgres app.kubernetes.io/name: postgresql spec: 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: v1 kind: Service metadata: name: postgres spec: type: NodePort selector: app: postgres app.kubernetes.io/name: postgresql ports: - protocol: TCP nodePort: 30433 port: 9187 targetPort: 9187
- 访问地址:
- 使用Secret管理PostgreSQL密码。