Prometheus + Grafana 監控
官網介紹:Prometheus 是一個開源系統 監控和警報工具包最初由 SoundCloud 構建。自 2012 年成立以來,許多 公司和組織已經采用了 Prometheus,并且該項目具有非常 活躍的開發人員和用戶社區。它現在是一個獨立的開源項目 并獨立于任何公司進行維護。為了強調這一點,并澄清 該項目的治理結構,Prometheus 于 2016 年加入云原生計算基金會 作為 Kubernetes 之后的第二個托管項目。
省流:Prometheus 就像小區物業的智能監控系統,能24小時盯著服務器/應用服務有沒有"生病",一有問題就自動打電話通知管理員。最初是某個音樂公司開發的,現在變成全世界程序員共同維護的明星項目
Docker 安裝 Prometheus
要想使用 Prometheus,首先就需要將其部署下來才行,這里選擇使用部署方式是 Docker 自動化部署(默認 Docker 為安裝并配置好狀態,若沒有配置好 Docker,請先參考文章安裝好 Docker:https://blog.csdn.net/qq_73574147/article/details/133574279)
創建配置文件
創建一個 prometheus 文件夾,在其中創建一個prometheus.yml
文件,并寫入下面的內容
global:scrape_interval: 15s # 每15秒采集一次數據scrape_configs:- job_name: "prometheus" # 監控對象名稱static_configs:- targets: ["localhost:9090"] # 監控 Prometheus 自己
拉取鏡像
選擇拉取官方的 prom/prometheus 鏡像
在控制臺輸入下面的命令(默認拉取最新版)
docker pull prom/prometheus
拉取成功之后(如圖)
執行下面的命令啟動容器(注意: /path/prometheus 需換成實際路徑)
docker run -d -p 9090:9090 --name prometheus -v /path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
顯示下面的界面即為創建成功
然后用瀏覽器訪問 http://localhost:9090,如果看到下面的 Prometheus 的 Web 界面即為啟動成功
然后點擊菜單欄的 Status
,再點擊 Target health
看到 Prometheus 的狀態為 UP,即為正常
監控 Docker 自身(可選)
這里需要先拉取 Node Exporter 容器鏡像(采集物理機硬件數據)
docker pull prom/node-exporter
執行下面的命令啟動 Node Exporter 容器
docker run -d --name node-exporter -p 9100:9100 --net="host" prom/node-exporter
在之前的 prometheus.yml
文件中添加以下內容(IP地址記得換成自己機器的IP地址)
- job_name: "docker"static_configs:- targets: ["192.168.1.11:9100"] # 新增的監控目標
使用 Docker 重啟 Prometheus 容器
docker restart prometheus
可以看到 Target Health 中 Docker 與 Prometheus 的狀態都為 UP,說明已經啟動成功
如果要監聽其他服務器主機的狀態也是如此操作。
安裝 Grafana
首先拉取 Grafana 的鏡像
docker pull grafana/grafana
啟動 Grafana 容器
docker run -d -p 3000:3000 --name=grafana grafana/grafana
啟動成功之后,訪問地址:http://localhost:3000
,用戶名與密碼都為 admin
如果想要單獨設置密碼,則在上述命令中追加一個-e GF_SECURITY_ADMIN_PASSWORD:password
,password 為設置的密碼
docker run -d -p 3000:3000 --name=grafana -e GF_SECURITY_ADMIN_PASSWORD=password grafana/grafana
登錄進去之后,點擊 Connections
->Data Source
點擊 Add data source
,在里面找到 Prometheus (一般是第一個)
也可以直接搜索
點擊 Prometheus,然后設置名稱與其IP地址
其他的配置選配(默認就行),一直往下滑,然后點擊 Sava & test
當出現下面的提示時表示已經配置完成了
設置 Dashboard
點擊右上角+
號,選擇Import dashboard
關于監控面板 Dashboard 模板的素材,可以下載使用 Grafana 官方提供的,訪問地址:https://grafana.com/grafana/dashboards/,通過選擇對應的數據源來找到合適的面板
因為這里使用的是 Prometheus,使用 DataSource 選擇 Prometheus
然后點擊 Download JSON
就會得到一個 json 文件
然后將下載的 json 文件拖到 Import dashboard 頁面中的上傳框中即可
然后選擇剛才配置好的 Prometheus
點擊 import
即可
當然,如果覺得下載 JSON 文件太麻煩,并且已經注意到下載的 JSON 文件的名稱,就會發現這些 dashboard 都有一個類似于 id 的標識
這時候只需要回到Import dashboard
頁面,將這個“id”輸入進去,點擊Load
就可以實現跟下載 JSON 文件一樣的效果
這里推薦幾個不錯的 Dashboard 模板
- MySQL: 7362、7371、14057
- Redis: 763、14192、14432
- Nginx:9614、2949
- Linux(服務器監控): 8919、9276、1860、12633
導入模板成功后效果圖如下(8919):
ID:9276
監控 MySQL(可選)
首先執行下面的命令安裝 MySQL Exporter
拉取 MySQL Exporter 鏡像
docker pull prom/mysqld-exporter
創建 MySQL Exporter 容器
MySQL主機IP和MySQL賬號密碼需換成自己的
docker run -d -p 9104:9104 --name mysql-exporter prom/mysqld-exporter --mysqld.username=root:123456 --mysqld.address=192.168.1.11:3306
在 prometheus.yml
文件中添加以下內容(IP地址記得換成安裝 Prometheus 機器的IP地址)
- job_name: "mysql"static_configs:- targets: ["192.168.1.11:9104"] # 新增 MySQL 監控目標
重啟 Prometheus
docker restart prometheus
打開網址 http://localhost:9090
查看 MySQL Exporter 狀態是否為 UP
然后按照上述設置 Dashboard
步驟,選擇設置一個 MySQL 的監控面板,如下圖(ID: 14057)
監控 Redis(可選)
跟監控 MySQL 步驟類似,先拉取 Redis Exporter 鏡像
docker pull oliver006/redis_exporter
創建 Redis Exporter 容器(IP換成自己Redis主機的IP地址,密碼替換為實際的密碼,如果沒有設置密碼則把-e REDIS_PASSWORD="123456"刪除即可
)
docker run -d --name redis-exporter -p 9121:9121 -e REDIS_ADDR="redis://192.168.1.2:6379" -e REDIS_PASSWORD="123456" oliver006/redis_exporter
在 prometheus.yml
文件中添加以下內容(IP地址記得換成安裝 Prometheus 機器的IP地址)
- job_name: "redis"static_configs:- targets: ["192.168.1.2:9121"] # 新增 Redis 監控目標
重啟 Prometheus
docker restart prometheus
選擇設置一個 Redis 監控面板,如下圖(ID: 763)
如上,就已經完成 Prometheus + Grafana 對 MySQL 、Redis、服務器主機(Linux) 的常規指標的簡單基礎監控,當然,也可以諸如此類進行**“熱插拔式”**的監控其他應用/服務(如Nginx等)