Docker 部署普羅米修斯監(jiān)控
介紹Prometheus
Prometheus(普羅米修斯)是一套開源的監(jiān)控&報警&時間序列數(shù)據(jù)庫的組合,起始是由SoundCloud公司開發(fā)的。隨著發(fā)展,越來越多公司和組織接受采用Prometheus,社會也十分活躍,他們便將它獨立成開源項目,并且有公司來運作。Google SRE的書內(nèi)也曾提到跟他們BorgMon監(jiān)控系統(tǒng)相似的實現(xiàn)是Prometheus?,F(xiàn)在最常見的Kubernetes容器管理系統(tǒng)中,通常會搭配Prometheus進(jìn)行監(jiān)控。
Prometheus基本原理是通過HTTP協(xié)議周期性抓取被監(jiān)控組件的狀態(tài),這樣做的好處是任意組件只要提供HTTP接口就可以接入監(jiān)控系統(tǒng),不需要任何SDK或者其他的集成過程。這樣做非常適合虛擬化環(huán)境比如VM或者Docker。
Prometheus應(yīng)該是為數(shù)不多的適合Docker、Mesos、Kubernetes環(huán)境的監(jiān)控系統(tǒng)之一。
輸出被監(jiān)控組件信息的HTTP接口被叫做exporter 。目前互聯(lián)網(wǎng)公司常用的組件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系統(tǒng)信息 (包括磁盤、內(nèi)存、CPU、網(wǎng)絡(luò)等等),具體支持的源看:https://github.com/prometheus。
與其他監(jiān)控系統(tǒng)相比,Prometheus的主要特點是:
一個多維數(shù)據(jù)模型(時間序列由指標(biāo)名稱定義和設(shè)置鍵/值尺寸)。
非常高效的存儲,平均一個采樣數(shù)據(jù)占~3.5bytes左右,320萬的時間序列,每30秒采樣,保持60天,消耗磁盤大概228G。
一種靈活的查詢語言。
不依賴分布式存儲,單個服務(wù)器節(jié)點。
時間集合通過HTTP上的PULL模型進(jìn)行。
通過中間網(wǎng)關(guān)支持推送時間。
通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標(biāo)。
多種模式的圖形和儀表板支持。
一 安裝運行Prometheus(docker版)
下面介紹如何使用Prometheus、Grafana、CAdvisor、node-exporter、mysqld-exporter對本機服務(wù)器性能、Docker容器、MySQL數(shù)據(jù)庫進(jìn)行監(jiān)控。
監(jiān)控本機,只需要一個exporter
node_exporter – 用于機器系統(tǒng)數(shù)據(jù)收集
mysqld-exporter 用于MySQL數(shù)據(jù)庫數(shù)據(jù)收集
Cadvisor 用于收集宿主機上的docker容器數(shù)據(jù)
Grafana是一個開源的功能豐富的數(shù)據(jù)可視化平臺,通常用于時序數(shù)據(jù)的可視化。它內(nèi)置了以下數(shù)據(jù)源的支持:
下面是我們安裝時用到的架構(gòu)圖:
二 拉取鏡像
docker pull prom/node-exporter
docker pull prom/mysqld-exporter
docker pull google/cadvisor
docker pull prom/prometheus
docker pull grafana/grafana
1 啟動node-exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
驗證是否啟動成功
訪問url:
http://ip:9100/metrics
啟動mysqld-exporter
docker run -d --name mysqld_exporter --restart=always -p 9104:9104 -e DATA_SOURCE_NAME="admin:admin@(192.168.232.3:3306)/" prom/mysqld-exporter
驗證
http://ip:9104/metrics
啟動cadvisor
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8081:8080 --detach=true --name=cadvisor --privileged --device=/dev/kmsg google/cadvisor:latest
1驗證http://ip:9104/metrics
2驗證訪問8081端口
添加redis監(jiān)控
docker pull oliver006/redis_exporter:latest
docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter:latest --redis.addr redis://192.168.232.3:6379 --redis.password "myredis"
創(chuàng)建目錄掛載啟動prometheus
mkdir /home/prometheus
cd /home/prometheus/
vim prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['172.17.0.2:9100']
labels:
instance: localhost
# - targets: ['192.168.232.3:9100']
#這里添加targets,可以使用Prometheus監(jiān)控其他裝有node_exporter的節(jié)點,單節(jié)點則不需要
# labels:
# instance: 192.168.232.3
- job_name: cadvisor
static_configs:
- targets: ['172.17.0.6:8081']
labels:
instance: cAdvisor
- job_name: mysqld
static_configs:
- targets: ['172.17.0.4:9104']
labels:
instance: mysql-exporter
- job_name: redis
static_configs:
- targets: ['172.17.0.10:9121']
labels:
instance: redis-exporter
注意:修改IP地址,這里的172.17.0. xx就是docker容器內(nèi)的私網(wǎng),需要自行查詢
掛載啟動prometheus
docker run -d --name prometheus --restart=always -p 9090:9090 -v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
驗證 ip+端口
http://ip:port/graph
http://ip:port/targets
啟動grafana
新建空文件夾grafana-storage,用來存儲數(shù)據(jù)
mkdir /home/grafana-storage
賦予權(quán)限因為grafana用戶會在這個目錄寫入文件,直接設(shè)置777,比較簡單粗暴!
chmod 777 -R /home/grafana-storage
啟動grafana
docker run -d --name grafana --restart=always -p 3000:3000 --name=grafana -v /home/grafana-storage:/var/lib/grafana grafana/grafana
訪問url:
http://ip:3000/
選擇Prometheus
name名字寫Prometheus
type 選擇Prometheus,因為數(shù)據(jù)都從它那里獲取
url 輸入Prometheus的ip(docker容器私網(wǎng)ip)+端口
點擊下面的Save & Test,如果出現(xiàn)綠色的,說明ok了
導(dǎo)入對應(yīng)模版駕駛艙
MySQL Overview
Docker Registry
Linux主機詳情
redis文章來源:http://www.zghlxwxcb.cn/news/detail-653623.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-653623.html
到了這里,關(guān)于Docker 部署普羅米修斯監(jiān)控的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!