在IBM Cloud Private的kubernetes环境中是默认安装了Prometheus+grafana服务的,但是只是针对主机监控,包括node和kubernetes上面的pod资源等,如果想要监控mysql或者redis等数据库的内部信息,还需要自己添加配置。
环境准备:
kubernetes环境:IBM Cloud Private 3.10
Prometheus和grafana目前组件:
一、在任意namespace下创建mysql服务。
mysql我设置的root用户密码为初始的mysql,service使用了nodeport的暴露方式10.10.10.10:3306
二、创建prometheus-mysql-exporter服务
在这里我直接使用的helm方式安装的mysql-exporter,下载mysql-exporterchart,修改下chart中的value.yaml
其中,datasource为自己的数据库地址格式为: 用户名:密码@(数据库地址)/,创建服务后mysqld-exporter服务IP:10.10.10.10:9104
三、修改prometheus.yml加入MySql节点
使用helm方式安装的Prometheus默认的prome.yml是通过挂载configmap的方式来配置的,所以需要先查找到指定的configmap,然后添加mysql节点
- job_name: 'mysql'
static_configs:
- targets:
- 10.10.10.10:9104
更新下configmap,然后更新下Prometheus的pod。
四、查看mysql-exporter和mysql连接状态
访问mysql-exporter的metrics服务,查看mysql状态
10.10.10.10:9104/metrics
mysql_up 1 代表目前连接的mysql数量,代表当前连接状态成功。
五、grafana中配置mysql的dashboard配置
mysql可视化模板:https://pan.baidu.com/s/1t0x9W7UrlPcusdoVLF8P1w
碰到的问题和解决方法:
mysql-exporter和mysql连接不成功,mysql_up提示为0
查看mysql-exporter容器日志
从日志中可以看到错误信息为:Error pinging mysqld: this authentication plugin is not supported。
搜索发现是mysql新版本(8.0以上)将root用户使用的plugin更新成caching_sha2_password,查看mysql
将root的plugin改成mysql_native_password,输入更改命令
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
修改完之后,再次查看连接状态,还是报错。查找得知需要在连接mysql服务的url后面添加?allowNativePasswords=true,在这里我们就需要在mysql-exporter连接mysql是添加这个语句。注意这里的添加位置,需要修改mysql-exporter的chart.value.yaml文件
注意添加的位置,这样mysql-exporter连接mysql的时候就可以使用nativepassword。