docker-compose 搭建 Prometheus+Grafana監控系統
- 2022 年 6 月 12 日
- 筆記
- 【Study】-- Tool
有關監控選型之前有寫過一篇文章: 監控系統選型,一文輕鬆搞定!
監控對象
- Linux伺服器
- Docker
- Redis
- MySQL
數據採集
1)、prometheus: 採集數據
2)、node-exporter: 收集作業系統和硬體資訊的metrics
3)、cadvisor : 收集Docker的metrics
4)、redis-exporter: 收集Redis的metrics
5)、 mysql-exporter: 收集MySQL的metrics
報表
- grafana: 圖表展示
一、環境搭建
1、MySQL用戶授權
之前想用root帳號嘗試收集MySQL的metrics,但在啟動docker的時候一直報錯:
「Error pinging mysqld" err="Error 1049: Unknown database
後來去官方地址在發現,需要對用戶進行授權才能收集監控數據資訊。
gitHub開源項目有說明: //github.com/prometheus/mysqld_exporter
所以這裡重新創建用戶並授權。
CREATE USER 'exporter'@'%' IDENTIFIED BY '123456';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';
GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
注意:建議為用戶設置最大連接限制,以避免在重負載下監控抓取使伺服器過載。
2、配置docker-compose.yml
我在/etc/prometheus創建一個docker-compose.yml文件,文件內容如下
version: '2'
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
networks:
- monitor
alertmanager: #預警模組
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
restart: always
ports:
- "9093:9093"
networks:
- monitor
grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
restart: always
ports:
- "3000:3000"
networks:
- monitor
node-exporter:
image: quay.io/prometheus/node-exporter
container_name: node-exporter
hostname: node-exporter
restart: always
ports:
- "9100:9100"
networks:
- monitor
cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
hostname: cadvisor
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8899:8080"
networks:
- monitor
redis-exporter:
image: oliver006/redis_exporter
container_name: redis-exporter
hostname: redis-exporter
restart: always
ports:
- "9121:9121"
command:
- "--redis.addr=redis://127.0.0.1:6379"
networks:
- monitor
mysql_xporter:
image: prom/mysqld-exporter
container_name: mysql-exporter
hostname: mysql-exporter
restart: always
ports:
- "9104:9104"
environment:
DATA_SOURCE_NAME: 'exporter:123456@(127.0.0.1:3306)'
networks:
- monitor
因為這裡prometheus容器的配置文件重新掛載了,掛載到/etc/prometheus/目錄下,所以在該目錄創建好prometheus.yml文件。
3、配置prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['ip:9090'] //ip為自己伺服器IP
- job_name: 'cadvisor'
static_configs:
- targets: ['ip:8899']
- job_name: 'node'
static_configs:
- targets: ['ip:9100']
- job_name: 'redis_exporter'
static_configs:
- targets: ['ip:9121']
- job_name: 'mysql_exporter'
static_configs:
- targets: ['ip:9104']
二、docker-compose啟動
在docker-compose.yml文件目錄下通過 docker-compose up -d 啟動容器。
我們可以通過 docker-compose ps 容器是否成功。
啟動成功,就可以分別訪問:
//ip:9090:prometheus的原生web-ui//ip:3000:Grafana開源的監控可視化組件頁面//ip:9100:收集伺服器的metrics//ip:8899:收集docker的metrics//ip:9100:收集redis的metrics//ip:9104:收集mysql的metrics
打開 //ip:9090/targets ,如果State都是UP即代表Prometheus工作正常,如下圖所示:
從圖中可以看出所有State都是UP,說明已經搭建成功了,接下來就通過Grafana來展示監控數據。
三、Grafana配置監控
打開//ip:3000, 使用默認帳號密碼admin/admin登錄
默認進來是創建資料庫的頁面,在如下圖所示中,選擇Prometheus
輸入prometheus數據源的資訊,主要是輸入name和url
數據源配置好之後,我們就可以配置對應的監控資訊了,常見的配置監控已經有對應的模板了,就不需要我們一個一個地去配置了。(如果不滿足的話,那可以手動配置)
四、選擇監控模版
grafana提供了許許多多精美的模版,我們可以在模版庫中選擇我們需要到模版導入到當前項目就可以了,使用非常方便。
模板地址: //grafana.com/grafana/dashboards/
1、Linux硬體資訊監控
本次要導入的模板://grafana.com/grafana/dashboards/11074
選擇好模版後,只需要導入到Grafana中就可以了。
導入成功後,選擇數據源,為該模版命名
即可看到逼格非常高的系統主機節點監控資訊了
2、docker監控
模版ID :893
監控效果
3、Mysql監控
模版ID :7362
監控效果
4、Redis監控
模版ID :10534
監控效果
每種監控都有非常多的模版樣式,我們可以去模版庫中去找自己喜歡的就可以。這裡監控就搭建完成了。
聲明: 公眾號如需轉載該篇文章,發表文章的頭部一定要 告知是轉至公眾號: 後端元宇宙。同時也可以問本人要markdown原稿和原圖片。其它情況一律禁止轉載!

