简介
其实这种像Grafana 这种无状态应用非常适合使用docker来部署,后续扩展迁移可以完全保证环境的一致性。
下面我们使用docker快速部署一个Grafana 服务
监控端安装:
Prometheus Server(普罗米修斯监控主服务器 )
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)
Grafana (展示普罗米修斯监控界面)被监控安装:
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)
方法 / 步骤
一: 安装 Grafana
# 拉取最新 grafana:9.1.0版本
docker pull grafana/grafana:9.1.0
# 生成预配置
docker run -d \
--name grafana3000 \
-p 3000:3000 \
grafana/grafana:9.1.0
- ip:3000端口打开
1.1: 配置文件进行挂载
docker cp grafana:/etc/grafana/. /docker/grafana3000/conf
docker cp grafana:/var/lib/grafana/. /docker/grafana3000/data
docker cp grafana:/var/log/grafana/. /docker/grafana3000/log
1.2 编辑用户分组信息 (重要)
# 添加用户
useradd grafana
# 指定用户UID信息
vi /etc/passwd
--------- 官方约定grafana用户UID和GID都为472--------------
grafana:x:472:472::/home/grafana:/bin/bash
---------------------------------------------------------
# 编辑用户分组信息
vi /etc/group
---------------
grafana:x:472:
---------------
# 赋予账户权限
chown -R grafana:grafana /docker/grafana3000
# 查看目录所属信息
ls -lhat /docker/grafana3000
1.3 : 安装并检测
docker run -d \
--name grafana3000 \
-p 3000:3000 \
-v /docker/grafana3000/conf:/etc/grafana \
-v /docker/grafana3000/data:/var/lib/grafana \
-v /docker/grafana3000/log:/var/log/grafana \
-v /etc/localtime:/etc/localtime:ro \
--restart=always \
grafana/grafana:9.1.0
1.4 查看是否在运行:
docker ps -l
查看启动日志:
docker logs grafana3000
如果没有启动成功的话,可以排查一下挂载的目录是否正确,比如是否配了目录权限等。
二: 部署并启动 Prometheus Server
# 选择最新2.38.0版本
docker pull prom/prometheus:v2.38.0
# 创建prometheus.yml文件
mkdir /docker/prometheus9090
cd /docker/prometheus9090
vim prometheus.yml
- 编写yml文件 (一定要注意格式,否则会报错)
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- 运行
docker run -d \
--name=prometheus9090 \
-p 9090:9090 \
-v /docker/prometheus9090/prometheus.yml:/etc/prometheus/prometheus.yml \
--restart=always \
prom/prometheus:v2.38.0
- 查看是否安装成功
http://ip:9090
- 查看监控的数据
http://服务器IP:9090/metrics可以查看到监控的数据
下面就监控远程Linux主机, 在被监控端上安装node_exporter组件了
三: 部署并启动 node-exporter
不建议将其部署为Docker容器,因为它需要访问主机系统。请注意,您要监视的任何非根安装点都需要绑定到容器中。如果启动容器以进行主机监视,请指定path.rootfs参数。
# 拉取镜像(取最新稳定版本)
docker pull prom/node-exporter:v1.3.1
# node-expoter 默认端口号是9100
# 启动命令
docker run -d \
--net="host" \
--name node_exporter \
--restart=unless-stopped -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--restart=always \
prom/node-exporter:v1.3.1
启动后通过
http://IP:9100/metrics 查看是否启动成功 (包含指标数据为启动成功)
五: 整合配置
5.1 到prometheus配置添加监控机器
# 更改配置文件
vi /docker/prometheus9090/prometheus.yml
# job_name 给被监控主机取个名字,我这里直接填的IP
# targets 填写被监控主机的IP和端口
- job_name: 'nasvm0-exporter'
static_configs:
- targets: ['192.168.11.100:9100']
改完配置文件后,重启服务
docker restart [CONTAINER ID]
打开prometheus
5.2 在Grafana上添加Prometheus 服务数据源
我们把prometheus服务器收集的数据做为一个数据源添加到grafana,让grafana可以得到prometheus的数据
- 返回配置我们可以看到已经添加的数据源
5.3 Grafana图形显示Linux硬件信息
在🔗Grafana官方提供模板 中寻找 🔗 本次要导入的模板,该插件里面包含:CPU 内存 磁盘IO 网络, 温度和其他监控指标
- 面板里面选择导入
将面板ID填入,选择数据源,点击导入
- 导入成功
六: 监控报警
- prometheus配合alertmanager这个组件报警,报警规则需要手动编写,这需要对prometheus+alertmanager有一定的了解
- grafana配合SaaS模式的云告警平台onealert报警,onealert也是需要时间熟悉的
- 这里演示最传统的grafana+email报警
6.1 修改grafana配置文件,添加发件邮箱
❗❗注意:如果smtp邮箱的25端口被禁用,如果出现发送超时可以改成465端口重试
🔗 相关邮箱服务地址查询
vi /docker/grafana3000/conf/grafana.ini
# 找到smtp关键字
#################################### SMTP / Emailing ##########################
[smtp]
enabled = true # 改成true
host = smtp.exmail.qq.com:465 # 发送服务器地址和端口
user = # 这里填写发件邮箱
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = # 这里填写发件邮箱密码或授权密码
;cert_file =
;key_file =
skip_verify = true # 改成true
from_address = # 这里填写发件邮箱
;from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS
6.2 在通知模块创建收件人组
- 建立联系点
然后发送成功
参考资料 & 致谢
[1] Grafana监控