- 系统版本: Centos 7.6
- 安装方式: docker-compose
- 本次安装了 AlertManager 但是因为规则配置叫麻烦, 最终未使用, 而是直接使用 Grafana 的 Alert 功能
安装环境
1. 安装docker
# 只升级所有包,不升级软件和系统内核
yum -y upgrade
# 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置 yum 源(阿里),加速
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看可用版本列表
yum list docker-ce --showduplicates | sort -r
# 选择一个版本安装 版本号含义: 年份.月份.更新
yum -y install docker-ce-19.03.15
# 启动docker daemon 如果没有权限可执行 gpasswd -a $USER docker
systemctl start docker
2. 安装 docker-compose
# 下载最新版本的 docker-compose 到 /usr/bin 目录下
curl -L https://github.com/docker/compose/releases/download/1.28.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
# 给 docker-compose 授权
chmod +x /usr/bin/docker-compose
安装 Prometheus + Grafana
编写各个配置文件
配置文件的详细信息, 见文末【资料】一节
创建文件夹 & 复制上传配置文件
# 创建文件夹, 这里放到home目录下
mkdir -p /home/monitor/prometheus/config/rules
mkdir -p /home/monitor/grafana/config
# docker-compose的设置, 将配置文件复制到对应目录下
/home/monitor/docker-compose.yml
/home/monitor/prometheus/config/prometheus.yml
/home/monitor/prometheus/config/alertmanager.yml
/home/monitor/grafana/config/grafana.ini
启动服务
cd /home/monitor
# grafana 需要特殊权限, 修改到472用户组即可
chown 472:472 grafana -R
docker-compose up -d
此时, 可通过访问 http://localhost:3000 查看 grafana 界面进行配置. 初始登录帐密: admin/admin
, 第一次登录需要修改 admin 的密码.
相关配置
Grafana 基础配置
- 关联 Prometheus 数据源
点击右边菜单条的齿轮
按钮DataSource
配置数据源, 选择Prometheus
Url 填写 Prometheus 服务的地址, 如: http://localhost:9090 其余默认即可.
图表配置
配置仪表盘
新建一个 DashBoard , 仪表盘中可以添加各种图表. 仪表盘本身可设置一些参数, 点击右上角 齿轮
按钮配置, 主要有两个:
- General: 设置仪表盘的基本信息, 如名字, 标签, 分组等
- variables: 设置各种参数, 这些参数可以在查看仪表盘时进行过滤, 也可以在图表配置中使用, 例如:
- 固定参数
- 根据 prometheus 输出过滤的参数, 比如 instance. 使用PromQL 语法
- 固定参数
配置图表
- Query : 图表的查询信息
- 图表的 Query 使用的是 PromQL 语法
- 可添加多条 Query (可能来源不同等)
- 右边设置面板可设置各种现实属性, 显示过滤, 不同 Query 的坐标轴等
配置飞书通知
- 在需要通知会话中 @Grafana 助手 , 点击返回的消息, 复制Webhook地址, 点击 【保存】
- 打开 Grafana, 点击 Alert > Notification, 配置该 WebHook 地址. 保存. 其中 【Notification settings】说明如下:
- Include images:
- 发送通知时附带此刻的截图
- 6.x 版本中如果勾选 "Include image", 会无法发出通知
- 7.x 版本中勾选 "Include image" 但实际并不会发送截图
- Disable Resolve Message
- 问题解决后不用发 [OK] 通知, 如果不勾选, 则每次报警解除后, 会发送一条内容一样的报警信息, 只是Title改为 [OK]
- Send reminders
- 只要报警未解除就一直发送消息, 发送的间隔不能低于Alert配置的数据采集间隔. 如果不勾选, 则只在触发的那一刻发送一次通知
- 打开需要添加监控的图表, 点击 Edit > Alert 配置该图标的告警信息, Grafana 不支持对带参数的 Query 进行配置, 所以如果需要检测带参数的 Query , 参考思路如下
如果选了带参数的Query会报错: Template variables are not supported in alert queries
a. 只监控特定某条数据
- 在原图表中添加一条 Query, 写死参数, 并将该 Query 隐藏. 在Alert 选择该 Query 进行配置
b. 监控所有数据
- 新增一个图表, 调整 Query , 去掉参数, 并根据该参数进行分组. 在 Alert 中进行配置. 此时任意一条数据触发 Alert, 便会产生报警, 报警信息中会把所有触发的数据罗列出来.
- Alert 中 Notifications>Send to 选择在第 2 步配置的地址. 其他配置信息如下:
完成
资料
docker-compose.yml
# /home/monitor
version: '2'
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
hostname: prometheus
restart: always
ports:
- '9090:9090'
volumes:
- './prometheus/config:/config'
- './prometheus/data/prometheus:/prometheus/data'
command:
- '--config.file=/config/prometheus.yml'
- '--web.enable-lifecycle' # 支持热更新
networks:
- monitor
# alertmanager 没有不用配置此节
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
hostname: alertmanager
restart: always
ports:
- '9093:9093'
volumes:
- './prometheus/config:/config'
- './prometheus/data/alertmanager:/alertmanager/data'
command:
- '--config.file=/config/alertmanager.yml'
networks:
- monitor
grafana:
image: grafana/grafana:latest
container_name: grafana
hostname: grafana
restart: always
ports:
- '3000:3000'
volumes:
- './grafana/config/grafana.ini:/etc/grafana/grafana.ini'
- './grafana/data/grafana:/var/lib/grafana'
networks:
- monitor
prometheus.yml
# 文件地址: /home/monitor/prometheus/config
# 默认设置
global:
scrape_interval: 5s
scrape_timeout: 1s
# 报警规则文件地址, 没有则不用
rule_files:
- "rules/*.yml"
# 报警设置, 没有则不用
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager:9093"
scrape_configs:
# 服务名称, 任意
- job_name: server_1
# 服务配置地址, 根据 http(s)://{target}/metrics 应该可访问到 prometheus 采集的数据
static_configs:
- targets: ["198.168.0.1:8080","198.168.0.2:8080"]
# 支持配置一系列不同的job
- job_name: server_2
scrape_interval: 15s # 特殊设置
static_configs:
- targets: ["192.168.0.3"]
grafana.ini
; 应该不使用这个报警
; 文件位置 /home/monitor/grafana/config
; [server]
; 地址设置, 在配置诸如飞书,钉钉这些webhook时会用到
root_url: https://grafana.myhost.com
; 其他设置信息参考:
; 官网: https://grafana.com/docs/grafana/latest/administration/configuration/
; 博客园参考: https://www.cnblogs.com/shhnwangjian/p/6911415.html
参考内容: