侧边栏壁纸
  • 累计撰写 57 篇文章
  • 累计创建 23 个标签
  • 累计收到 4 条评论

mysqld_exporter的安装

cluski
2022-03-18 / 0 评论 / 0 点赞 / 289 阅读 / 2,331 字
温馨提示:
本文最后更新于 2022-03-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Mysqld Exporter 部署

mysqld_exporter可以监控mysql的指标,并且暴露出来,提供诶prometheus抓取。配合alert manager、grafana做到msyql状态的告警和可视化。

mysqld_exporter的仓库:https://github.com/prometheus/mysqld_exporter

或者到prometheus官方中下载:https://prometheus.io/download/#mysqld_exporter

1 部署

  1. 下载mysqld_exporter的bin包,并解压值/usr/local/bin,并且重新设置所属用户和所属组,chown mysqld_exporter:mysqld_exporter /usr/local/bin/mysqld_exporter

  2. 创建mysqld_exporter用户

    useradd -m -s /bin/false mysqld_exporter
    
  3. 创建数据库用户

    CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 2;
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';
    FLUSH PRIVILEGES;
    EXIT
    
  4. 配置mysqld_exporter的身份验证文件

    cat >> /etc/.mysqld_exporter.cnf << EOF
    [client]
    user=mysqld_exporter
    password=StrongPassword
    EOF
    

    设置.mysqld_exporter.cnf文件的文件许可权

    chown mysqld_exporter:mysqld_exporter /etc/.mysqld_exporter.cnf

  5. 配置system的service文件

    [Unit]
    Description= Prometheus MySQL Exporter
    Wants=network-online.target
    After=network-online.target
    
    
    [Service]
    User=mysqld_exporter
    Group=mysqld_exporter
    Type=simple
    Restart=always
    
    ExecStart=/usr/local/bin/mysqld_exporter \
    --config.my-cnf /etc/.mysqld_exporter.cnf \
    --collect.auto_increment.columns \
    --collect.binlog_size \
    --collect.engine_innodb_status \
    --collect.engine_tokudb_status \
    --collect.global_status \
    --web.listen-address=0.0.0.0:9104
    
    [Install]
    WantedBy=multi-user.target
    
  6. 启动

    systemctl daemon-reload
    systemctl start mysqld_exporter
    systemctl enable mysqld_exporter
    systemctl status mysqld_exporter
    

2 prometheus抓取指标

因为我们的prometheus是通过kube-prometheus部署在k8s上的,为了能够抓取到mysql的指标,需要创建对应的endpoint、service和servicemonitor。

# endpoint
apiVersion: v1
kind: Endpoints
metadata:
  name: mysqld-exporter
  namespace: monitoring
subsets:
- addresses:
  - ip: 2.82.81.71
  - ip: 2.82.81.72
  ports:
  - name: metrics
    port: 9104
    protocol: TCP

# service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: mysql-exporter
  name: mysqld-exporter
  namespace: monitoring
spec:
  ports:
  - name: metrics
    port: 9104
    protocol: TCP
    targetPort: 9104
  sessionAffinity: None
  type: ClusterIP

# servicemonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app: mysqld-exporter
  name: mysqld-exporter
  namespace: monitoring
spec:
  endpoints:
  - interval: 30s
    path: /metrics
    port: metrics
  jobLabel: app
  namespaceSelector:
    matchNames:
    - monitoring
  selector:
    matchLabels:
      app: mysql-exporter

上面的servicemonitor只是一个最简单的抓取,可以根据自己的需求重新打标或者丢弃标签。

apply完上面的yaml文件之后,可以打开prometheus的ui页面,可以看到对应的target已经up了。

image-20220318215106986

0

评论区