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

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组,并将它们路由到正确的接收器集成,如电子邮件、PagerDuty或OpsGenie。它还负责静音和抑制警报

一. 介绍

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 , 点击执行按钮

8c6098e695d3dcab1097dcbbfaa4f3ef_b8c90e2c83ab485fae6954a5723d9ccf.png

通过http://ip:9100/metrics可以获得node_exporter原始数据,如下所示

eeeabc44d359638d6d17e753d33cb902_77926a1fa5e5412280d1cbb2b71b44a3.png


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

1bc44c1161ef5b763bda2e0071313b58_8a103efd863e4bda99b9d8abc884d898.png

b436ead42075e8756d52a5a9e8fb3747_ded6e91936b24b6cba346b086e458d2d.png

点击即可


f473b3bff9b47a2549e8b8e0794b7690_ff9d468c122545b3ae01f83cbff54914.png

ddff7c30d49343960dc169d1197efb62_32b0f672c36b42c180b0365f3b390878.png

配置之后点击 save & test 即可

81490d6a36be010d39085f6c28b78617_9fc09f1afaa34df29d2b97bfb82e1b13.png

随便选择一个模板 , 点击导入即可

822a46ed051055bd565018604eb5197d_3d2cbcc2445d40a8b636a4a97972b4e8.png

点击这个地方就可以看到数据了

0d6481aac11bdcb1ff157768cfd38224_e06640f416294ad5a0db44175dfda038.png



3.6.监听多节点

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

然后换个主题

062002ce34b96c864f7d8774f6272369_3f35bf2b16ab47f69d188f6b146218a6.png


上传一个json文件 , 可以在这个网址找 : https://grafana.com/grafana/dashboards/

也可以用这个 :https://grafana.com/grafana/dashboards/11074-node-exporter-for-prometheus-dashboard-en-v20201010/

98274f7f3c590c25acbd2e202a8158a0_e90cb677eb024332b3f7d3488d33d448.png


上传之后需要选择数据库 , 就选上面配置好的就行

3c32761e2849ffe361a28a54bf588613_8bd1a1ad2707448f93aecea4f4e3ac37.png

然后保存

caaded4f92b2deca1140ff3ca3825bc0_4f0dda90ac654a6c894dd84159aab61f.png


然后回到首页 , 点一下刚刚配置好的

dc5367c858a97fed135ee8969b35197b_ccd7203f97ae423eb8895237e68c547a.png

就可以切换查看不同机器的运行状态

b0c343e0f0f2188ba65f2416c98c024c_3291ae55515b40eaa750ca0e4a84d1b0.png



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. 配置启动文件

[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
1
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邮箱 , 那么就需要开通相关服务

bfc91c68d0bbe8e6d6b456fd655a599d_a5631dd70c864dcfaee01ee074ff46c1.png


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


相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
22天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
120 3
|
23天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
60 2
|
1月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
40 2
|
21天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
106 0
|
1月前
|
Web App开发 JavaScript API
构建高效后端系统:Node.js与Express框架的实践之路
【9月更文挑战第37天】在数字化时代的浪潮中,后端开发作为技术架构的核心,承载着数据处理和业务逻辑的重要职责。本文将深入探讨如何利用Node.js及其强大的Express框架来搭建一个高效、可扩展的后端系统。我们将从基础概念讲起,逐步引导读者理解并实践如何设计、开发和维护一个高性能的后端服务。通过实际代码示例和清晰的步骤说明,本文旨在为初学者和有经验的开发者提供一个全面的指南,帮助他们在后端开发的旅途上走得更远。
49 3
|
1月前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
1月前
|
JavaScript 前端开发 Java
Node.js 教程
10月更文挑战第1天
41 0
|
3月前
|
Prometheus 监控 Cloud Native
自定义grafana_table(数据源Prometheus)
综上所述,自定义 Grafana 表格并将 Prometheus 作为数据源的关键是理解 PromQL 的查询机制、熟悉 Grafana 面板的配置选项,并利用 Grafana 强大的转换和自定义功能使数据展示更为直观和有洞见性。随着对这些工具更深入的了解,您将可以创建出更高级的监控仪表盘,以支持复杂的业务监控需求。
296 1
|
2月前
crash —— 获取系统NODE、ZONE、SECTION、MEMBLOCK等信息
crash —— 获取系统NODE、ZONE、SECTION、MEMBLOCK等信息
|
JavaScript Shell 网络安全
Node服务一键离线部署
生产环境的机器,存在各种限制,如无法访问外网,无法通过ssh远程连接。这里笔者简单介绍了下在生产环境下,一键离线部署的经验。
3347 0