欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

基于prometheus+Grafana+Alertmanager构建监控告警平台

时间:2023-07-17
基于prometheus+Grafana+alertmanager构建监控告警平台

使用prometheus采集数据,Grafana作为成图展示,alertmanager输出告警

参考其他文档完成docker,docker-compose安装基础环境编写docker-compose文件构建prometheus配置文件构建Altermanager配置文件被监控节点安装node-exporter被监控节点targets配置告警规则配置运行测试环境END 使用prometheus采集数据,Grafana作为成图展示,alertmanager输出告警

监控告警平台使用docker-compose运行

参考其他文档完成docker,docker-compose安装 基础环境

已完成docker,docker-compose安装centos7.9IP:192.168.3.10已关闭防火墙及selinux(/etc/selinux/config中修改SELINUX值为disable)数据盘空间:根据存储时长及监控点数量估算(主要是prometheus数据)创建监控文件夹

# 主监控文件夹mkdir monitor# 创建监控平台各个应用文件夹,以下均在主监控文件夹monitor中# 创建prometheus文件夹mkdir -p prometheus/datachmod 777 data# 创建Grafana文件夹mkdir -p grafana/grafana-storagechmod 777 grafana-storage# 创建alertmanager文件夹,规则文件夹,被采集设备信息文件夹mkdir alert rules targets

编写docker-compose文件

编写docker-compose文件,运行监控告警平台;在monitor文件夹下新建monitor-docker-compose.yml配置文件,具体参考如下(配置文件中的端口为默认,可根据需求自行修改测试):

version: '3.2'services: prometheus: image: prom/prometheus restart: "always" ports: - 9090:9090 container_name: "prometheus" volumes: - "./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml" - "./rules:/etc/prometheus/rules" - "./prometheus/data:/prometheus" - "./targets:/etc/prometheus/targets" command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' alertmanager: image: prom/alertmanager:latest restart: "always" ports: - 9093:9093 container_name: "alertmanager" volumes: - "./alert/alertmanager.yml:/etc/alertmanager/alertmanager.yml" - "./alert/template/:/etc/alertmanager/template/" grafana: image: grafana/grafana restart: "always" ports: - 3000:3000 container_name: "grafana" volumes: - "./grafana/grafana-storage:/var/lib/grafana"

构建prometheus配置文件

在prometheus文件夹中新建配置文件prometheus.yml,具体配置如下:

global: scrape_interval: 15s # 多久 收集 一次数据 evaluation_interval: 15s # 多久 评估 一次规则 scrape_timeout: 10s # 每次 收集数据的 超时时间scrape_configs: - job_name: prometheus static_configs: - targets: ['192.168.3.10:9090'] labels: instance: prometheus# 此处为被监控节点信息,下面会说到这个文件 - job_name: node file_sd_configs: - files: - ./targets/*.yml refresh_interval: 10salerting: alertmanagers: - static_configs: - targets: - 192.168.3.10:9093# 以下为告警规则文件rule_files: - "/etc/prometheus/rules/*.yml"

构建Altermanager配置文件

此处测试告警外发至企业微信,Altermanager还支持外发钉钉,邮件等。具体可参考官网链接

global: resolve_timeout: 1m wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' wechat_api_corp_id: '企业微信秘钥' wechat_api_secret: '应用秘钥'route: receiver: 'monitor_node' group_wait: 30s group_interval: 5m repeat_interval: 5m group_by: [alertname] routes: - receiver: 'monitor_node' group_wait: 10stemplates: - "template/*.tmpl"receivers:- name: 'monitor_node' wechat_configs: - send_resolved: true message: '{{ template "wechat.default.message" 、}}' to_party: 'id_num' # 机器人所在部门ID agent_id: '应用ID' # 企业微信中创建的应用的ID api_secret: '应用秘钥' # 企业微信中,应用的Secret

被监控节点安装node-exporter

以下实例压缩包安装方式,也可采用docker,docker-compose方式安装:

# 压缩包安装wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz# 写入服务[Unit]Description=node_exporterAfter=network.target[Service]Type=simpleExecStart= /xxx/node_exporter # node-exporter目录PrivateTmp=trueRestartSec=5StartLimitInterval=0Restart=always[Install]WantedBy=multi-user.target# 重载配置systemctl daemon-reload

被监控节点targets配置

这里使用file_sd_configs方式采集被监控节点信息(node-exporter),其他方式可参考官方文档;跟据具体业务环境有多种方式可参考;
在targets文件夹中新建node.yml,参考配置如下:

- targets: ['192.168.3.11:9100'] labels: instance: vm01 - targets: ['192.168.3.12:9100'] labels: instance: vm02 - targets: ['192.168.3.13:9100'] labels: instance: vm03

告警规则配置

这篇文章主要是提供监控-成图-告警的实现测试,非生产环境;具体的告警规则可结合实际环境来进行配置;
将规则配置文件放在rules文件夹中,命名为*.yml对应prometheus中的配置项。

具体可以参考官方配置

这里放一部分我的测试rules配置参考

groups: - name: node-alert rules: - alert: node-down expr: prometheus:up == 0 for: 1m labels: severity: 'critical' annotations: summary: "instance: {{ $labels.instance }} 宕机" description: "instance: {{ $labels.instance }} n- job: {{ $labels.job }} 宕机" value: "{{ $value }}" instance: "{{ $labels.instance }}" - alert: node-cpu-high expr: prometheus:cpu:total:percent > 80 for: 3m labels: severity: info annotations: summary: "instance: {{ $labels.instance }} cpu 使用率高于 {{ $value }}" description: "instance: {{ $labels.instance }} n- job: {{ $labels.job }} CPU使用率持续高于80% 。" value: "{{ $value }}" instance: "{{ $labels.instance }}" - alert: node-cpu-iowait-high expr: prometheus:cpu:iowait:percent >= 12 for: 3m labels: severity: info annotations: summary: "instance: {{ $labels.instance }} cpu iowait 高于 {{ $value }}" description: "instance: {{ $labels.instance }} n- job: {{ $labels.job }} cpu iowait持续高于12%" value: "{{ $value }}" instance: "{{ $labels.instance }}"

运行测试环境

# 在monitor文件夹下运行docker-compose -f monitor-docker-compose.yml up -d# docker ps查看prometheus,Altermanager,Grafana三个容器状态# web登陆Grafana管理页面,配置dashboard

运行环境测试正常后,可以在Altermanager管理页面继续测试告警的静默等功能,Grafana仪表盘导入位置参考下图:

Grafana仪表盘可在官方文档找到

鼠标悬停+上边,选择import

将从官网找到的dashboard id 填入,并Load即可。

END

排错可先查官方文档,学习内容丰富每个步骤做好测试,缩小排查范围欢迎交流指正~~

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。