過程1波三折,實際上需要做的并不多
mysql exporter 使用helm安裝,只需要將mysql的設(shè)定傳入到chart下的values.yaml中
具體步驟如下:
#查看當前的helm repo
[root@master ~]# helm repo list
NAME URL
stable https://charts.helm.sh/stable
拉取相關(guān)的chart,不直接install的原因是將mysql 連接需要的值傳入到values.yaml中
helm pull prometheus-mysql-exporter stable/prometheus-mysql-exporter
cd $HOME/.cache/helm/repository/ #helm 文件下載的目錄
tar zxvf prometheus-mysql-exporter-0.7.1.tgz #解壓mysql exporter 的文件
cd prometheus-mysql-exporter/
#修改values.yaml的值,主要是將連接數(shù)據(jù)庫的用戶名,host信息等傳入進去,同時在建立容器的同時建立servicemonitor
...
serviceMonitor:
enabled: true
...
mysql:
db: ""
host: "你的ip"
param: ""
pass: "你的密碼"
port: 3306
protocol: ""
user: "exporter"
existingSecret: false
...
當然exporter在數(shù)據(jù)庫中首先定義好相關(guān)的權(quán)限,以及密碼,訪問限制等
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
操作完以上之后,需要重新打包helm文件
rm -f prometheus-mysql-exporter-0.7.1.tgz
tar zcvf prometheus-mysql-exporter-0.7.1.tgz prometheus-mysql-exporter
#之后執(zhí)行helm install
helm install mysql prometheus-mysql-exporter-0.7.1.tgz --namespace monitoring
#觀察容器是否正常啟動
kubectl -n monitoring get pods
NAME READY STATUS RESTARTS AGE
alertmanager-prometheus-prometheus-oper-alertmanager-0 2/2 Running 0 69d
mysql-prometheus-mysql-exporter-bfc59c7b7-dnhhm 1/1 Running 0 4h54m
prometheus-grafana-5558455c66-52dsg 2/2 Running 0 69d
prometheus-kube-state-metrics-6b46f67bf6-h5nhs 1/1 Running 0 46d
prometheus-prometheus-node-exporter-2jrvp 1/1 Running 0 69d
prometheus-prometheus-node-exporter-ct96h 1/1 Running 0 69d
prometheus-prometheus-node-exporter-lbsnm 1/1 Running 0 69d
prometheus-prometheus-node-exporter-m6jd6 1/1 Running 0 14d
prometheus-prometheus-node-exporter-nlfwt 1/1 Running 0 69d
prometheus-prometheus-oper-operator-7c75ff5864-g2lkq 2/2 Running 0 23h
prometheus-prometheus-prometheus-oper-prometheus-0 3/3 Running 2 45h
#測試與數(shù)據(jù)庫的連通性
[root@master ~]# kubectl -n monitoring get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 69d
mysql-prometheus-mysql-exporter ClusterIP 10.105.203.102 <none> 9104/TCP 4h55m
prometheus-grafana NodePort 10.104.181.79 <none> 80:32669/TCP 69d
prometheus-kube-state-metrics ClusterIP 10.102.76.12 <none> 8080/TCP 69d
prometheus-operated ClusterIP None <none> 9090/TCP 69d
prometheus-prometheus-node-exporter ClusterIP 10.103.134.197 <none> 9100/TCP 69d
prometheus-prometheus-oper-alertmanager ClusterIP 10.103.19.123 <none> 9093/TCP 69d
prometheus-prometheus-oper-operator ClusterIP 10.97.236.198 <none> 8080/TCP,443/TCP 69d
prometheus-prometheus-oper-prometheus NodePort 10.97.65.121 <none> 9090:30658/TCP 69d
curl 10.105.203.102:9104/metrics |grep mysql_up
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 347k 100 347k 0 0 2079k 0 --:--:-- --:--:-- --:--:-- 2081k
# HELP mysql_up Whether the MySQL server is up.
# TYPE mysql_up gauge
mysql_up 1
mysql_up是1 證明與數(shù)據(jù)庫連接正常,接下來要看與prometheus 是否連接正常
#確認service monitor已創(chuàng)建
[root@master ~]# kubectl -n monitoring get servicemonitors.monitoring.coreos.com
NAME AGE
mysql-prometheus-mysql-exporter 5h4m
瀏覽器確認狀態(tài):

image.png
上圖表明,prometheus已經(jīng)成功加入了mysql exporter。
在這個過程中,我開始創(chuàng)建的mysql exporter 并未在網(wǎng)頁端targets選項中找到,最后發(fā)現(xiàn)問題的所在是要

image.png
這里默認生成的release 是mysql ,但是需要指定為prometheus,修改完之后,需要等一段時間重新查看就能看到了