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 部署
-
下载mysqld_exporter的bin包,并解压值
/usr/local/bin,并且重新设置所属用户和所属组,chown mysqld_exporter:mysqld_exporter /usr/local/bin/mysqld_exporter -
创建mysqld_exporter用户
useradd -m -s /bin/false mysqld_exporter -
创建数据库用户
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 -
配置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 -
配置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 -
启动
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了。

评论区