Prometheus + Grafana监控平台
Prometheus简介
Prometheus(普罗米修斯R)是一套开源的监控&报警&时间序列数据库的组合,由SoundCloud公司开发。
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker。
Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
Prometheus特点
- 多维数据模型(有metric名称和键值对确定的时间序列)
- 灵活的查询语言不依赖分布式存储。
- 通过pull方式采集时间序列,通过http 协议传输。
- 支持通过中介网关的 push时间序列的方式。
- 监控数据通过服务或者静态配置来发现。
- 支持图表和dashboard等多种方式。
Prometheus 架构
- Prometheus主程序:主要是负责存储、抓取、聚合、查询方面。
- Alertemanager程序:主要是负责实现报警功能。
- Pushgateway程序:主要是实现接收有Client-push过来的指标数据,在指定的时间间隔,有主程序来抓取。
- *_exporter程序:主要是负责采集物理机、中间件的信息。
部署Prometheus + Grafana监控平台
准备工作:
1.安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
使用上述命令安装好脚本,并参照本站教程对Docker进行优化。
2.安装Prometheus
编辑Docker-Compose文件
新建Grafana目录:
mkdir Grafana
进入Grafana目录,在目录下新建docker-compose.yml文件:
cd Grafana
nano docker-compose.yml
文件内容:
version: '3.3'
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
depends_on:
- renderer
- prometheus
ports:
- 3000:3000
environment:
GF_RENDERING_SERVER_URL: http://renderer:8081/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
GF_LOG_FILTERS: rendering:debug
volumes:
- ./data/grafana/grafana_data:/var/lib/grafana
renderer:
image: grafana/grafana-image-renderer:latest
ports:
- 8081
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
hostname: node_exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
prometheus:
image: prom/prometheus:v2.26.0
restart: always
container_name: prometheus
hostname: prometheus
ports:
- 9090:9090
volumes:
- ./data/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml
command: --config.file=/etc/prometheus/prometheus.yml
新建grafana数据目录并修改权限:
mkdir -p data/grafana/grafana_data && chmod 777 data/grafana/grafana_data
新建promtheus的配置文件,并编辑内容:
mkdir -p data/prometheus/conf && nano data/prometheus/conf/prometheus.yml
填入内容:
global:
scrape_interval: 5s # pull metrics interval
scrape_configs:
- job_name: 'node_http'
static_configs:
- targets: ["127.0.0.1:9100"]
启动docker-compose:
docker-compose up -d
登录界面:
- 【prometheus】http://服务器IP:9090
- 【grafana】http://服务器IP:3000
加载监控图形界面:
输入网址 http://服务器IP:3000 ,用户名admin 密码admin,登录。
大功告成,可看到监控数据
提示,如果监控面板上看不到数据,可以检查Prometheus是否和NodeExporter正常连接