@Prometheus 監控-MySQL (Mysqld Exporter)

文章目錄

    • **Prometheus 監控 MySQL **
      • **1. 目標**
      • **2. 環境準備**
        • **2.1 所需組件**
        • **2.2 權限要求**
      • **3. 部署 mysqld_exporter**
        • **3.1 下載與安裝**
        • **3.2 創建配置文件**
        • **3.3 創建 Systemd 服務**
        • **3.4 驗證 Exporter**
      • **4. 配置 Prometheus**
        • **4.1 添加 Job 到 `prometheus.yml`**
        • **4.2 重載 Prometheus**
      • **5. 核心監控指標說明**
      • **6. 告警規則配置**
        • **6.1 創建告警規則文件**
        • **6.2 在 `prometheus.yml` 中加載規則**
      • **7. Grafana 儀表盤配置**
      • **8. 維護與優化**
        • **8.1 定期檢查**
        • **8.2 安全加固**
        • **8.3 性能調整**
      • **9. 故障排查**
        • **9.1 Exporter 無數據**
        • **9.2 Prometheus 未抓取**
      • **10. 附錄**

**Prometheus 監控 MySQL **

1. 目標

  • 實時監控 MySQL 關鍵性能指標(如連接數、查詢吞吐量、復制狀態等)。
  • 設置告警規則,及時發現數據庫異常。
  • 通過 Grafana 可視化監控數據。

2. 環境準備

2.1 所需組件
組件作用安裝位置
Prometheus Server指標采集與存儲監控服務器
mysqld_exporter暴露 MySQL 指標MySQL 服務器
Grafana數據可視化監控服務器
Alertmanager告警通知管理監控服務器
2.2 權限要求
  • MySQL 用戶需具備 PROCESS, REPLICATION CLIENT, SELECT 權限:
    CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'YourStrongPassword';
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
    FLUSH PRIVILEGES;
    

3. 部署 mysqld_exporter

3.1 下載與安裝
# 下載最新版 (替換版本號)
VERSION="0.15.1"
wget https://github.com/prometheus/mysqld_exporter/releases/download/v${VERSION}/mysqld_exporter-${VERSION}.linux-amd64.tar.gz
tar xvf mysqld_exporter-${VERSION}.linux-amd64.tar.gz
sudo mv mysqld_exporter-${VERSION}.linux-amd64/mysqld_exporter /usr/local/bin/
3.2 創建配置文件

創建 .my.cnf 文件存儲數據庫連接信息:

sudo tee /etc/.mysqld_exporter.cnf <<EOF
[client]
user=exporter
password=YourStrongPassword
host=localhost
port=3306
EOF
sudo chmod 600 /etc/.mysqld_exporter.cnf  # 限制權限
3.3 創建 Systemd 服務

/etc/systemd/system/mysqld_exporter.service

[Unit]
Description=MySQL Prometheus Exporter
After=network.target[Service]
User=mysqld_exporter
ExecStart=/usr/local/bin/mysqld_exporter \--config.my-cnf=/etc/.mysqld_exporter.cnf \--collect.global_status \--collect.info_schema.innodb_metrics \--collect.slave_status \--collect.info_schema.processlistRestart=always[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start mysqld_exporter
sudo systemctl enable mysqld_exporter
3.4 驗證 Exporter

訪問指標接口:
curl http://localhost:9104/metrics
應輸出包含 mysql_ 前綴的指標。


4. 配置 Prometheus

4.1 添加 Job 到 prometheus.yml
scrape_configs:- job_name: 'mysql'static_configs:- targets: ['mysql-server-ip:9104']  # Exporter 地址relabel_configs:- source_labels: [__address__]target_label: instancereplacement: 'mysql-primary'  # 實例標識
4.2 重載 Prometheus
curl -X POST http://localhost:9090/-/reload  # 或重啟服務

5. 核心監控指標說明

指標名稱含義告警建議
mysql_global_status_threads_connected當前連接數> 80% max_connections
mysql_global_status_threads_running活躍連接數持續 > 100
mysql_global_status_slow_queries慢查詢計數短時間內突增
mysql_global_variables_max_connections最大連接數規劃容量參考
mysql_slave_status_slave_io_running主從 IO 線程狀態≠ 1 (異常)
mysql_info_schema_innodb_row_lock_time_avg平均行鎖等待時間> 500ms

6. 告警規則配置

6.1 創建告警規則文件

/etc/prometheus/rules/mysql_alerts.yml

groups:
- name: MySQL-Alertsrules:- alert: MySQLHighConnectionsexpr: mysql_global_status_threads_connected / mysql_global_variables_max_connections * 100 > 80for: 5mlabels:severity: warningannotations:summary: "MySQL 高連接數 ({{ $value }}%)"description: "實例 {{ $labels.instance }} 連接數超過 80% 限制"- alert: MySQLReplicationFailureexpr: mysql_slave_status_slave_io_running != 1 or mysql_slave_status_slave_sql_running != 1for: 1mlabels:severity: criticalannotations:summary: "MySQL 復制中斷 ({{ $labels.instance }})"
6.2 在 prometheus.yml 中加載規則
rule_files:- "/etc/prometheus/rules/mysql_alerts.yml"

7. Grafana 儀表盤配置

  1. 導入官方 Dashboard:
    • ID 7362 (MySQL Overview)
  2. 配置 Prometheus 為數據源。

8. 維護與優化

8.1 定期檢查
  • 驗證 Exporter 狀態:systemctl status mysqld_exporter
  • 檢查指標收集延遲:prometheus_target_interval_length_seconds
  • 審核 MySQL 用戶權限(每年至少一次)。
8.2 安全加固
  • 使用 TLS 加密 Exporter 通信:
    mysqld_exporter --web.config.file=/path/to/web-config.yml
    
    web-config.yml 示例:
    tls_server_config:cert_file: server.crtkey_file: server.key
    
8.3 性能調整
  • 限制采集的指標(減少負載):
    --no-collect.info_schema.tables  # 禁用表統計
    
  • 調整 Prometheus 抓取間隔(默認 15s):
    scrape_interval: 30s  # prometheus.yml
    

9. 故障排查

9.1 Exporter 無數據
  • 檢查 MySQL 用戶權限。
  • 測試連接:mysql --defaults-file=/etc/.mysqld_exporter.cnf -e "SHOW STATUS"
  • 查看 Exporter 日志:journalctl -u mysqld_exporter -f
9.2 Prometheus 未抓取
  • 訪問 http://prom-server:9090/targets 檢查 Target 狀態。
  • 驗證網絡連通性:telnet mysql-server-ip 9104

10. 附錄

  • mysqld_exporter 官方文檔
    https://github.com/prometheus/mysqld_exporter
  • MySQL 監控關鍵指標指南
    https://prometheus.io/docs/guides/mysqld-exporter/

按照此文檔,可實現 MySQL 的全面監控與告警,確保數據庫穩定性。部署后需通過壓力測試驗證監控有效性,并根據業務特點調整告警閾值。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MCP Resource模塊詳解

MCP Resource模塊詳解 摘要 MCP Resource模塊是模型上下文協議的核心組件&#xff0c;通過標準化URI接口為AI模型提供安全可控的只讀數據訪問能力。其核心設計包括數據隔離架構和客戶端驅動的訪問控制&#xff0c;支持文本/二進制編碼格式&#xff0c;適用于配置文件讀取、數據…

Docker 容器化基礎:鏡像、容器與倉庫的本質解析

Docker 概念與容器化技術 Docker 是一種容器化平臺&#xff0c;能夠將應用程序及其依賴項打包成一個容器&#xff0c;確保在任何環境中都能一致運行。容器化技術通過操作系統級別的虛擬化&#xff0c;為應用程序提供了一個獨立的運行環境。 容器化技術的核心優勢 一致性&…

解決SQL Server SQL語句性能問題(9)——SQL語句改寫(2)

9.4.3. update語句改寫 與Oracle類似,SQL Server中,update語句被用戶相關技術人員廣泛應用于現實日常工作中。但是,有些情況下,尤其是海量數據場景中,update語句也許會帶來性能方面的嚴重問題或極大隱患。因此,為了解決和消除update語句導致的性能問題或隱患,我們將需對…

Unity VR/MR開發-VR/開發SDK選型對比分析

視頻講解鏈接&#xff1a; 【XR馬斯維】Unity開發VR/MR用哪些SDK&#xff1f;【UnityVR/MR開發教程--入門】_嗶哩嗶哩_bilibili

Python 高效圖像幀提取與視頻編碼:實戰指南

Python 高效圖像幀提取與視頻編碼:實戰指南 在音視頻處理領域,圖像幀提取與視頻編碼是基礎但極具挑戰性的任務。Python 結合強大的第三方庫(如 OpenCV、FFmpeg、PyAV),可以高效處理視頻流,實現快速幀提取、壓縮編碼等關鍵功能。本文將深入介紹如何優化這些流程,提高處理…

java復習 05

我的天啊一天又要過去了&#xff0c;沒事的還有時間&#xff01;&#xff01;&#xff01; 不要焦慮不要焦慮&#xff0c;事實證明只要我認真地投入進去一切都還是來得及的&#xff0c;代碼多實操多復盤&#xff0c;別嘰嘰喳喳胡思亂想多多思考&#xff0c;有迷茫前害怕后的功…

《Go小技巧易錯點100例》第三十五篇

本期分享&#xff1a; 1.循環依賴導致棧溢出 2.無法捕獲子協程的panic 循環依賴導致棧溢出 在Go語言開發中&#xff0c;我們經常會遇到結構體之間需要相互引用的情況。當兩個結構體直接或間接地相互包含對方作為自己的字段時&#xff0c;就會形成循環依賴。 但是在Go語言中…

React 第五十五節 Router 中 useAsyncError的使用詳解

前言 useAsyncError 是 React Router v6.4 引入的一個鉤子&#xff0c;用于處理異步操作&#xff08;如數據加載&#xff09;中的錯誤。下面我將詳細解釋其用途并提供代碼示例。 一、useAsyncError 用途 處理異步錯誤&#xff1a;捕獲在 loader 或 action 中發生的異步錯誤替…

.NET 9中的異常處理性能提升分析:為什么過去慢,未來快

一、為什么要關注.NET異常處理的性能 隨著現代云原生、高并發、分布式場景的大量普及&#xff0c;異常處理&#xff08;Exception Handling&#xff09;早已不再只是一個冷僻的代碼路徑。在高復雜度的微服務、網絡服務、異步編程環境下&#xff0c;服務依賴的外部資源往往不可…

第二十九章 數組

第二十九章 數組 數組。所有編程語言中都少不了數組,Shell語言也不例外,只不過支持程度非常有限。即便如此,在解決某些編程問題時,數組也能發揮大作用。 什么是數組 數組是一種可以一次存放多個值的變量,其組織形式類似與表格。數組中的每個變量叫做元素,每個元素都含…

ffmpeg(五):裁剪與合并命令

裁剪&#xff08;剪切&#xff09; 精準裁剪&#xff08;有轉碼&#xff0c;支持任意起止時間&#xff09; # 從第 10 秒到第 30 秒&#xff0c;重新編碼 ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c:v libx264 -c:a aac output.mp4快速裁剪&#xff08;無轉碼&#x…

20、typedef和typename

在C中&#xff0c;typedef和typename有不同的用途和語法。以下是它們的主要區別&#xff1a; typedef typedef用于為現有類型定義一個新的名字。它通常用于簡化復雜類型聲明&#xff0c;使代碼更易讀。 示例&#xff1a; typedef unsigned long ulong; typedef int (*func_…

僵尸進程是什么?怎么回收?孤兒進程?

僵尸進程是什么&#xff1f; 僵尸進程的定義&#xff1a;對于多進程程序&#xff0c;當子進程結束運行但父進程還未讀取其退出狀態時&#xff0c;子進程就處于僵尸態。此時&#xff0c;內核不會立即釋放該子進程的進程表表項&#xff0c;以滿足父進程后續查詢子進程退出信息的…

[AI繪畫]sd學習記錄(二)文生圖參數進階

目錄 7.高分辨率修復&#xff1a;以小博大8.細化器&#xff08;Refiner&#xff09;&#xff1a;兩模型接力9.隨機數種子&#xff08;Seed&#xff09;&#xff1a;復現圖片吧 本文接續https://blog.csdn.net/qq_23220445/article/details/148460878?spm1001.2014.3001.5501…

C++學習思路

C++知識體系詳細大綱 一、基礎語法 (一)數據類型 基本數據類型 整數類型(int, short, long, long long)浮點類型(float, double, long double)字符類型(char, wchar_t, char16_t, char32_t)布爾類型(bool)復合數據類型 數組結構體(struct)聯合體(union)枚舉類型…

34、協程

在Linux系統中&#xff0c;協程是一種輕量級的線程&#xff0c;它們允許在多個任務之間切換&#xff0c;而不需要操作系統的線程調度。協程可以分為有棧協程和無棧協程&#xff0c;以及對稱協程和非對稱協程。 有棧協程 有棧協程每個協程都有自己的棧空間&#xff0c;允許協程…

DeepSeek 賦能金融科技,重塑開放銀行生態新圖景

目錄 一、金融科技開放銀行生態建設的現狀與挑戰二、DeepSeek 技術解析2.1 DeepSeek 的技術原理與特點2.2 與其他相關技術的對比優勢 三、DeepSeek 在開放銀行生態建設中的具體應用場景3.1 智能客服與財富管理3.2 風控與合規管理3.3 生態協同與數據共享 四、DeepSeek 應用案例分…

【QT控件】輸入類控件詳解

目錄 一、QLineEdit 二、Text Edit 三、Combo Box 四、Spin Box 五、Date Edit & Time Edit 六、Dial 七、Slider QT專欄&#xff1a;QT_uyeonashi的博客-CSDN博客 一、QLineEdit QLineEdit 用來表示單行輸入框. 可以輸入一段文本, 但是不能換行 核心屬性 核心信號…

【Oracle】存儲過程

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Oracle 文章目錄 1. 存儲過程基礎概述1.1 存儲過程的概念與特點1.2 存儲過程的組成結構1.3 存儲過程的優勢 2. 基礎存儲過程2.1 簡單存儲過程2.1.1 創建第一個存儲過程2.1.2 帶變量的存儲過程 2.2 帶參數的存儲過程2.2.1 輸入參…

【MATLAB代碼】制導方法介紹與例程——三點法|三維空間,動態目標導引(訂閱專欄后可直接查看源代碼)

三點法導引是一種導彈制導策略,通過計算導彈、目標和制導站之間的相對位置來確保導彈準確追蹤移動目標。該方法利用三角定位和動態調整,實時更新導彈的飛行路徑,以提高命中率,廣泛應用于軍事導彈和無人機等領域。文中有完整的matlab源代碼,訂閱專欄后即可查看 文章目錄 代…