promethues+alertmanager+grafana监控宿主机和报警—基于静态配置和文件自动发现目标主机—详细文档

本文档详细介绍了如何使用Prometheus、Alertmanager和Grafana来监控宿主机,并实现报警功能。包括在Linux(CentOS)上安装node_exporter、alertmanager、prometheus和grafana,配置静态和文件自动发现目标主机,以及设置认证、邮箱通知和告警规则。同时提供了相关软件包下载链接。
摘要由CSDN通过智能技术生成

promethues+alertmanager+grafana监控宿主机和报警—基于静态配置和文件自动发现目标主机—详细文档
相关配套软件包网盘下载链接如下:
网盘地址: https://url28.ctfile.com/f/37115828-589234219-d1cf35?p=4907
访问密码: 4907

本人会经常更新运维相关技术文档,如有兴趣,可以关注我博客,欢迎互动分享

promethues支持两种添加被监控端:1)静态配置(手动配置), 2)服务发现(动态发现需要监控的target实例(基于文件和基于consul))
node节点安装node_exporter: (手动到各个节点安装node_exporter)
机器:192.168.10.92 alertmanager、promethues、grafana、node_exporter被监控端
机器:192.168.10.91 node_exporter被监控端
1.二进制安装node_exporter并配置认证(被监控宿主机安装两台),需要用户名和加密密码才能访问到node_exporter的数据
安装生成加密密码的工具:
[root@nacos-nfs ~]# yum -y install httpd-tools
[root@nacos-nfs ~]# htpasswd -nBC 12 ‘’ | tr -d ‘:\n’ #回车
New password: #输入要加密的明文密码: 123456
Re-type new password: #重复输入要加密的明文密码: 123456
$2y 12 12 12vckkSTR4nweF2zMq.GjRzuUNls9Ol5FOws/cMCUn77vY0AvdlUi76 #生成的加密密码保存起来
安装node_exporter:
[root@nacos-nfs ~]# ls node_exporter-1.3.1.linux-amd64.tar.gz
node_exporter-1.3.1.linux-amd64.tar.gz
[root@nacos-nfs ~]# tar -zxf node_exporter-1.3.1.linux-amd64.tar.gz
[root@nacos-nfs ~]# mv node_exporter-1.3.1.linux-amd64 /data/node_exporter
[root@nacos-nfs ~]# cd /data/node_exporter/
[root@nacos-nfs node_exporter]# ls
LICENSE node_exporter NOTICE
[root@nacos-nfs node_exporter]# vim config.yml #配置node_exporter用户名和加密密码认证(也可不配置加密认证,无需添加此文件,启动也无需指定该文件)
basic_auth_users:
prometheus: $2y 12 12 12vckkSTR4nweF2zMq.GjRzuUNls9Ol5FOws/cMCUn77vY0AvdlUi76 #用户名: 加密密码
[root@nacos-nfs node_exporter]# /data/node_exporter/node_exporter --web.config=/data/node_exporter/config.yml #可直接指定配置文件启动
交给systemd管理服务:
[root@nacos-nfs node_exporter]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter daemon
[Service]
Restart=on-failure
ExecStart=/data/node_exporter/node_exporter --web.config=/data/node_exporter/config.yml
[Install]
WantedBy=multi-user.target
[root@nacos-nfs node_exporter]# systemctl daemon-reload
[root@nacos-nfs node_exporter]# systemctl start node_exporter
[root@nacos-nfs node_exporter]# systemctl status node_exporter
● node_exporter.service - node_exporter daemon
Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2022-04-09 21:33:05 CST; 7s ago
[root@nacos-nfs node_exporter]# netstat -anput |grep 9100
tcp6 0 0 :::9100 ::😗 LISTEN 28801/node_exporter
浏览器通过用户名和密码访问node_exporter采集的数据: 另一个机器同样操作
http://192.168.10.92:9100/ http://192.168.10.91:9100/ 输入用户名和密码: prometheus/123456
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另一个机器同样操作:
在这里插入图片描述
2.二进制安装alertmanager: (192.168.10.92)
[root@nacos-nfs ~]# ls alertmanager-0.24.0.linux-amd64.tar.gz
alertmanager-0.24.0.linux-amd64.tar.gz
[root@nacos-nfs ~]# tar -zxf alertmanager-0.24.0.linux-amd64.tar.gz
[root@nacos-nfs ~]# mv alertmanager-0.24.0.linux-amd64 /data/alertmanager
[root@nacos-nfs ~]# cd /data/alertmanager/
[root@nacos-nfs alertmanager]# ls
alertmanager alertmanager.yml amtool LICENSE NOTICE
[root@nacos-nfs alertmanager]# cp alertmanager.yml alertmanager.yml.bak
[root@nacos-nfs alertmanager]# vim alertmanager.yml #后面下面的邮箱改成了qq邮箱,163邮箱有时不靠谱
global:
resolve_timeout: 5m
#配置邮箱服务器:
smtp_smarthost: ‘smtp.163.com:25’
#配置发件人:
smtp_from: ‘ssjjqiang@163.com’
smtp_auth_username: ‘ssjjqiang@163.com’
#配置发件人的授权密码:
smtp_auth_password: ‘LGARGNKQPZQNOTUT’
smtp_require_tls: false
#配置路由树:
route:
group_by: [‘alertname’] #根据告警规则组名进行分组,默认这里就是用alertname就可以了,可以精确到每一个告警规则,alertname的取值就是promethues中rules中自定义的告警规则的名称,根据触发情况取值会有所变动
group_wait: 10s #分组内第一个告警等待时间,10s内如有第二个告警会合并一个告警
group_interval: 10s #发送新告警间隔时间
repeat_interval: 10s #重复告警间隔发送时间
receiver: ‘mail’ #发送给哪个接收人,定义一个名字,具体接收人是谁,可以在下面的该名字下定义
receivers:

  • name: ‘mail’
    email_configs:
    • to: ‘ssjjqqiang@163.com’
      send_resolved: true #设置恢复时候也提醒恢复信息,默认是没有的
      [root@nacos-nfs alertmanager]# ./alertmanager --config.file=./alertmanager.yml #指定配置文件启动
      交给systemed管理服务:
      [root@nacos-nfs alertmanager]# vim /usr/lib/systemd/system/alertmanager.service
      [Unit]
      Description=alertmanager daemon
      [Service]
      Restart=on-failure
      ExecStart=/data/alertmanager/alertmanager --config.file=/data/alertmanager/alertmanager.yml
      [Install]
      WantedBy=multi-user.target
      [root@nacos-nfs alertmanager]# systemctl daemon-reload
      [root@nacos-nfs alertmanager]# systemctl enable alertmanager
      [root@nacos-nfs alertmanager]# systemctl start alertmanager
      [root@nacos-nfs alertmanager]# netstat -anput |grep 9093
      tcp6 0 0 :::9093 ::😗 LISTEN 30260/alertmanager
      访问web界面如下:http://192.168.10.92:9093/
      在这里插入图片描述
      3.二进制安装promethues并测试告警
      [root@nacos-nfs ~]# ls
      prometheus-2.35.0-rc0.linux-amd64.tar.gz
      [root@nacos-nfs ~]# tar -zxf prometheus-2.35.0-rc0.linux-amd64.tar.gz
      [root@nacos-nfs ~]# ls
      prometheus-2.35.0-rc0.linux-amd64 prometheus-2.35.0-rc0.linux-amd64.tar.gz
      [root@nacos-nfs ~]# mv prometheus-2.35.0-rc0.linux-amd64 /data/prometheus
      [root@nacos-nfs ~]# cd /data/prometheus/
      [root@nacos-nfs prometheus]# ls
      console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
      [root@nacos-nfs prometheus]# cp prometheus.yml prometheus.yml.bak
      [root@nacos-nfs prometheus]# vim prometheus.yml
      global:
      scrape_interval: 15s # 采集数据时间间隔
      evaluation_interval: 15s # 评估的告警规则的时间间隔,每多少时间评估一次告警规则
      alerting:
      alertmanagers:
    • static_configs:
      • targets:
        • 192.168.10.92:9093 #当安装了alertmanager,需要告警时可以指定alertmanager的ip和端口,若不用告警则可注释该行.
          #下面配置告警规则引用的文件:
          rule_files:
  • “rules/*.yml” #告警相关规则配置,不用可注释,rules是在promethues安装目录中创建一个rules目录
    scrape_configs: #下面是被监控端的相关配置
  • job_name: “prometheus”
    static_configs:
    • targets: [“localhost:9090”] #默认监控了自己
  • job_name: “nodes” #每一个job_name可以认为是一个分组,一个分组可以在targets里定义多个监控的主机,相当于一个分组可以包含一批机器
    basic_auth: #下面为连接node_exporter所需的用户名和密码
    username: prometheus
    password: 123456
    static_configs:
    • targets: [“192.168.10.92:9100”,“192.168.10.91:9100”] #node_exporter的地址和端口
      [root@nacos-nfs prometheus]# mkdir /data/prometheus/rules
      [root@nacos-nfs prometheus]# vim /data/prometheus/rules/general.yml #配置告警触发条件和告警规则
      groups:
  • name: general.rules #告警规则组名称
    rules:
    • alert: InstanceDown #自定义的告警规则名称,触发报警时该值就作为alertmanager.yml中定义的alertname的取值
      expr: up == 0 #基于promSQL的触发条件
      for: 1m #等待评估时间,1分钟,就是满足触发条件后不直接发送告警到alertmanager,而是等待1分钟,若1分钟内一直是触发的才发送告警,任何实例1分钟内无法访问发出告警
      labels: #自定义标签
      severity: error
      annotations: #指定附加信息
      summary: “Instance {{ $labels.instance }} 停止工作”
      description: “{{ $labels.instance }}: job {{ $labels.job }} 已经停止1分钟以上.”
      [root@nacos-nfs prometheus]# vim /data/prometheus/rules/node.yml #配置告警触发条件和告警规则
      groups:
  • name: node.rules #告警规则组名称
    rules:
    • alert: NodeFilesystemUsage #自定义的告警规则名称,触发报警时该值就作为alertmanager.yml中定义的alertname的取值
      expr: 100 - (node_filesystem_free_bytes{fstype=~“ext4|xfs”} / node_filesystem_size_bytes{fstype=~“ext4|xfs”} * 100) > 1 #这种就是在promethues中语句试验出来的报警语句,下面类似
      for: 2m
      labels:
      severity: warning
      annotations:
      summary: “{{KaTeX parse error: Expected 'EOF', got '}' at position 16: labels.instance}̲}: {{labels.mountpoint }} 分区使用过高”
      description: “{{KaTeX parse error: Expected 'EOF', got '}' at position 16: labels.instance}̲}: {{labels.mountpoint }} 分区使用大于 80% (当前值: {{ $value }})”
    • alert: NodeMemoryUsage #自定义的告警规则名称,触发报警时该值就作为alertmanager.yml中定义的alertname的取值
      expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 > 1
      for: 2m
      labels:
      severity: warning
      annotations:
      summary: “{{KaTeX parse error: Expected 'EOF', got '}' at position 16: labels.instance}̲}: 内存使用过高" de…labels.instance}}: 内存使用大于 80% (当前值: {{ $value }})”
    • alert: NodeCPUUsage #自定义的告警规则名称,触发报警时该值就作为alertmanager.yml中定义的alertname的取值
      expr: 100 - (avg(irate(node_cpu_seconds_total{mode=“idle”}[5m])) by (instance) * 100) > 1
      for: 2m
      labels:
      severity: warning
      annotations:
      summary: “{{KaTeX parse error: Expected 'EOF', got '}' at position 16: labels.instance}̲}: CPU使用过高" d…labels.instance}}: CPU使用大于 80% (当前值: {{ $value }})”
      [root@nacos-nfs prometheus]# ./promtool check config ./prometheus.yml #检查配置文件是否正确
      Checking ./prometheus.yml
      SUCCESS: ./prometheus.yml is valid prometheus config file syntax
      [root@nacos-nfs prometheus]# /data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml #指定配置文件启动
      交给systemed管理:
      [root@nacos-nfs prometheus]# vim /usr/lib/systemd/system/prometheus.service
      [Unit]
      Description=Prometheus daemon
      [Service]
      Restart=on-failure
      ExecStart=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml
      [Install]
      WantedBy=multi-user.target
      [root@nacos-nfs prometheus]# systemctl daemon-reload
      [root@nacos-nfs prometheus]# systemctl enable Prometheus
      [root@nacos-nfs prometheus]# systemctl start prometheus
      [root@nacos-nfs prometheus]# systemctl status prometheus
      ● prometheus.service - Prometheus daemon
      Loaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled; vendor preset: disabled)
      Active: active (running) since Sat 2022-04-09 23:35:06 CST; 6s ago
      [root@nacos-nfs prometheus]# netstat -anput |grep 9090|grep LISTEN
      tcp6 0 0 :::9090 ::😗 LISTEN 28970/prometheus
      在这里插入图片描述
      测试告警:
      停止promethues上node_exporter,查看告警情况:
      [root@nacos-nfs prometheus]# systemctl stop node_exporter
      查看promethues告警触发情况:因为cpu、内存和磁盘设置的阀值太低,也都跟着告警了
      在这里插入图片描述
      查看发送邮件情况:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      注意:promethues可以配置手动配置主机,也可基于文件发现主机:(根据需要使用)
      [root@prometheus ~]# vim /data/prometheus/prometheus.yml #配置文件解释,静态配置和基于文件发现

      scrape_configs:
      #1) 定义被监控主机方法1: 静态配置
      #下面是默认的job名字,和配置通过静态配置,指定被监控机器:本机,也可添加机器:如: - targets: [‘localhost:9090’,‘node1:9100’,‘node2:9100’],
      #注意:添加的主机名要能解析,或者直接添加成ip:9100也可。
    • job_name: ‘prometheus’
      static_configs:
      • targets: [‘localhost:9090’]
        #static_configs: 静态配置,定义被监控的主机
        #2) 定义被监控主机方法2: 基于文件发现
        #file_sd_configs: 基于文件发现的方式,定义被监控的主机
    • job_name: ‘node’
      file_sd_configs:
      • files: [‘/usr/local/prometheus/sd_config/node.yaml’]
        refresh_interval: 5s
        #refresh_interval:指定刷新发现文件的间隔
        [root@prometheus ~]# mkdir /usr/local/prometheus/sd_config
        [root@prometheus ~]# vim /usr/local/prometheus/sd_config/node.yaml
  • targets:
    • 192.168.171.130:9100
    • 192.168.171.131:9100
      然后启动promethues即可
      4.二进制安装grafana:界面展示
      [root@nacos-nfs ~]# ls grafana-enterprise-8.4.5.linux-amd64.tar.gz
      grafana-enterprise-8.4.5.linux-amd64.tar.gz
      [root@nacos-nfs ~]# tar -zxf grafana-enterprise-8.4.5.linux-amd64.tar.gz
      [root@nacos-nfs ~]# mv grafana-8.4.5/ /data/grafana
      [root@nacos-nfs ~]# cd /data/grafana/
      [root@nacos-nfs grafana]# ls
      bin conf LICENSE NOTICE.md plugins-bundled public README.md scripts VERSION
      [root@nacos-nfs grafana]# ls bin/
      grafana-cli grafana-cli.md5 grafana-server grafana-server.md5
      [root@nacos-nfs grafana]# /data/grafana/bin/grafana-server #即可启动grafana
      交给systemed管理启动:
      [root@nacos-nfs grafana]# vim /usr/lib/systemd/system/grafana.service
      [Unit]
      Description=grafana daemon
      [Service]
      Restart=on-failure
      ExecStart=/data/grafana/bin/grafana-server -homepath=/data/grafana #指定安装目录启动
      [Install]
      WantedBy=multi-user.target
      [root@nacos-nfs grafana]# systemctl start grafana
      [root@nacos-nfs grafana]# systemctl status grafana
      ● grafana.service - grafana daemon
      Loaded: loaded (/usr/lib/systemd/system/grafana.service; disabled; vendor preset: disabled)
      Active: active (running) since Sat 2022-04-09 20:14:52 CST; 11s ago
      [root@nacos-nfs grafana]# systemctl enable grafana
      [root@nacos-nfs grafana]# netstat -anput |grep 3000
      tcp6 0 0 :::3000 ::😗 LISTEN 28647/grafana-serve
      访问grafana: http://192.168.10.92:3000 默认用户名和密码都是admin
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      导入node节点主机监控仪表盘,或者选择相应的id输入导入:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维实战课程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值