使用 Docker 部署 Prometheus + Grafana 监控平台

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,登录。

修改密码,确定
配置数据库:选择Configuration->datasource
Add DataSource
选择Prometheus
在Promethues的配置页面中,填入URL, http://localhost:9090,点击save and test
点选DashBoard中的Browse
点击import
输入面板编号 8919,点击Import
选择Promethues数据库,点Import

大功告成,可看到监控数据

提示,如果监控面板上看不到数据,可以检查Prometheus是否和NodeExporter正常连接

Hello World
Hello World