Docker-compose 實現Prometheus+Grafana監控MySQL及Linux主機

.
├── Grafana
│   ├── data
│   └── docker-compose.yaml
├── Mysql
│   ├── conf
│   ├── data
│   ├── docker-compose.yaml
│   └── logs
├── Mysqld_exporter
│   ├── conf
│   └── docker-compose.yaml
├── node-exporter
│   └── docker-compose.yaml
└── Prometheus├── data├── docker-compose.yaml└── yml
Prometheus
# Docker Compose 版本聲明
version: '3'# 定義服務列表,這里定義了一個名為 prometheus 的服務
services:# 服務名稱:prometheusprometheus:# 使用的Docker鏡像,這里是 Prometheus 監控系統的官方鏡像image: prom/prometheus:v2.38.0# 為容器指定一個名稱container_name: prometheus# 定義卷掛載,將主機目錄掛載到容器內的目錄volumes:# 掛載 Prometheus 配置文件到容器內- ./yml/prometheus.yml:/etc/prometheus/prometheus.yml# 掛載數據目錄,用于存儲 Prometheus 的數據- ./data:/prometheus# 自定義命令來啟動 Prometheus 容器command:# 指定 Prometheus 配置文件的位置- '--config.file=/etc/prometheus/prometheus.yml'# 指定 Prometheus 數據存儲的路徑- '--storage.tsdb.path=/prometheus'# 指定控制臺庫的目錄- '--web.console.libraries=/usr/share/prometheus/console_libraries'# 指定控制臺模板的目錄- '--web.console.templates=/usr/share/prometheus/consoles'# 啟用 Prometheus 的生命周期功能- '--web.enable-lifecycle'# 端口映射,將容器的9090端口映射到宿主機的9090端口ports:- "9090:9090"# 定義重啟策略,除非明確停止,否則總是嘗試重啟容器restart: unless-stopped
global:scrape_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['192.168.88.128:9090']- job_name: 'grafana'                                                                                                                                                                        static_configs:- targets: ['192.168.88.128:3000']# 采集MySQL監控數據- job_name: 'mysqld_exporter'static_configs:- targets: ['192.168.88.128:9104']# 采集node exporter監控數據,即linux- job_name: 'node-exporter'static_configs:- targets: ['192.168.88.128:9100']
Grafana

Grafana做持久化操作,使用MySQL,如果已有數據庫直接使用,只需創建grafana庫即可。

# Docker Compose 版本聲明
version: '3'# 定義服務列表,這里定義了一個名為 grafana 的服務
services:# 服務名稱:grafanagrafana:# 使用的Docker鏡像,這里是 Grafana 的官方鏡像,版本為 9.5.2image: grafana/grafana:9.5.2# 為容器指定一個名稱container_name: grafana# 定義重啟策略,除非明確停止,否則總是嘗試重啟容器restart: unless-stopped# 端口映射,將容器的3000端口映射到宿主機的3000端口,這是 Grafana 的默認端口ports:- "3000:3000"# 定義卷掛載,將主機目錄掛載到容器內的目錄volumes:# 將主機的數據目錄掛載到 Grafana 的數據目錄,用于數據持久化- "./data:/var/lib/grafana"# 將宿主機的 localtime 文件掛載到容器,保證容器內時間設置與宿主機一致- "/etc/localtime:/etc/localtime"# 設置環境變量,用于 Grafana 配置environment:# 開啟 Grafana 的 Explore 功能GF_EXPLORE_ENABLED: "true"# 設置管理員用戶的初始密碼GF_SECURITY_ADMIN_PASSWORD: "zxcvbnm1"# 安裝 Grafana 插件GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource,alexanderzobnin-zabbix-app"# 配置 Grafana 數據庫連接信息,這里使用的是 MySQL 數據庫GF_DATABASE_URL: "mysql://root:zxcvbnm1@192.168.88.128:3306/grafana"# 注釋掉的設置,用于改變 Grafana 用戶界面的語言# GF_VIEWER_LANGUAGE: "zh-Hans"# 定義依賴關系,確保在 Grafana 啟動前 Prometheus 服務已經啟動depends_on:- prometheus
MySQL

如果沒有按照下面compose文件啟動MySQL并創建庫名。

# Docker Compose 版本聲明
version: "3"# 定義服務列表,這里定義了一個名為 mysql 的服務
services:# 服務名稱:mysqlmysql:# 使用的Docker鏡像,這里是 MySQL 5.7 版本的官方鏡像image: mysql:5.7# 為容器指定一個名稱container_name: mysql# 定義重啟策略,除非明確停止,否則總是嘗試重啟容器restart: unless-stopped# 定義卷掛載,將主機目錄掛載到容器內的目錄volumes:# 將主機的 my.cnf 配置文件掛載到容器的 MySQL 配置目錄- "./conf/my.cnf:/etc/mysql/my.cnf"# 將主機的數據目錄掛載到容器的 MySQL 數據目錄,用于數據持久化- "./data:/var/lib/mysql"# 設置環境變量environment:# 設置時區TZ: Asia/Shanghai# 設置語言環境LANG: en_US.UTF-8# 設置 MySQL root 用戶的密碼MYSQL_ROOT_PASSWORD: zxcvbnm1# 注釋掉的設置,如果需要創建并初始化一個數據庫,可以取消注釋并設置數據庫名#MYSQL_DATABASE: "database"# 端口映射,將容器的3306端口映射到宿主機的3306端口,這是 MySQL 的默認端口ports:- "3306:3306"
[mysqld]
user=mysql                     # MySQL啟動用戶
default-storage-engine=INNODB  # 創建新表時將使用的默認存儲引擎
character-set-server=utf8mb4      # 設置mysql服務端默認字符集
pid-file        = /var/run/mysqld/mysqld.pid  # pid文件所在目錄
socket          = /var/run/mysqld/mysqld.sock # 用于本地連接的socket套接字
datadir         = /var/lib/mysql              # 數據文件存放的目錄
#log-error      = /var/log/mysql/error.log
#bind-address   = 127.0.0.1                   # MySQL綁定IP
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # 定義mysql應該支持的sql語法,數據校驗等!# 允許最大連接數
max_connections=1000# ================= ↓↓↓ mysql主從同步配置start ↓↓↓ =================# 同一局域網內注意要唯一
server-id=3306
# 開啟二進制日志功能 & 日志位置存放位置`/var/lib/mysql`
#log-bin=mysql-bin
log-bin=/var/lib/mysql/mysql-bin
# binlog格式
# 1. STATEMENT:基于SQL語句的模式,binlog 數據量小,但是某些語句和函數在復制過程可能導致數據不一致甚至出錯;
# 2. MIXED:混合模式,根據語句來選用是 STATEMENT 還是 ROW 模式;
# 3. ROW:基于行的模式,記錄的是行的完整變化。安全,但 binlog 會比其他兩種模式大很多;
binlog_format=ROW
# FULL:binlog記錄每一行的完整變更 MINIMAL:只記錄影響后的行
binlog_row_image=FULL
# 日志文件大小
# max_binlog_size=100M
max_binlog_size=100M
# 定義清除過期日志的時間(這里設置為7天)
expire_logs_days=7# ================= ↑↑↑ mysql主從同步配置end ↑↑↑ =================[mysql]
default-character-set=utf8mb4[client]
default-character-set=utf8mb4  # 設置mysql客戶端默認字符集
Mysqld_exporter監控MySQL
# Docker Compose 版本聲明
version: "3"# 定義服務列表,這里定義了一個名為 mysqld_exporter 的服務
services:# 服務名稱:mysqld_exportermysqld_exporter:# 使用的 Docker 鏡像,這里是 prom/mysqld-exporter 的最新版本image: prom/mysqld-exporter:latest# 為容器指定一個名稱container_name: mysqld_exporter# 定義重啟策略,除非明確停止,否則總是嘗試重啟容器restart: unless-stopped# 端口映射,將容器的 9104 端口映射到宿主機的 9104 端口ports:- "9104:9104"# 自定義命令行參數,用于配置 mysqld-exportercommand:# --mysqld.username 指定連接到 MySQL 服務器的用戶名及密碼# --mysqld.address 指定 MySQL 服務器的地址和端口- "--mysqld.username=root:zxcvbnm1"- "--mysqld.address=192.168.88.128:3306"

訪問:http://192.168.88.128:9104/metrics
mysql_up 值為1才監控正常,否則失敗。
image.png
填坑1:

docker-compose中網上很多使用一下參數
entrypoint:DATA_SOURCE_NAME: "mysqld_exporter:zxcvbnm1@(192.168.88.128:3306)/"然后就一直報一個錯誤:
ts=2024-06-25T06:34:59.852Z caller=config.go:150 level=error msg="failed to validate config" section=client err="no user specified in section or parent"
ts=2024-06-25T06:34:59.852Z caller=mysqld_exporter.go:225 level=info msg="Error parsing host config" file=.my.cnf err="no configuration found"

填坑2:

docker-compose中網上也有使用映射配置文件操作
cat my.cnf 
[client]
user=root
password=zxcvbnm1
host=192.168.88.128
port=3306compose文件映射- "./conf/my.cnf:/usr/local/mysqld_exporter/.my.cnf"command: "--config.file=/etc/mysqld_exporter/.my.cnf"都會出現這個錯誤:
ts=2024-06-25T06:34:59.852Z caller=config.go:150 level=error msg="failed to validate config" section=client err="no user specified in section or parent"
ts=2024-06-25T06:34:59.852Z caller=mysqld_exporter.go:225 level=info msg="Error parsing host config" file=.my.cnf err="no configuration found"

費了大勁找到的解決方式:
https://discuss.prometheus.io/t/docker-compose-mysql-exporter-start-error/1734

Node-exporter
version: "3"services:node-exporter:image: prom/node-exporter:v1.3.1container_name: node-exporterrestart: unless-stoppedports:- "9100:9100"

所有compose文件啟動之后,訪問Prometheus http://192.168.88.128:9090/targets?search=
image.png
如上顯示,所有組件全部正常啟動。

  1. grafana訪問地址:http://192.168.88.128:3000/ 默認登錄賬號密碼:admin/zxcvbnm1
  2. prometheus訪問地址:http://192.168.88.128:9090/targets?search=
  3. exporter訪問地址:http://192.168.88.128:9100/metrics
  4. Mysqld_exporter訪問地址:http://192.168.88.128:9104/metrics
配置數據源

Grafana配置prometheus數據源,登錄成功后點擊添加數據源。
prometheus.gif
配置完成之后導入監控模板
grafana面板資源:https://grafana.com/grafana/dashboards
Mysqld_exporter:https://grafana.com/grafana/dashboards/14057-mysql/
node-exporter:https://grafana.com/grafana/dashboards/8919

導入.gif
MySQL監控結果

mysql.gif
linux監控結果

Linux.gif

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

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

相關文章

HarmonyOS應用開發學習經驗

一、HarmonyOS學習官網 開發者能力認證 HarmonyOS應用開發者基礎認證6月之前的學習資源官網已經關閉過期,大家不要慌,官方更新了最新資源,但是,對于之前沒有學習完的學員不友好,存在知識斷片的現象,建議官…

如何理解:業務架構、應用架構、數據架構、技術架構與系統和復雜度

關于系統的理解 1.1 系統的概述 隨著人類社會的發展,人們面對越來越多的規模巨大、關系復雜、參數眾多地復雜問題,這些問題的復雜度已經遠遠超出人類的理解能力,系統論就是為了分析和解決這些問題而生。我們平時接觸的計算機系統包括軟件系統…

ChatGPT的Mac客戶端正式發布了!Mac用戶有福了

ChatGPT的Mac客戶端正式發布了!Mac用戶有福了 🎉 大家好,我是貓頭虎,科技自媒體博主。今天我帶來了一個超級重磅的消息 📢,就是 ChatGPT 的客戶端終于來了!這對我們所有 Mac 用戶,尤…

2024全國大學生信息安全競賽(ciscn)半決賽(華中賽區)Pwn題解

簡介 前段時間賽前準備把ciscn東北賽區、華南賽區、西南賽區半決賽的題都復現完了。 可惜遇到了華東北賽區的離譜平臺和離譜pwn出題人: 假的awdp(直接傳🐎到靶機,然后連上去cat /flag.txt即可)題型分布不合理&#…

當前的網安行業絕對不是高薪行業

昨天,面試了一個剛畢業兩年的同學小A。第一學歷為某大專,第二學歷為某省地區的本科院校。面試過程表現一般偏下,但動不動就要薪資15K 這個人,我當場就PASS了。主要原因是,并非是否定小A同學的能力,而是他…

VSCode運行前端項目-頁面404

背景: 通過VSCode運行前端本地項目,運行成功后打開本地鏈接:http://1x.xxx.x.xxx:9803/ ,發現打開的頁面重定向到404:http//1xx.xxx.x.xxx:9803/404; 并且控制臺出現:Failed to load resource: …

詳解 ClickHouse 的監控及備份

一、ClickHouse 監控概述 ClickHouse 運行時會將一些個自身的運行狀態記錄到眾多系統表中(system.*)。所以對于 ClickHouse 自身的一些運行指標的監控數據,也主要來自這些系統表。直接查詢這些系統表進行監控會有一些不足之處: 這…

win10修改遠程桌面端口,Windows 10下修改遠程桌面端口及服務器關閉445端口的操作指南

Windows 10下修改遠程桌面端口及服務器關閉445端口的操作指南 一、修改Windows 10遠程桌面端口 在Windows 10系統中,遠程桌面連接默認使用3389端口。為了安全起見,建議修改此端口以減少潛在的安全風險。以下是修改遠程桌面端口的步驟: 1. 打…

IMX6ULL SD卡啟動uboot+kernel+rootfs

目錄 1. 背景說明 2.SD卡啟動 2.1準備條件 2.2 對SD卡分區格式化 2.3 制作sd卡鏡像 3.效果測試 1. 背景說明 網絡上絕大數教程,教大家把uboot燒錄到SD卡,然后uboot啟動后,通過TFTP下載kernel和設備樹,然后通過nfs掛載文件系…

油猴腳本入門

如何支持jquery 首先要在頭部引入外部資源 require https://cdn.bootcss.com/jquery/2.2.1/jquery.js編輯開始前添加一個注釋 /* globals $ */完整代碼 // UserScript // name study_jquery // namespace http://tampermonkey.net/ // version 1.0 // …

ultralytics官方更新 | 添加YOLOv10到ultralytics

💡💡💡本專欄所有程序均經過測試,可成功執行💡💡💡 專欄目錄:《YOLOv8改進有效漲點》專欄介紹 & 專欄目錄 | 目前已有40篇內容,內含各種Head檢測頭、損失函數Loss、…

【C++】類和對象(六)

文章目錄 二、static成員概念面試題一個題目 三、友元友元函數說明 友元類 四、內部類(了解)概念:注意:特性: 五、匿名對象 書接上回: 【C】類和對象(五)隱式類型轉換 二、static成員 01_31 03 12 01 概…

Xcode 手動添加模擬器

在Xcode中下載iOS模擬器很慢,且經常出現下載失敗,需重新從頭開始下載的問題。現了解Xcode 15 和運行環境是分離的,故闡述一下手動添加模擬器的步驟: 官網下載所需模擬器:https://developer.apple.com/download/all/?…

idea項目推送gitee/github

選擇需要的項目創建本地Git倉庫 添加到暫存區 第一次提交 或者點擊這里 寫備注并commit 推送遠程倉庫 填寫地址 解決上圖警告 右鍵打開項目,輸入 git pull origin master –allow-unrelated-historiesgit push -u origin master -f推送成功 idea項目推送github及克…

怎么用韓語說幫忙更合體,柯橋零基礎韓語培訓

1. **詳細解釋:** - **標準寫法與音譯:** - **??**(讀作 dop-da):動詞“幫助”。 - **????**(讀作 do-wa-ju-da):動詞“幫忙”,字面意思是“給予幫助”。 - **??…

PMP證書在國內已經泛濫了,大家怎么看?

目前,越來越多的人獲得了PMP證書。自1999年PMP引入中國以來,全國累計PMP考試人數接近60萬人次,通過PMP認證的人數約為42萬人。雖然這個數據看起來很大,但絕對不能說是過多。 首先,PMP在中國并不普遍。根據美國項目管理…

【源碼+文檔+調試講解】災害應急救援平臺

摘 要 災害應急救援平臺的目的是讓使用者可以更方便的將人、設備和場景更立體的連接在一起。能讓用戶以更科幻的方式使用產品,體驗高科技時代帶給人們的方便,同時也能讓用戶體會到與以往常規產品不同的體驗風格。 與安卓,iOS相比較起來&…

linux好用的分屏器byobu

什么是byobu byobu是linux下分屏器工具tmux或screen的包裝器。 安裝 sudo apt-get install byobu 啟動 emaubuntu:~$ byobu配置通知欄 按F9進入Byobu配置菜單導航到切換狀態通知選項,然后按ENTER鍵可以在選中和不選中之間切換選擇要啟用的狀態通知后&#xff…

深度學習項目實例(一)—— 實時AI換臉項目

一、前言 人工智能(AI)技術的快速發展為各個領域帶來了革命性的變化,其中之一就是人臉識別與圖像處理技術。在這之中,AI換臉技術尤其引人注目。這種技術不僅在娛樂行業中得到廣泛應用,如電影制作、視頻特效等&#xf…

static在C/C++中的作用

C語言中 static 的作用: 文件作用域的全局變量: 當static修飾一個全局變量時,這個變量只在定義它的文件內部可見,不會被其他文件訪問。 靜態局部變量: 在函數內部,static關鍵字確保局部變量的生命周期貫穿整…