prometheus + grafana + node_exporter + alertmanager 的安装部署与邮件报警

news2024/11/20 10:24:39

背景介绍
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。

Prometheus的特点
多维度数据模型。
灵活的查询语言。
不依赖分布式存储,单个服务器节点是自主的。
通过基于HTTP的pull方式采集时序数据。
可以通过中间网关进行时序列数据推送。
通过服务发现或者静态配置来发现目标服务对象。
支持多种多样的图表和界面展示,比如Grafana等。

相关组件
Prometheus Server — Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
Push Gateway — Prometheus数据采集基于Pull模型,当Prometheus Server不能直接与Exporter进行通信时,可利用PushGateway来进行中转。即通过PushGateway将内部网络的监控数据主动Push到Gateway当中,Prometheus Server再采用同样Pull的方式从PushGateway中获取监控数据。
Exporter — 数据采集组件,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。其将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。
alertmanager — 若Promtheus Server中发现某监控项满足PromQL中定义的告警规则,则会产生一条告警,并将其交于AlertManager进行管理。在AlertManager中可以配置各种通知方式,也可以定义Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。

一.安装Prometheus Server
Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动Prometheus Server。
1.二进制部署
参考官网地址 https://prometheus.io/docs/introduction/first_steps/

wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

tar -zxvf prometheus-2.45.0.linux-amd64.tar.gz
cd prometheus-2.45.0.linux-amd64
nohup ./prometheus --config.file=prometheus.yml  2>&1 &

http://localhost:9090/metrics
 http://localhost:9090/graph

2.docker方式部署
参考网址 https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu/quickstart/prometheus-quick-start/install-prometheus-server

docker run -itd --name=prometheus -p 9090:9090 prom/prometheus
mkdir -p /etc/prometheus/
docker cp prometheus:/etc/prometheus/prometheus.yml /etc/prometheus/
docker rm -f prometheus
docker run -itd --name=prometheus -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
http://localhost:9090/metrics

二.安装Node Exporter
在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
从上面的描述中可以看出Exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向Prometheus提供标准格式的监控样本数据即可。
这里为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。我们可以使用Node Exporter,下载地址 https://github.com/prometheus/node_exporter
Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从https://prometheus.io/download/获取最新的node exporter版本的二进制包。
在这里插入图片描述
二进制安装部署,可以自行选择版本

下载node_exporter二进制包压缩包:
github: https://github.com/prometheus/node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
解压:
tar -zxvf node_exporter-1.4.0.linux-amd64.tar.gz
cd node_exporter-1.4.0.linux-amd64
cp node_exporter /usr/local/bin/
nohup ./node_exporter --web.listen-address=":9101"  2>&1 &
创建node_exporter systemctl文件
vim /usr/lib/systemd/system/node_export.service
[Service]
User=root
Group=root
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

[Unit]
Description=node_exporter
After=network.target 

# 重载/开机自启/查看状态/启动
systemctl daemon-reload
systemctl enable node_exporter
systemctl status node_exporter 
systemctl start node_exporter

# 查看服务是否启动
lsof -i:9100
访问: http://ip:9100/metrics

启动成功后,可以看到以下输出:
INFO[0000] Listening on :9100 source=“node_exporter.go:76”
在这里插入图片描述
初始Node Exporter监控指标
访问http://localhost:9100/metrics,可以看到当前node exporter获取到的当前主机的所有监控数据,如下所示:
node_boot_time:系统启动时间
node_cpu:系统CPU使用量
nodedisk*:磁盘IO
nodefilesystem*:文件系统用量
node_load1:系统负载
nodememeory*:内存使用量
nodenetwork*:网络带宽
node_time:当前系统时间
go_:node exporter中go相关指标
process_
:node exporter自身进程相关运行指标

从Node Exporter收集监控数据
为了能够让Prometheus Server能够从当前node exporter获取到监控数据,这里需要修改Prometheus配置文件。编辑prometheus.yml并在scrape_configs节点下添加以下内容:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  # 采集node exporter监控数据
  - job_name: 'export_test2'
    static_configs:
      - targets: ['192.168.20.137:9100']
        labels:
          instance: 'node2'

重新启动Prometheus Server

nohup ./prometheus --config.file=prometheus.yml  2>&1 &

访问http://localhost:9090,进入到Prometheus Server。如果输入“up”并且点击执行按钮以后,可以看到如下结果:
up{instance=“localhost:9090”,job=“prometheus”} 1
up{instance=“localhost:9100”,job=“node”} 1
其中“1”表示正常,反之“0”则为异常。

在prometheus的web界面查看:status --> targets
在这里插入图片描述
在这里插入图片描述

三.安装grafana
https://www.cnblogs.com/huandada/p/10299639.html 参考资料
https://grafana.com/grafana/download/9.0.0?pg=get&platform=linux&plcmt=selfmanaged-box1-cta1&edition=oss 官网下载地址
grafana与prometheus进行对接,可以对数据进行更好的展示

wget https://dl.grafana.com/oss/release/grafana-9.0.0.linux-amd64.tar.gz
tar -zxvf grafana-9.0.0.linux-amd64.tar.gz  -C /usr/local/
启动grafana

cd /usr/local/grafana-9.0.0/bin/
./grafana-server &

登录grafana的web页面

http://192.168.20.135:3000/
admin/admin
添加数据源与自带模板
Add data source --> http://192.168.20.135:9090 --> Dashboards --> prometheus2.0 --> save&test
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加node-exporter-server-metrics 模板
下载方法:https://grafana.com/dashboards/405 --> Dashboards -->在如图搜索框搜索node-exporter-server-metrics -->点击第一个进去 --> version --> download
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加1 Node Exporter 0.16 0.17 for Prometheus 监控展示看板
此监控模板基于node_exporter 可以更好的展示多项基本监控项
模板url: https://grafana.com/dashboards/8919
在grafana所在server安装饼图插件,并重启grafana

cd /usr/local/grafana/bin
./grafana-cli plugins install grafana-piechart-panel
killall grafana-server
./grafana-server restart &

图形界面配置
grafana + --> import --> 将以上该模板的url 填到Grafana.com Dashboard中 -->
在这里插入图片描述
在这里插入图片描述
alertmanager的告警配置
自定义prometheus告警规则
以下规则定义当job export_test2的node_exporter服务挂掉,即产生一个告警

vim /usr/local/prometheus-2.1/rule.yml
groups:
- name: alert-rules                               #告警的分组,后续告警优化时,可通过分组做优化配置
  rules:
  - alert: InstanceStatus                        #告警规则名称
    expr: up{job="export_test2"} == 0    #1是服务正常 ,0服务挂了
    for: 10s                                             #评估等待10s,等待期间报警状态为pending
    labels:                                               #此标签可用于match之后的通知操作
      severity: 'critical'   
    annotations:                                      #描述告警信息
      description: 服务器 已宕机
      summary: 服务器 运行状态

在prometheus的配置文件中添加该规则

vim /usr/local/prometheus-2.1/prometheus.yml
rule_files:
  - "/usr/local/prometheus-2.1/rule.yml"

安装alertmanager

https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz
tar -xvf alertmanager-0.15.2.linux-amd64.tar.gz -C /usr/local
mv /usr/local/alertmanager-0.15.2.linux-amd64 /usr/local/alertmanager-0.15.2

启动alertmanager

cd /usr/local/alertmanager-0.15.2
./alertmanager &

在prometheus的配置文件中配置alertmanager地址,让其知晓alertmanager的地址,以传送告警信息

vim /usr/local/prometheus-2.1/prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['localhost:9093']

重启promethous

killall prometheus
cd /usr/local/prometheus-2.1/
./prometheus

测试:
此时关闭192.168.20.137的node_exporter服务

killall node_exporter
查看prometheus的web界面,已经产生告警:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二值化的mask生成yolov5-7.0的实例分割训练标签

背景:要用yolov5-7.0训练分割,这里使用自己的数据,mask是二值化的数据,要先转换成COCO格式,这里用imantics实现。 详见:https://zhuanlan.zhihu.com/p/427096258 截取部分代码如下图,读取image图…

C++之引用、指针引用、常引用

引用 引用的概念引用的定义引用的使用引用的应用引用的本质(就是C内部的一个常指针(type * const 名))指针引用(其类型还是指针type *)常引用(采用const修饰的引用) 引用的概念 1、通常我们说的引用指的是…

和鲸社区数据分析每周挑战【第九十五期:奈飞股价预测分析】

和鲸社区数据分析每周挑战【第九十五期:奈飞股价预测分析】 文章目录 和鲸社区数据分析每周挑战【第九十五期:奈飞股价预测分析】一、前言1、背景描述2、数据说明3、数据集预览 二、数据读取和数据预处理三、历史股价数据可视化四、利用sklearn中LinearR…

Linux 系统下的df、du、fdisk、lsblk指令

文章目录 1 查看磁盘与目录容量(df、du)2 查看磁盘分区(fdisk、lsblk)3 df、du、fdisk、lsblk的区别 1 查看磁盘与目录容量(df、du) df -h //列出文件系统的整体磁盘使用量在显示的结果中要特别留意根目录…

安洵杯2023 部分pwn复现

1. harde_pwn 漏洞点: 覆盖printf的返回地址 from pwn import * from LibcSearcher import LibcSearcher from sys import argv from Crypto.Util.number import bytes_to_long import os def ret2libc(leak, func, path):if path :libc LibcSearcher(func, leak…

二级Python考试环境安装教程

二级Python考试环境 Python3.5.3至Python3.9.10版。为方便考生学习与考点备考,现提供二级Python应用软件的网络下载,广大考生和考点管理员可以下载使用 软件包下载(62.18 MB) https://www.123pan.com/s/y4HrVv-0S0lA.html 安装…

在windows11环境下安装CUDA11.6+Anaconda3+pyToach1.13搭建炼丹炉

0.电脑环境 系统:win11 显卡:NVIDIA GTX1650 还有一个pyCharm,其他也用不到了,需要的文章中会进行说明 1.安装CUDA11.6 目前2023.03出来的pyToach2.0是用不到了,因为最低版本支持CUDA11.7。我的显卡是1650&#xff0c…

leetcode数据库题第八弹(免费题刷完了)

leetcode数据库题第八弹(免费题刷完了) 1757. 可回收且低脂的产品1789. 员工的直属部门1795. 每个产品在不同商店的价格1873. 计算特殊奖金1890. 2020年最后一次登录1907. 按分类统计薪水1934. 确认率1965. 丢失信息的雇员1978. 上级经理已离职的公司员工…

WebRTC音视频会议底层支撑技术

WebRTC允许应用使用P2P通信。WebRTC是一个广泛的话题,在本文中,我们将重点讨以下问题。 为什么Web RTC 如此受欢迎? 在P2P连接过程中会发生什么 信号传递 NATs和ICE STUN & TURN服务器 VP9视频编解码器 WebRTC APIs 安全 1.为什…

科技资讯|苹果新专利曝光:手势增强用户的交互体验

根据美国商标和专利局(USPTO)公示的最新清单,苹果公司获得了一项编号为 US 20230195237 A1 的专利,展示了使用手势导航用户界面的交互体验。 苹果这项专利涉及 iPhone、iPad、Apple Watch 和 Mac,使用屏幕生成组件和…

Typora的安装和授权(2023)

文章目录 1. 文章引言2. Typora的下载3. Typora的安装4. Typora的授权 1. 文章引言 我们在开发的过程中,不可或缺地要使用到markdown文本,支持markdown文本的编辑器有很多,其中Typora便是一款不错的编辑器。 不过,Typora是收费的…

知行之桥EDI系统QA第二期:AS2专题

随着使用知行之桥EDI系统的用户群体日益壮大,在使用过程中,用户可能对系统的工作原理、功能模块和实施过程有一些疑问。近期整理了有关 AS2 的四个常见问题: 1.知行之桥 EDI系统支持AS2 协议的 AES_GCM 算法吗?2.AS2发送文件后收…

C++不知算法系列之计数排序算法的计数之巧

1. 前言 计数排序是较简单的排序算法,其基本思想是利用数组索引号有序的原理。 如对如下的原始数组中的数据(元素)排序: //原始数组 int nums[5]{9,1,7,6,8};使用计数排序的基本思路如下: 创建一个排序数组。数组的大小由原始数组的最大值…

ActiveMQ消息队列的核心概念

文章目录 ActiveMQ消息队列的核心概念1.什么是MQ消息队列2.为什么要使用MQ消息队列3.MQ消息队列的应用场景3.1.异步处理3.2.应用解耦3.3.流量削锋 4.常见的MQ消息队列产品对比 ActiveMQ消息队列的核心概念 1.什么是MQ消息队列 Message Queue消息队列简称MQ,消息队…

NXP i.MX 6ULL工业开发板规格书( ARM Cortex-A7,主频792MHz)

1 评估板简介 创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 评估板接口资源丰富&…

AI通用大模型 —— Pathways,MoE, etc.

文章目录 Pathways现有AI缺憾Pathways Can DoMultiple TasksMultiple SensesSparse and Efficient Mixture of Experts(MoE)Neural Computation1991, Adaptive mixtures of local expertsICLR17, Outrageously Large Neural Networks: The Sparsely-Gate…

【已解决】ModuleNotFoundError: No module named ‘timm.models.layers.helpers‘

文章目录 错误信息原因解决方法专栏:神经网络精讲与实战AlexNetVGGNetGoogLeNetInception V2——V4ResNetDenseNet 错误信息 在使用timm库的时候出现了ModuleNotFoundError: No module named timm.models.layers.helpers’的错误,详情如下: …

Windows下安装ClickHouse图文教程

文章目录 1.安装WSL21.1启用适用于 Linux 的 Windows 子系统1.2启用Windows虚拟机功能1.3将WSL2设置为默认版本1.4下载Linux内核更新包1.5安装Linux子系统1.6设置账户和密码 2.安装Docker2.1下载与安装2.2设置镜像地址 3.安装Clickhouse3.1拉取镜像3.2启动clickhouse-server3.3…

Docker学习笔记7

启动一个运行httpd服务的容器: docker run -it --namec3 centos:latest /bin/bash 在容器中安装apache服务: yum install -y httpd 在这个过程中遇到一个问题: Error: Failed to download metadata for repo appstream: Cannot prepare …

关于PHP调用openAI chatGPT一些问题

我是直接使用gpt生成的curl代码区调用的 1:windows可能出现代理访问问题,报443端口问题 解决办法:开启代理后,需要到设置 确认这里打开状态 在curl请求里面加上对应的代码 curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1&qu…