prometheus operator监控外部应用mysql
来源:原创
时间:2020-09-08
作者:脚本小站
分类:DevOps
mysqld_exporter官方文档:
https://github.com/prometheus/mysqld_exporter
下载exporter:
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
设置exporter的密码:
mysql -uroot -p CREATE USER 'exporter'@'localhost' IDENTIFIED BY '123456'; # 赋予查看主从运行情况查看线程,及所有数据库的权限。 GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
在mysql节点安装exporter:
tar -xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/ ln -sv mysqld_exporter-0.12.1.linux-amd64/ mysqld_exporter
创建配置文件:
vim .my.cnf [client] user=exporter password=123456
其他的一些选项:
常用参数: # 选择采集innodb --collect.info_schema.innodb_cmp # innodb存储引擎状态 --collect.engine_innodb_status # 指定配置文件 --config.my-cnf=".my.cnf
试运行:
./mysqld_exporter --config.my-cnf=.my.cnf
创建systemd文件:
[Unit] Description=https://prometheus.io After=network.target After=mysqld.service [Service] ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf Restart=on-failure [Install] WantedBy=multi-user.target
启动服务:
systemctl start mysql_exporter.service systemctl status mysql_exporter.service
查看metrics资源:
http://10.65.104.112:31880/targets
在k8s中:
写资源文件:
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: k8s-app: mysql name: mysql namespace: monitoring spec: endpoints: - interval: 30s port: http-metrics jobLabel: mysql namespaceSelector: matchNames: - kube-system selector: matchLabels: k8s-app: mysql --- apiVersion: v1 kind: Service metadata: name: mysql namespace: kube-system labels: k8s-app: mysql spec: type: ClusterIP clusterIP: None ports: - name: http-metrics port: 9104 targetPort: 9104 protocol: TCP --- apiVersion: v1 kind: Endpoints metadata: labels: k8s-app: mysql name: mysql namespace: kube-system subsets: - addresses: - ip: 10.3.149.85 ports: - name: http-metrics port: 9104 protocol: TCP
应用资源到k8s集群:
kubectl apply -f mysql-export.yaml
在prometheus中查看如下页面:可以看到mysql已近在资源列表中了,看不到需要等一会。
http://10.65.104.112:31880/targets
在grafana中添加如下模板:添加后即可看到mysql overview 的dashboard页面。
https://grafana.com/grafana/dashboards/7362
如果prometheus server是独立的服务并没有运行在k8s内,则在配置文件中添加如下内容即可:
scrape_configs: # 添加作业并命名 - job_name: 'mysql' # 静态添加node static_configs: # 指定监控端 - targets: ['10.3.149.85:9104']