Prometheus监控mysql
方法一mysq-exporter使用pod的方式:
规划:
192.168.1.183 node01 上部署的prometheus,组件mysql-export也在这里
192.168.1.4 上部署的mysql5.7
1.准备mysql-export镜像
[root@node01 ~]# docker pull prom/mysqld-exporter:latest
2.部署安装mysql数据库
略
3.登陆mysql为mysql_exporter创建账号并授权
mysql> CREATE USER 'mysql_exporter'@'%' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.21 sec)
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%'; Query OK, 0 rows affected (0.00 sec)
4.用户名和密码设置到secrer中
#加密用户名
[root@master01 mysql]# echo -n 'mysql_exporter' | base64 bXlzcWxfZXhwb3J0ZXI=
#加密密码
[root@master01 mysql]# echo -n '123456' | base64 MTIzNDU2
#创建secret
[root@master01 mysql]# kubectl apply -f secret.yaml secret/mysql-secret created
secret.yaml文件如下:
[root@master01 mysql]# cat secret.yaml apiVersion: v1 kind: Secret metadata: name: mysql-secret type: Opaque data: username: bXlzcWxfZXhwb3J0ZXI= password: MTIzNDU2
4.编写mysql-export.yaml文件
[root@master01 mysql]# kubectl apply -f mysql-export.yaml deployment.apps/mysql-export created
[root@master01 mysql]# kubectl get pod NAME READY STATUS RESTARTS AGE mysql-export-5b96dd67f6-w6dl7 1/1 Running 0 4s
mysql-export.yaml文件配置如下:
[root@master01 mysql]# cat mysql-export.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: mysql-export name: mysql-export spec: replicas: 1 selector: matchLabels: app: mysql-export template: metadata: labels: app: mysql-export annotations: prometheus.io/scrape: 'true' spec: containers: - image: prom/mysqld-exporter:latest name: mysql-export env: - name: username valueFrom: secretKeyRef: name: mysql-secret #这是secret的对象名 key: username #它是secret中的key名 - name: password valueFrom: secretKeyRef: name: mysql-secret #这是secret的对象名 key: password #它是secret中的key名 - name: DATA_SOURCE_NAME value: $username:$passwrod@(192.168.1.4:3306)/ imagePullPolicy: IfNotPresent securityContext: privileged: true ports: - protocol: TCP name: mysql-export containerPort: 9104 resources: #资源配额 limits: #资源限制,最多可用的cpu和内存 cpu: 1 memory: 1Gi requests: #最少需要多少资源才可以运行Pod cpu: 0.5 memory: 1Gi --- apiVersion: v1 kind: Service metadata: name: mysql-export namespace: default spec: ports: - name: mysql port: 9104 protocol: TCP targetPort: 9104 selector: app: mysql-export type: ClusterIP
#prometheus上查看mysql-export状态
5.grafana导入mysql监控图表
略
方法二mysq-exporter使用物理机的方式:
1.下载地址:
https://github.com/prometheus/mysqld_exporter/tags
[root@kk01 ~]# tar -xf mysqld_exporter-0.13.0.linux-amd64.tar.gz
[root@kk01 ~]# ln -s mysqld_exporter-0.13.0.linux-amd64 /data/mysqld_exporter
2.部署安装mysql数据库
略
3.登陆mysql为mysql_exporter创建账号并授权
mysql> CREATE USER 'mysql_exporter'@'%' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.21 sec)
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%'; Query OK, 0 rows affected (0.00 sec)
3.创建配置文件
[root@kk01 data]# ln -s mysqld_exporter-0.13.0.linux-amd64/ mysqld_exporter
[root@kk01 data]# cd mysqld_exporter [root@kk01 mysqld_exporter]# cat .my.cnf [client] user=mysql_exporter password=123456 port=3306
4.使用systemd方式启动
cat >/usr/lib/systemd/system/mysqld_exporter.service <<EOF [Unit] Description=Prometheus [Service] ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/.my.cnf --web.listen-address=:9104 Restart=on-failure [Install] WantedBy=multi-user.target EOF
[root@kk01 mysqld_exporter]# systemctl start mysqld_exporter [root@kk01 mysqld_exporter]# systemctl enable mysqld_exporter
mysqld_exporter默认运行端口是:9104
可以通过http://数据库服务器:9104访问MySQLD Exporter暴露的服务
可以通过/metrics查看mysql_up指标判断当前MySQLD Exporter是否正常连接到了MySQL实例
5.在prometheus.yaml中添加mysqld_exporter的配置
- job_name: 'mysql' static_configs: - targets: ['192.168.1.4:9104']
[root@master01 mysql]# kubectl apply -f prometheus-alertmanager-cfg-mysql.yaml [root@master01 alertmanager]# kubectl apply -f prometheus-alertmanager-deploy.yaml
#prometheus上查看mysql-export状态
5.grafana导入mysql监控图表
略
继续阅读

我的微信
这是我的微信扫一扫
评论