服务器监控 Prometheus、AlertManager、Grafana、钉钉机器人通知

本文介绍了Prometheus监控系统的部署和配置,包括Prometheus Server、Exporter、AlertManager、PushGateway、Grafana和prometheus-webhook-dingtalk的安装步骤与功能,以及如何通过DingTalk发送告警通知。
摘要由CSDN通过智能技术生成

监控系统简介

Prometheus 是一套开源的系统监控报警框架。需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外, Prometheus 适用于微服务的体系架构。 prometheus可以理解为一个数据库+数据抓取工具,工具从各处抓来统一的数据,放入prometheus这一个时间序列数据库中。那如何保证各处的数据格式是统一的呢?就是通过这个exporter。exporter也是用GO写的程序,它开放一个 http接口,对外提供格式化的数据。所以在不同的环境下,需要编写不同的 exporter。

当前使用到的组件和功能

prometheus是最主要的组件,负责采集数据,发出告警。node_exporter提供数据采集服务接口。alertmanager处理警告。prometheus-webhookdingtalk发送警告。grafana显示数据。

Prometheus的基本架构
在这里插入图片描述

在这里插入图片描述

Prometheus Server

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。
Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展。

Exporters

Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。
一般来说可以将Exporter分为2类:

  • 直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。
  • 间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。

AlertManager

在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。

PushGateway

由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。 当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。

1、整体环境部署

整体环境配置在外网的服务器上,node_exporter配置在需要监控的内网 IP服务器上。 prometheus、node_exporter、Alertmanager都解压到/usr/local/src/prometheus/ 下,grafana安装包rpm安装,go语言安装到/usr/local/go/,prometheus-webhook-dingtalk安装在go语言src目录下。

1.1、添加文件夹
# prometheus软链接文件夹
mkdir ‐p /usr/local/prometheus 
mkdir /usr/local/prometheus/prometheus
mkdir /usr/local/prometheus/node_exporte
mkdir /usr/local/prometheus/alertmanager

# prometheus源码文件夹 
mkdir ‐p /usr/local/src/prometheus 

# prometheus数据存放文件夹
mkdir ‐p /xtdata/prometheus/data

# prometheus数据存放文件夹权限设置
chown -R prometheus:prometheus /xtdata/prometheus/data
1.2、添加不可登录的prometheus的prometheus用户
#创建用户组
groupadd prometheus

#添加不可登录的prometheus的prometheus用户
useradd -g prometheus -s /sbin/nologin prometheus

2、Prometheus安装及配置

2.1、下载及解压安装包

https://prometheus.io/download/获取最新安装包

cd /usr/local/src/prometheus 

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

tar -xvf prometheus-2.25.0.linux-amd64.tar.gz

ln -s /usr/local/src/prometheus/prometheus-2.25.0.linux-amd64 /usr/local/prometheus/prometheus

# 设置prom etheus目录的权限为prometheus.prometheus
chown -R prometheus:prometheus /usr/local/prometheus/prometheus 
2.2、设置环境变量

也可以不设置,使用时最好为绝对路径

vim /etc/profile

PATH=/usr/local/prometheus/prometheus/bin:$PATH:$HOME/bin source

#使环境变量生效
/etc/profile 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值