使用docker部署Prometheus和Grafana

1. 场景说明

想要对192.168.10.1、192.168.10.2、192.168.10.3这几台虚拟机进行主机性能监控,对192.168.10.2、192.168.10.3的MySQL占用进行监控。

创建新的虚拟机192.168.20.9,准备部署Prometheus和Grafana。配置是2核6G,50G磁盘大小,绰绰有余,可请酌情增减。

2. 安装docker

见文章CentOS7安装docker

3. 下载镜像

# 监控性能指标
docker pull prom/node-exporter
# 监控MySQL性能指标
docker pull prom/mysqld-exporter
# Prometheus监控系统
docker pull prom/prometheus
# 可视化和分析监控指标的开源平台
docker pull grafana/grafana

4. 启动容器

4.1 安装node-exporter

如果想要监控主机资源(CPU/内存/磁盘等),则需要对每个设备安装node-exporter,即四台虚拟机都需要安装;请确保每台设备都安装了docker,并拉取了node-exporter镜像。

# 运行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

访问【IP地址: :9100/metrics】查看效果,如果出现如下的效果图,则说明启动成功。

【效果图片】

4.2 安装mysqld-exporter

如果想要监控主机MySQL的占用情况,则需要对每个设备安装mysqld-exporter,即192.168.10.2、192.168.10.3这两台需要安装;请确保每台设备都安装了docker,并拉取了mysqld-exporter镜像。

建议在需要被监控主机的MySQL中添加专门的监控账号。

# 创建专门的监控账号
create user 'exporter'@'%' identified by 'yourpassword';
# 授予账号权限并刷新
grant process, replication client, select on *.* to 'exporter'@'%';
flush privileges;
# 创建配置文件,并进行配置,创建容器需要对该文件进行挂载
mkdir /path/to/
touch .my.cnf
vim .my.cnf

将下面的内容CV到.my.cnf中

[client]
user = exporter
password = yourpassword
host = localhost
port = 3306
# 运行mysqld-exporter容器
docker run -d --name mysqld_exporter \
--restart=always -p 9104:9104 \
 -v /path/to/.my.cnf:/.my.cnf \
mysqld-exporter

访问【IP地址:9104/metrics】查看效果,如果出现如下的效果图,则说明启动成功。

4.3 安装prometheus

在192.168.20.9上部署Prometheus

# 创建Prometheus配置文件,并进行配置,创建容器需要对该文件进行挂载
mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml

将下面的内容CV到prometheus.yml中

global:
  # 默认抓取间隔
  scrape_interval:     60s
  # 告警规则评估间隔
  evaluation_interval: 60s
  # 抓取超时时间
  # scrape_timeout:      10s

# 抓取配置
scrape_configs:

  # prometheus自身监控
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  # node-exporter监控,对每个需要进行监控的设备安装
  - job_name: node
    static_configs:
      # 172.17.0.1是docker0的IP地址,可以通过ip addr show进行查询
      # 也可以将其替换成本机的实际IP地址
      - targets: ['172.17.0.1:9100']
        labels:
          instance: localhost
      - targets: ['10.8.100.7:9100','10.8.100.81:9100']

  # mysqld-exporter监控,对每个需要进行监控的设备安装mysqld-exporter
  - job_name: mysqld
    static_configs:
      - targets: ['10.8.100.92:9104','10.8.100.93:9104','10.8.100.91:9104','122.112.197.7:9104']

  # windows-eporter监控,对每个需要进行监控的设备安装windows-eporter
  # 这个是监控windows系统的,需要在官网下载专门的安装包,此处不做说明,插入本段代码时可以将本段删除
  - job_name: windows
    static_configs:
      - targets: ['10.8.100.139:9182','10.8.100.102:9182']
# 运行prometheus容器
docker run  -d --name prometheus \
--restart=always \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus

访问【192.168.20.9:9090/graph】查看效果,如果出现如下的效果图,则说明启动成功。

4.4 安装grafana

在192.168.20.9上部署Grafana

mkdir /opt/grafana-storage
chmod 777 -R /opt/grafana-storage
docker run -d --name grafana --restart=always  \
 -p 3000:3000 --name=grafana  \
 -v /opt/grafana-storage:/var/lib/grafana grafana/grafana

访问【192.168.20.9:3000】查看效果,如果出现如下的效果图,则说明启动成功。

grafana初始账号密码为admin/admin