Prometheus簡介是一套開源的系統監控報警框架。Prometheus作為新一代的雲原生監控系統,相比傳統監控監控系統(Nagios或者Zabbix)擁有如下優點
易管理性:Prometheus核心部分只有一個單獨的二進制文件,可直接在本地工作,不依賴於分布式存儲
高效性:單一Prometheus可以處理數以百萬的監控指標;每秒處理數十萬的數據點
易於伸縮性:通過使用功能分區(sharing)+聯邦集群(federation)可以對Prometheus進行擴展,形成一個邏輯集群
豐富的看板:多種可視化圖表及儀表盤支持
針對容器監控:對docker,k8S監控有成熟解決方案
Prometheus架構圖
Prometheus Server: 收集指標和存儲時間序列數據,並提供查詢接口
ClientLibrary:客戶端庫
Push Gateway: 短期存儲指標數據。主要用於臨時性的任務
Exporters:采集已有的第三方服務監控指標並暴露metrics
Alertmanager:告警
Web UI :簡單的web控制台
官方安裝說明
https://prometheus.io/docs/prometheus/latest/installation/
准備兩台服務器
192.168.106.101 #Prometheus服務端
192.168.106.100 #被監控服務器
101下載prometheus.yml主配置文件
# my global config
global:
scrape_interval: 15s # 采集被監控段指標的一個周期
evaluation_interval: 15s # 告警評估的一個周期
# 告警的配置文件
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 告警規則配置
rule_files:
# - "first_rules.yml"
#被監控端的配置
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: "docker"
static_configs:
- targets: ['192.168.31.62:8080']
- job_name: "Linux"
static_configs:
- targets: ['192.168.31.62:9100']
下載鏡像
docker pull prom/prometheus
開啟內核路由轉發
echo -e "net.ipv4.ip_forward = 1\nnet.ipv4.conf.default.rp_filter = 0 \nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
sysctl -p
啟動鏡像,將主配置文件掛載到容器內
docker run -d --name=prometheus -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
http://192.168.106.101:9090/ #訪問該地址,出現一個簡單ui界面,說明部署成功
實戰一:監控一個容器服務(常用的監控指標有: 內存,CPU,硬盤,網絡,狀態
)
非交互獲取容器的監控指標
`docker stats --no-stream lnmp_nginx

cAdvisor (Container Advisor) 用於收集正在允許的容器資源使用和性能信息。相當於zabbix-agent一樣提供一個數據采集的接口
docker部署cAdvisor:
100被監控服務器安裝
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
訪問該地址,就能看到實時采集到的數據
http://192.168.106.100:8080/containers/
去101上修改prometheus的配置文件,復制一個job文件,job_name 指名稱,targets為cAdvisor服務器地址ip和端口
vim /tmp/prometheus.yml
docker restart prometheus #重啟服務
http://192.168.106.101:9090/ 可以看到監控指標說明獲取數據成功
101服務器上安裝grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana

http://192.168.106.101:3000/ #p配置數據源,配置完成點擊保存
https://grafana.com/grafana/download #該地址下載grafana模板
保存,選擇Prometheus數據源后可以看到如下圖所示
可以看到100上所有容器都被監控到了,至此監控容器完成!
實戰二:監控Linux主機
編寫了一個采集linux主機metrics的腳本
cat node_exporter.sh
#!/bin/bash
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar zxf node_exporter-0.17.0.linux-amd64.tar.gz
mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter
cat <<EOF >/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable node_exporter
systemctl restart node_exporter
運行這個腳本就能監控Linux主機
測試 訪問
http://192.168.106.100:9100/metrics
說明采集信息成功
修改101服務上的配置文件/tmp/prometheus.yml
docker restart prometheus
檢測方法:http://192.168.106.101:9090/classic/targets,up說明采集成功
然后配置grafana儀表盤,本次導入9276模板,和剛才導入模板的方式一致。導入完成即可看到如圖所示模板
至此實戰監控Linux部署完成