grafana&prometheus生產級容器化監控-3:監控mysql

目錄

(1).前置閱讀

(2).前置準備

(3).容器化生產規劃

(4).使用mysqld-exporter監控mysql實例

1.鏡像選擇

2.容器化配置

(5).容器化步驟

(6).關鍵配置

1.prometheus-storage-mysql-configmap.yaml

2.datasource.yml

3.provision.yml

4.exporter-deployment-storage-mysql-apollo.yaml

(7).特別注意

(8).最終效果

(9).相關文章

(1).前置閱讀

需要先行部署grafana/prometheus,以及合理拓撲,參見:

(2).前置準備

容器化mysql數據庫實例,可以使用:

https://github.com/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/mysql-min

參考文章:

創建exporter專用用戶:

CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporterpwd';

GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';

GRANT SELECT ON performance_schema.* TO 'exporter'@'%';

在本例中,圖簡略,使用的是之前已經存在的用戶密碼:apollo/admin,但生產環境必須使用新的mysql用戶,這樣更加安全可靠,也方便監控。

(3).容器化生產規劃

grafana&prometheus生產級容器化監控-3:監控mysql

原始圖片位於:

https://github.com/hepyu/k8s-app-config/blob/master/product/standard/grafana-prometheus-pro/images/grafana-prometheus%E7%94%9F%E4%BA%A7%E7%BA%A7%E5%AE%9E%E8%B7%B5.jpg

如上圖所示:

容器化多個prometheus實例

由於當數據量很大(metrics很多)或者grafana選擇的時間跨度很大時,prometheus的吞吐性能會很有問題,再加上會有很多人通過grafana查看各業務數據,如果生產環境只部署一個prometheus,肯定是有問題的,prometheus會經常性崩潰。

同時,這樣也可以設置不同的數據保存時間,比如對於mq來說,我希望保留更長時間的數據。

(4).使用mysqld-exporter監控mysql實例

1.鏡像選擇

使用percona公司的mysqld-exporter組件監控Mysql數據庫實例:

https://github.com/prometheus/mysqld_exporter

注:

percona出了很多關於mysql的產品,比如binlog分析等工具。

筆者提供mysqld-exporter的容器化配置,位於:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/exporter-storage-mysql

2.容器化配置

建立新的prometheus實例,專門用於存放mysql實例的metrics,同時dashboards導入方式選擇provisioning方式(也可以選擇grafana的plugin的方式導入percona-mysql的dashboard,但是這種方式無法自定義目錄)。

筆者提供生產級容器化配置,位於:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro

grafana&prometheus生產級容器化監控-3:監控mysql

prometheus-storage-mysql容器化配置:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/prometheus-storage-mysql

grafana&prometheus生產級容器化監控-3:監控mysql

dashboard位置,從percona的grafana-dashboard中拷貝出mysql相關的dashboards:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards/storage-mysql

grafana&prometheus生產級容器化監控-3:監控mysql

(5).容器化步驟

大體步驟,注意本例配置默認使用local pv(生產環境需要換成雲存儲),需要使用者自行創建。

1.cd https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro

#Kubectl apply -f grafana-prometheus-image-repo-secret.yaml (生產環境使用)

Kubectl apply -f grafana-prometheus-namespace.yaml

2.cd grafana-prometheus-pro/prometheus-storage-mysql

Kubectl apply -f .

3.cd grafana-prometheus-pro/grafana

Kubectl apply -f .

(6).關鍵配置

1.prometheus-storage-mysql-configmap.yaml

相對路徑:prometheus-storage-mysql/prometheus-storage-mysql-configmap.yaml

配置服務發現,從k8s的那些pod拉取metrics:

label_exporter=mysql, namespace=monitor的pod

relabel_configs:

- source_labels: [__meta_kubernetes_pod_label_exporter, __meta_kubernetes_namespace]

action: keep

regex: mysql;monitor

2.datasource.yml

相對路徑:grafana/provisioning/datasources

將數據庫prometheus-storage-mysql放到grafana的數據庫列表中:

- name: prometheus-storage-mysql

type: prometheus

access: proxy

orgId: 1

url: http://prometheus-storage-mysql:9090

isDefault: false

jsonData:

tlsAuth: false

tlsAuthWithCACert: false

3.provision.yml

相對路徑:grafana/provisioning/dashboards

將mysql-dashboards放到grafana的dashboards列表中:

- name: 'storage-mysql'

orgId: 1

folder: 'storage-mysql'

folderUid: ''

type: file

options:

path: /var/lib/grafana/k8s-app-config/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards/storage-mysql

4.exporter-deployment-storage-mysql-apollo.yaml

相對路徑:exporter-storage-mysql/exporter-deployment-storage-mysql-apollo.yaml

配置要監控的目標mysql實例:

containers:

- name: exporter-mysql-apollo

#生產環境換成自己的鏡像倉庫

image: prom/mysqld-exporter:v0.11.0

env:

- name: DATA_SOURCE_NAME

value: "apollo:admin@(mysql-min.mysql-min:3306)/"

(7).特別注意

需要注意,如果使用的是雲RDS,關於mysql宿主機的監控dashboard是沒有數據的,如果是獨立部署的mysql,mysqld_exporter一定要和mysql實例在一臺機器,這樣才能收集到mysql宿主機的信息,比如磁盤,io等。

(8).最終效果

grafana&prometheus生產級容器化監控-3:監控mysql

grafana&prometheus生產級容器化監控-3:監控mysql

(9).相關文章

percona官方grafana-dashboards:

https://github.com/percona/grafana-dashboards

grafana&prometheus生產級容器化監控-3:監控mysql


分享到:


相關文章: