prometheus-operator使用process-exporter监控进程资源

Understanding Processes Running on Linux Host with Percona Monitoring and Management - Percona Database Performance Blogicon-default.png?t=M276https://www.percona.com/blog/2021/04/22/understanding-processes-running-on-linux-host-with-percona-monitoring-and-management/ 

部署process-exporter

GitHub - ncabatoff/process-exporter: Prometheus exporter that mines /proc to report on selected processes

配置文件

监控所有进程

process_names:
  - name: "{{.Comm}}"
    cmdline:
    - '.+'

docker部署

docker run -d --name process-exporter --network host  --privileged -v /proc:/host/proc -v `pwd`/config:/config ncabatoff/process-exporter:0.7.10 --procfs /host/proc -config.path /config/process-exporter.yaml

给process-exporter配置servicemonitor

按需替换Endpoints中的ip

apiVersion: v1
kind: Service
metadata:
  name: xxx-process
  namespace: xxx-system
spec:
  clusterIP: None
  ports:
  - name: xxx-process
    port: 9256
    protocol: TCP
    targetPort: 9256
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
---
apiVersion: v1
kind: Endpoints
metadata:
  name: xxx-process
  namespace: xxx-system
subsets:
- addresses:
  - ip: 10.10.13.200
  ports:
  - name: xxx-process
    port: 9256
    protocol: TCP
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: xxx-process
  namespace: xxx-system
spec:
  endpoints:
  - bearerTokenSecret:
      key: ""
    interval: 15s
    port: xxx-process
  jobLabel: xxx-process
  namespaceSelector: {}
  selector: {}

process-exporter的grafana dashboard

Node Processes [Designed for PMM2] dashboard for Grafana | Grafana Labs

<think>嗯,用户想知道如何在Kubernetes中部署和配置Prometheus MySQL Exporter。首先,我需要回忆一下相关的步骤和组件。记得Prometheus Operator通常会用ServiceMonitor来管理监控目标的发现,所以可能需要创建Service和ServiceMonitor资源。 首先,用户可能需要一个Deployment来运行mysqld-exporter的容器。需要指定镜像,比如prom/mysqld-exporter,并且要配置环境变量,比如DATA_SOURCE_NAME,这里要包含MySQL的连接信息。不过直接在Deployment里写密码不太安全,应该用Secret来存储敏感信息。 然后,创建Service来暴露exporter的端口,这样Prometheus才能抓取数据。Service的selector要匹配Deployment的标签,端口通常是9104,因为这是mysqld-exporter默认的端口。 接下来是ServiceMonitor,这是Prometheus Operator用来自动发现监控目标的。需要确保ServiceMonitor的标签匹配Prometheus的serviceMonitorSelector,否则可能不会被识别。ServiceMonitor里要指定正确的端口和路径,通常/metrics。 另外,用户可能需要配置告警规则,这可以通过PrometheusRule资源来实现。需要定义一些关键的指标,比如MySQL是否启动、连接数是否过高等。这些规则需要引用正确的指标名称,比如mysql_up。 还可能遇到问题,比如exporter无法连接MySQL,这时候需要检查网络策略和服务发现是否正确。如果使用集群外部的MySQL,要确保Kubernetes集群能够访问到那个外部地址,可能需要调整网络配置或者使用NodePort之类的服务类型。 另外,权限方面,MySQL用户需要授予适当的权限,比如PROCESS、REPLICATION CLIENT等,这样exporter才能收集到足够的指标。 最后,验证部署是否成功,可以检查Pod日志,或者通过Prometheus的界面查看target是否健康,以及指标是否能正常采集。</think>### 在Kubernetes中部署和配置Prometheus MySQL Exporter的步骤 #### 1. 创建Secret存储MySQL连接信息 首先需要将MySQL的访问凭证通过Secret存储,避免明文暴露敏感信息: ```yaml apiVersion: v1 kind: Secret metadata: name: mysql-exporter-secret type: Opaque data: DATA_SOURCE_NAME: "base64编码的MySQL连接字符串" # 格式:user:password@(host:port)/dbname ``` #### 2. 部署mysqld-exporter 创建Deployment资源运行mysqld-exporter容器,并注入Secret中的环境变量: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysqld-exporter spec: selector: matchLabels: app: mysqld-exporter template: metadata: labels: app: mysqld-exporter spec: containers: - name: exporter image: prom/mysqld-exporter:v0.15.0 env: - name: DATA_SOURCE_NAME valueFrom: secretKeyRef: name: mysql-exporter-secret key: DATA_SOURCE_NAME ports: - containerPort: 9104 ``` #### 3. 创建Service暴露指标接口 通过Service暴露exporter的HTTP指标端口: ```yaml apiVersion: v1 kind: Service metadata: name: mysqld-exporter-svc labels: app: mysqld-exporter spec: selector: app: mysqld-exporter ports: - name: metrics port: 9104 targetPort: 9104 ``` #### 4. 配置ServiceMonitor自动发现 通过Prometheus Operator的ServiceMonitor实现自动监控发现: ```yaml apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: mysql-service-monitor spec: selector: matchLabels: app: mysqld-exporter # 必须匹配Service的标签 endpoints: - port: metrics path: /metrics namespaceSelector: any: true ``` #### 5. 添加告警规则(可选) 通过PrometheusRule定义MySQL监控告警: ```yaml apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: mysql-alert-rules spec: groups: - name: mysql.rules rules: - alert: MySQLDown expr: mysql_up == 0 for: 5m annotations: summary: "MySQL实例不可用" description: "MySQL实例{{ $labels.instance }}已超过5分钟不可用" ``` ### 关键配置说明 1. **网络连通性**:当监控集群外MySQL时,需确保Pod网络可访问目标MySQL地址[^1] 2. **权限要求**:MySQL用户需要至少授予`PROCESS, REPLICATION CLIENT, SELECT`权限[^2] 3. **版本兼容性**:需确认mysqld-exporter版本与MySQL/MariaDB版本兼容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值