服务搭建篇(一) 搭建基于prometheus + node_exporter + grafana + Alertmanager 的监控报警系统 , 保姆级教程

感兴趣的话大家可以关注一下公众号 : 猿人刘先生 , 欢迎大家一起学习 , 一起进步 , 一起来交流吧!

一. 介绍

1.Prometheus:

一个监控系统,集成在项目中可以对项目运行的一些情况进行监控,并将监控的数据存储在文件中,并可以通过自带的页面端查询到这些数据。

2.node_exporter:

一个监控系统,集成在服务器中,可以监控主机的运行状况,可以将node_exporter集成到Prometheus的管理端,通过Prometheus提供的页面查询到相应的数据

3.grafana:

一个显示页面,比Prometheus自带的更好看,更形象,可以通过给grafana配置Prometheus的数据源,让grafana显示Prometheus的数据。当然除了Prometheus,它也支持其他的数据源

4.Alertmanager

Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组,并将它们路由到正确的接收器集成,如电子邮件、PagerDuty或OpsGenie。它还负责静音和抑制警报

安装机器为 : Centos 7.6

二. 防火墙设置

1.将所有机器的防火墙关闭
systemctl stop firewalld.service
2.关闭防火墙开机自启动
systemctl disable firewalld.service

1.安装prometheus

1.1.下载prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.8.1/prometheus-2.8.1.linux-amd64.tar.gz
1.2.解压
tar -xzvf prometheus-2.8.1.linux-amd64.tar.gz
1.3.修改名称(非必要)
mv prometheus-2.8.1.linux-amd64/ prometheus/
1.4.创建prometheus.service文件
vim /etc/systemd/system/prometheus.service
1.5.增加配置
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target
[Service]
User=root
Restart=on-failure
#Change this line if you download the
#Prometheus on different path user
ExecStart=/home/prometheus/prometheus/prometheus \
--config.file=/home/prometheus/prometheus/prometheus.yml \
--storage.tsdb.path=/home/prometheus/prometheus/data
[Install]
WantedBy=multi-user.target
1.6.重新载入配置(修改了prometheus.service文件之后执行)
systemctl daemon-reload
1.7.启动
systemctl start prometheus
1.8.验证

输入 netstat -plntu |grep 9090 或者 访问ip+9090

1.9其他命令

重启 : systemctl restart prometheus
查看状态 :systemctl status prometheus
停止: systemctl stop prometheus
开机自启动 : systemctl enable prometheus

2.安装 node_exporter

2.1.下载
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
2.2.解压
tar -xzvf node_exporter-0.17.0.linux-amd64.tar.gz
2.3.修改名称(非必要)
mv node_exporter-0.17.0.linux-amd64 node_exporter
2.4.创建node_exporter.service
vim /etc/systemd/system/node_exporter.service
2.5.添加配置
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=root
ExecStart=/home/software/node_exporter/node_exporter
[Install]
WantedBy=default.target
2.6.重新载入设置
systemctl daemon-reload
2.7.启动
systemctl start node_exporter
2.8 验证
netstat -plntu |grep 9100

或者

systemctl status node_exporter
2.9 将node_exporter添加到Prometheus服务器
vim prometheus/prometheus.yml
2.10 在’scrape_config’行下,通过复制粘贴下面的配置添加新的job_name node_exporter

一定要注意yml的格式 ! ! !

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
2.11 重启promethues
systemctl restart prometheus
2.12 其他命令

重启 : systemctl restart node_exporter
查看状态 :systemctl status node_exporter
停止: systemctl stop node_exporter
开机自启动 : systemctl enable node_exporter

2.13 测试prometheus + node_exporter

如下图所示 , 输入node_memory_MemTotal_bytes , 点击执行按钮
在这里插入图片描述
通过http://ip:9100/metrics可以获得node_exporter原始数据,如下所示
在这里插入图片描述

3.安装grafana

3.1.下载

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.3-1.x86_64.rpm
或者 直接访问
https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.3-1.x86_64.rpm下载

3.2.使yum安装

sudo yum install grafana-enterprise-9.0.3-1.x86_64.rpm

3.3.启动

systemctl start grafana-server

3.4.验证

访问http://ip:3000

3.5.整合prometheus

登录grafana , 用户名密码默认 admin
在这里插入图片描述在这里插入图片描述
点击即可
在这里插入图片描述
在这里插入图片描述
配置之后点击 save & test 即可
在这里插入图片描述
随便选择一个模板 , 点击导入即可
在这里插入图片描述
点击这个地方就可以看到数据了
在这里插入图片描述
在这里插入图片描述

3.6.监听多节点

在prometheus.yml中增加配置即可

  - job_name: 'cluster-134'
    static_configs:
      - targets: ['localhost:9100']
  - job_name: 'cluster-135'
    static_configs:
      - targets: ['192.168.154.135:9100']

然后换个主题
在这里插入图片描述

上传一个json文件 , 可以在这个网址找 : https://grafana.com/grafana/dashboards/
也可以用这个 :https://grafana.com/grafana/dashboards/11074-node-exporter-for-prometheus-dashboard-en-v20201010/

在这里插入图片描述
上传之后需要选择数据库 , 就选上面配置好的就行
在这里插入图片描述
然后保存
在这里插入图片描述

然后回到首页 , 点一下刚刚配置好的
在这里插入图片描述
就可以切换查看不同机器的运行状态

在这里插入图片描述

3.7其他命令

开机自启动 : systemctl enable grafana-server
停止 : systemctl stop grafana-server
查看状态 : systemctl status grafana-server

4.安装Alertmanager

4.1.下载
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
4.2.解压
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
4.3.修改文件名
mv alertmanager-0.21.0.linux-amd64 alertmanager
4.4. 配置启动文件
vim /etc/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
User=root
ExecStart=/home/software/alertmanager/alertmanager --storage.path=/home/software/alertmanager/data/ \
--config.file=/home/software/alertmanager/alertmanager.yml
Restart=always
RestartSec=1

[Install]
WantedBy=default.target
4.5.启动
systemctl start alertmanager
4.6. prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["192.168.154.134:9093"]

rule_files:
   - "rule/*.yml"
4.7.host.yml

在prometheus.yml同一层新建rule文件夹 , 然后再rule文件夹下新建host.yml(文件夹的名称和.yml的名称可以随便修改) , 配置以下内容

groups:
- name: host
  rules:

  - alert: PrometheusTargetMissing
    expr: up == 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: 服务器宕机 (instance {{ $labels.instance }})
      description: "服务器宕机,或者node exporter未启动\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"

  - alert: HostOutOfDiskSpace
    expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 5 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
    for: 10s
    labels:
      severity: warning
    annotations:
      summary: 主机磁盘空间不足 (instance {{ $labels.instance }})
      description: "主机磁盘空间不足 (剩余 < 10% )\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"

  - alert: HostHighCpuLoad
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80
    for: 0m
    labels:
      severity: warning
    annotations:
      summary: CPU使用率过高! (instance {{ $labels.instance }})
      description: "CPU使用率超过 > 80%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"

  - alert: HostOutOfMemory
    expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: 内存使用率过高 (instance {{ $labels.instance }})
      description: "内存使用率过高 (剩余< 10% )\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
4.8.alertmanager.yml

配置接收报警的邮箱如果是qq邮箱 , 那么就需要开通相关服务
在这里插入图片描述

global:
  smtp_smarthost: 'smtp.163.com:25'
  smtp_from: '2788956780@xxx.com'
  smtp_auth_username: '2788956780@qq.com'
  smtp_auth_password: 'xxxxxxxx'
route:
  group_by: ['alert']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'email-me'
receivers:
- name: 'email-me'
  email_configs:
  - to: 2788956780@qq.com
    send_resolved: true

重启prometheus和alertmanager即可

4.9.验证

我这里有两台机器 134 和135 ,关掉135 一分钟后即可收到报警

4.10.其他命令

重启 : systemctl restart alertmanager
查看状态 :systemctl status alertmanager
停止: systemctl stop alertmanager
开机自启动 : systemctl enable alertmanager

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你想使用podman部署node-exporter,可以按照以下步骤进行操作: 1. 创建一个名为node-exporter的目录,用于存放node-exporter的配置文件和数据。使用以下命令创建: ``` mkdir node-exporter ``` 2. 创建一个名为node-exporter.service的systemd服务单元文件,用于启动node-exporter服务。使用以下命令创建: ``` sudo vi /etc/systemd/system/node-exporter.service ``` 将以下内容复制粘贴到文件中: ``` [Unit] Description=Node Exporter [Service] Restart=always ExecStartPre=podman rm node-exporter ExecStart=/usr/bin/podman run --name node-exporter --net=host --pid=host --privileged=true -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /:/rootfs:ro -v /etc/node-exporter:/etc/node-exporter:z quay.io/prometheus/node-exporter [Install] WantedBy=multi-user.target ``` 保存并退出文件。 3. 创建一个名为node-exporter的配置文件目录,用于存放node-exporter的配置文件。使用以下命令创建: ``` sudo mkdir /etc/node-exporter ``` 4. 创建一个名为node-exporter.yml的node-exporter配置文件,用于指定node-exporter的参数和监控对象。使用以下命令创建: ``` sudo vi /etc/node-exporter/node-exporter.yml ``` 将以下内容复制粘贴到文件中: ``` global: scrape_interval: 15s scrape_configs: - job_name: 'node' metrics_path: /metrics static_configs: - targets: ['localhost:9100'] ``` 保存并退出文件。 5. 重新加载systemd守护程序并启动node-exporter服务。使用以下命令执行: ``` sudo systemctl daemon-reload sudo systemctl enable node-exporter sudo systemctl start node-exporter ``` 6. 确认node-exporter服务已经成功启动。使用以下命令查看服务状态: ``` sudo systemctl status node-exporter ``` 如果服务状态显示为“active (running)”则表示服务已经启动成功。 希望以上步骤能够帮助你成功部署node-exporter服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lingering fear

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

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

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

打赏作者

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

抵扣说明:

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

余额充值