当前位置: 首页 > news >正文

从指标采集到异常通知:搭建完整的Linux服务器监控告警系统

前言

服务器监控不能只解决“看见数据”,还要在异常发生时主动通知管理员。一套完整的监控系统通常包含三个环节:Node Exporter采集CPU、内存、磁盘和网络等主机指标;Prometheus定时抓取数据并根据规则判断异常;Alertmanager接收告警,完成分组、抑制和邮件通知。

这套组合适合个人服务器、家庭实验室、小型业务系统和开发测试环境。管理员不必反复登录主机检查状态,当Node Exporter停止运行、资源使用率超过阈值或服务无法抓取时,系统可以自动触发告警,并将信息发送到指定邮箱。

如果Prometheus或Alertmanager部署在内网,cpolar可以为管理页面建立公网访问地址,方便在手机或异地电脑上查看告警状态。需要注意的是,cpolar主要解决远程访问问题,Prometheus与Alertmanager位于同一网络时,应优先通过本地地址通信,不必让内部告警链路绕行公网。监控页面开放到外网后,也应设置访问保护,避免指标、主机名称和告警内容泄露。

1.在Centos7上安装Alertmanager

在安装alertmanager前需要安装node_exporter和prometheus,

接下来跟我进入监控告警的世界吧!

去官网下载安装文件:

找到linux版,下载:

下载完成后记住下载路径。

创建alertmanager的目录:

mkdir-p/app/alertmanager

进入到这个目录:

cd/app/alertmanager

手动上传下载好的alertmanager文件。

上传成功后解压:

tar-vxzfalertmanager-0.28.1.linux-amd64.tar.gz

改名方便记忆:

mvalertmanager-0.28.1.linux-amd64 alertmanager

将Altermanager配置为系统服务:

cd/usr/lib/systemd/system
vimalertmanager.service
[Unit]Description=https://prometheus.io[Service]Restart=on-failureExecStart=/app/alertmanager/alertmanager--config.file=/app/alertmanager/alertmanager.yml[Install]WantedBy=multi-user.target

加载system文件,启动alertmanager这个服务,并设置开机启动:

systemctl daemon-reload systemctl start alertmanager.service systemctlenablealertmanager.service

也可以后台手动启动:

nohup./alertmanager--config.file=alertmanager.yml>>/app/alertmanager/alertmanager/alertmanager.out2>&1&catalertmanager.out

启动成功后,访问Altermanager,ip+9093,默认端口为 9093。

假如,我们想用手机或者平板,随时随地可以查看告警消息,我们应该怎么做呢?接下来cpolar就派上用场啦!

2.安装cpolar实现随时随地开发

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurlhttps://get.cpolar.sh|sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudosystemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://192.168.42.101:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

3.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:alertmanager,注意不要与已有的隧道名称重复

  • 协议:http

  • 本地地址:9093

  • 域名类型:随机域名

  • 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

4.在prometheus上配置alertmanager

进入prometheus的配置文件,加入alertmanager告警规则:

vi/app/prometheus/prometheus.yml

加入以下内容后:Prometheus可以通过这个公网地址4246d47e.r2.cpolar.top(刚才用cpolar打通的公网地址,也可以用localhost:9093)访问到运行在本地9093端口的Alertmanager服务,从而抓取系统指标。

- targets:["4246d47e.r2.cpolar.top"]labels: app:"alertmanager"

这一步配置的作用是:告诉 Prometheus,当监控规则触发告警时,应该把告警信息发送到哪个 Alertmanager 服务进行处理(便于一会监控node_exporter,也可以监控mysqld_exporter等等)。

alerting: alertmanagers: - static_configs: - targets:["4246d47e.r2.cpolar.top"]

重新启动prometheus:

systemctl restart prometheus

抓取成功!

5.利用alertmanager来配置node_exporter告警

在第四章节,我们已经成功配置告警信息发送到alertmanager,接下来我们来验证一下,是否可以成功发送!

我们这里举例,倘若node_exporter关闭则发送告警。

node_exporter还可以监控主机的 CPU 使用率,内存使用量,文件系统用量等等。

我们先改写prometheus的配置文件,改以下内容:

vi/app/prometheus/promethues.yml

进入到prometheus配置目录下,写一个配置文件1.yml:

vi/app/prometheus/1.yml
groups: - name: node-alerts rules:# 实例宕机- alert: node_exporter实例宕机 expr: up{job="node_exporter",instance="localhost:9100"}==0for: 15s labels: severity: critical annotations: summary:"实例 {{$labels.instance }} 已停止运行超过 15 秒!"description:"作业 {{$labels.job }} 的实例 {{$labels.instance }} 无法抓取。"- name: prometheus rules:# 实例宕机- alert: 实例宕机 expr: up{job="prometheus"}==0for: 15s labels: severity: critical annotations: summary:"实例 {{$labels.instance }} 已停止运行超过 15 秒!"description:"作业 {{$labels.job }} 的实例 {{$labels.instance }} 无法抓取。"

重启prometheus:

systemctl restart prometheus

打开prometheus网页,发现加入成功。

接下来,我们验证一下,关闭node_exporter,会不会告警:

systemctl stop node_exporter

再次打开prometheus网页,告警成功:

打开alertmanager网页,我们发现那两条告警也显示成功。

这样我们就成功配置prometheus告警啦!

6.使用Alertmanager发送服务器告警至QQ邮箱

QQ 邮箱默认不允许外部应用直接使用密码登录SMTP服务器,因此你需要获取一个授权码

  • 登录QQ 邮箱,进入设置->账户
  • 找到SMTP/IMAP/POP3/Exchange 服务,开启SMTP 服务
  • 开启后,会提示你获取一个授权码

接下来,我们进入alertmanager安装目录,修改alertmanager配置文件alertmanager.yml:

vi/app/alertmanager/alertmanager/alertmanager.yml

添加以下内容来配置告警规则:

global: resolve_timeout: 5m smtp_from:'你的QQ邮箱'smtp_smarthost:'smtp.qq.com:465'smtp_auth_username:'你的QQ邮箱'smtp_auth_password:'你的QQ邮箱授权码'smtp_require_tls:falsesmtp_hello:'qq.com'route: group_by:['alertname']group_wait: 5s group_interval: 5s repeat_interval: 5m receiver:'email'receivers: - name:'email'email_configs: - to:'你的QQ邮箱'send_resolved:true

这样有告警消息就可以发送到QQ邮箱啦!

我们来验证一下,配置有没有问题:

./alertmanager--config.file=alertmanager.yml--log.level=debug

手动运行测试,没报错即正确!

重启alertmanager:

systemctl restart alertmanager systemctl status alertmanager

登录邮箱查看,node_exporter挂机是否发邮件:

接收到邮件,说明我们配置正确!

这样我们就可以随时随地查看告警信息了!

7.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我这里演示使用的是alertmanager,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道alertmanager,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的alertmanager页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

有了cpolar我们可以在任意一台服务器,使用此alertmanager监控,你的同事=也可以一键监控!是不是特别方便呢~

结尾

Node Exporter、Prometheus和Alertmanager分别承担指标采集、规则判断与告警通知,组合后形成了一条完整的服务器监控链路。相比只查看资源图表,邮件告警能够让服务宕机和指标异常更早被发现,为后续处理争取时间。

cpolar可以补充异地查看Alertmanager页面的能力,但不应替代内部组件之间的本地通信。长期使用时,还应根据真实负载调整告警阈值,避免设置过低产生大量无效通知,同时保护邮箱授权码、管理账号和公网访问地址。

http://www.jsqmd.com/news/1082306/

相关文章:

  • Linux服务器安全加固:彻底关闭RPCBIND服务与防火墙配置实战
  • 3步快速上手茉莉花插件:Zotero中文文献管理的终极解决方案
  • 5分钟掌握ExifToolGUI:Windows上最强大的照片元数据管理工具
  • 鸿蒙原生ArkTS布局之ListItemGroup分组列表通讯录实现
  • 英雄联盟回放文件终极解析指南:ROFL播放器完整使用教程
  • 【VMware OVF导出黄金法则】:20年老司机亲授5大避坑指南与3种极速导出实战方案
  • MCP 协议如何助力企业实现 Agent 自动化
  • 如何永久保存你的微信回忆:WeChatMsg完整指南让聊天记录永不消失
  • Reloaded-II模块化架构的技术突破与系统稳定性优化
  • 终极抖音直播录制指南:如何搭建40+平台无人值守自动录制系统
  • 2026 变声器横评:4 款主流产品实测,新手入门避坑指南
  • 终极指南:如何用开源工具免费突破网盘限速,实现全平台高速下载
  • 树莓派3启动流程全解析:从OTP配置到USB启动实战
  • 树莓派config.txt遗产选项深度解析:从底层原理到裸机开发实战
  • 别光喊AI Agent,自己动手造一个!LangChain工作机制解析与实战入门
  • 实战指南:docker-wechatbot-webhook如何高效实现微信媒体文件自动保存
  • 3分钟极速激活:Windows和Office的完整免费解决方案
  • 库存管理:定义、工作原理、方法和示例
  • 告别VMware许可证费用:2024年最实用的5款免费替代工具,部署效率提升300%
  • 图的拉普拉斯矩阵特征值比:从正则图到一般图的Spielman猜想
  • 【C/C++】多线程竞争与线程池
  • MuleSoft企业级AI集成:打通LLM与SAP/Workday等核心系统的实战指南
  • 电信网关配置管理系统命令注入漏洞深度剖析与实战复现
  • 全套DFM审查流程与八大高频专属禁忌
  • 国产贴片机如何在中小批量SMT产线中找到“超车弯道”?
  • TVA在物理AI领域的决定性意义(3)
  • 【VMware vs VirtualBox终极选型指南】:20年虚拟化专家亲测的5大核心维度对比,90%开发者都选错了!
  • 5大技术方案深度解析:fanqienovel-downloader如何重构数字阅读体验
  • 磐创科技工业协议转换器介绍
  • 如何快速实现九大网盘高速下载?LinkSwift直链助手完整指南