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

基于 Prometheus + Alertmanager + Grafana + Loki 的可视化监控与告警系统搭建实战

一、环境与前提

1.1 系统环境

主机IP角色系统
master192.168.10.21监控中心(Prometheus、Alertmanager、Grafana、Loki)CentOS 7
node01192.168.10.22被监控节点CentOS 7
node02192.168.10.23被监控节点CentOS 7

1.2 软件版本

软件版本
Prometheus3.5.0
Alertmanager0.28.1
Node Exporter1.8.1
Grafana10.4.2
Loki2.8.2
Promtail2.8.2

1.3.邮件告警配置

  • 邮箱:。。。。。。@163.com

  • SMTP:smtp.163.com:465

  • 授权码:通过网易邮箱设置生成(已启用 POP3/SMTP 与 IMAP/SMTP)

  • 告警方式:邮件发送

二、 Prometheus

在 master(192.168.10.21)安装并验证

1.1 解包与目录准备(在 master 上执行)

cd /usr/local/src
tar -zxvf prometheus-3.5.0.linux-amd64.tar.gz
mv prometheus-3.5.0.linux-amd64 /usr/local/prometheus
cd /usr/local/prometheus

1.2 创建目录(data、rules)

mkdir -p /usr/local/prometheus/{data,rules}

1.3 配置 prometheus.yml(/usr/local/prometheus/prometheus.yml)

将下面完整内容写入(注意 targets 包含三台机器):

global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets: ['localhost:9093']   # Alertmanager 在本机rule_files:- "rules/alert.rules.yml"- "rules/alert_test.rules.yml"scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node'static_configs:- targets: ['192.168.10.21:9100','192.168.10.22:9100','192.168.10.23:9100']

1.4 添加一个用于测试的告警规则 rules/alert_test.rules.yml

groups:
- name: test-alertrules:- alert: TestInstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "测试告警:实例宕机"description: "主机 {{ $labels.instance }} 已经宕机超过 1 分钟"

1.5 配置systemd 服务(Prometheus)

创建 /etc/systemd/system/prometheus.service

内容:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target[Service]
User=root
Type=simple
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data
Restart=on-failure[Install]
WantedBy=multi-user.target

加载并启动

systemctl daemon-reload
systemctl enable --now prometheus

1.6 验证 Prometheus 是否运行

ss -tulnp | grep 9090
curl -sS http://127.0.0.1:9090/-/ready   # should return "Prometheus is ready." or HTTP 200

# 在浏览器打开 http://192.168.10.21:9090

如果启动报错,查看日志:

journalctl -u prometheus -f
tail -n 100 /usr/local/prometheus/prometheus.log   # 如果用 nohup 启动则查看该文件

三 、Node-export

在三台机器安装并启动 Node Exporter(采集指标)

在 master、node01、node02 都执行下面步骤(包在 master 的 /usr/local/src,也请把 node_exporter-1.8.1.linux-amd64.tar.gz 上传到每台主机的 /usr/local/src)

3.1、关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# ls
anaconda-ks.cfg  node_exporter-1.8.1.linux-amd64.tar.gz

3.2、解压软件包

[root@localhost ~]# tar -zxvf node_exporter-1.8.1.linux-amd64.tar.gz 
node_exporter-1.8.1.linux-amd64/
node_exporter-1.8.1.linux-amd64/NOTICE
node_exporter-1.8.1.linux-amd64/LICENSE
node_exporter-1.8.1.linux-amd64/node_exporter
[root@localhost ~]# mv node_exporter-1.8.1.linux-amd64 node_exporter
[root@localhost ~]# mv node_exporter /usr/local/node-exporter

3.3、配置systemd服务

[root@localhost ~]# vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target[Service]
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure[Install]
WantedBy=multi-user.target

3.4、重新加载并且使其开机自启

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable --now node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /etc/systemd/system/node_exporter.service.

在 Prometheus Web UI(http://192.168.10.21:9090 → Status → Targets)确认三台 node_exporter 为 UP。

四 、Alertmanager

 4.1、配置并启动 Alertmanager

(使用网易邮箱发送告警)

1、解包与目录准备(在 master)

[root@localhost ~]# tar -zxvf alertmanager-0.28.1.linux-amd64.tar.gz 
alertmanager-0.28.1.linux-amd64/
alertmanager-0.28.1.linux-amd64/LICENSE
alertmanager-0.28.1.linux-amd64/alertmanager
alertmanager-0.28.1.linux-amd64/alertmanager.yml
alertmanager-0.28.1.linux-amd64/amtool
alertmanager-0.28.1.linux-amd64/NOTICE
[root@localhost ~]# mv alertmanager-0.28.1.linux-amd64 alertmanager
[root@localhost ~]# mv alertmanager /usr/local/
[root@localhost ~]# ls /usr/local/
alertmanager  bin  etc  games  include  lib  lib64  libexec  node_exporter  prometheus  sbin  share  src
[root@localhost ~]# mkdir -p /usr/local/alertmanager/data

2、编辑 alertmanager.yml

(/usr/local/alertmanager/alertmanager.yml)

**重要:**把 SMTP_AUTH_PASSWORD 占位符替换为你本地主机上真实授权码(不要将授权码粘贴到任何公共/远程聊天记录中)。

示例配置(使用 163 的 SSL/TLS 端口):

[root@localhost ~]# vi /usr/local/alertmanager/alertmanager.yml
global:smtp_smarthost: 'smtp.163.com:465'smtp_from: '。。。。。。。@163.com'smtp_auth_username: '。。。。。。。。@163.com'smtp_auth_password: 'SMTP_AUTH_PASSWORD'smtp_require_tls: false  # 禁用 STARTTLS,因为465端口已经是SSLroute:receiver: emailgroup_wait: 5sgroup_interval: 10srepeat_interval: 1mreceivers:- name: emailemail_configs:- to: '。。。。。。。@163.com'send_resolved: true

3、配置systemd 服务

(/etc/systemd/system/alertmanager.service)

[root@localhost ~]# vi /etc/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager
Wants=network-online.target
After=network-online.target[Service]
User=root
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml --storage.path=/usr/local/alertmanager/data
Restart=on-failure[Install]
WantedBy=multi-user.target

4、加载并开机自启

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable --now alertmanager
Created symlink from /etc/systemd/system/multi-user.target.wants/alertmanager.service to /etc/systemd/system/alertmanager.service.

4.2、验证 Alertmanager

浏览器访问:http://192.168.10.21:9093

查看日志:journalctl -u alertmanager -f(观察是否有 SMTP 错误如 authentication failed / TLS errors)

1、 测试

Prometheus → Alertmanager → 邮箱 告警链路(触发测试)

2、 确认 Prometheus 已加载规则

在 master 上查看 Prometheus web UI:http://192.168.10.21:9090/rules,确认 test-alert 组存在。

3、 触发告警

在任一 node 上停止 node_exporter(比如 node01):
# 在 node01 (192.168.10.22) 上:

systemctl stop node_exporter
http://192.168.10.21:9093,可以看到告警;Alertmanager 会尝试发送邮件。

 五 、Grafana

在 master 上安装 Grafana(用于可视化)

我建议使用预编译二进制包(无须 Node.js),在 CentOS7 上最稳妥。

5.1、下载并解压(在 master)

[root@localhost ~]# wget https://dl.grafana.com/oss/release/grafana-10.4.2.linux-amd64.tar.gz
[root@localhost ~]# tar -zxvf 软件包
[root@localhost ~]# mv grafana-v10.4.2/ grafana
[root@localhost ~]# ls
alertmanager-0.28.1.linux-amd64.tar.gz  grafana                            node_exporter-1.8.1.linux-amd64.tar.gz
anaconda-ks.cfg                         grafana-10.4.2.linux-amd64.tar.gz  prometheus-3.5.0.linux-amd64.tar.gz
[root@localhost ~]# mv grafana /usr/local/
[root@localhost ~]# mkdir -p /usr/local/grafana/data /usr/local/grafana/logs /usr/local/grafana/plugins

5.2、配置systemd服务

1. 创建 systemd 服务文件

sudo vim /etc/systemd/system/grafana.service

然后把下面的内容粘进去:

[Unit]
Description=Grafana
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/grafana/bin/grafana-server \--homepath=/usr/local/grafana \--config=/usr/local/grafana/conf/defaults.ini \--packaging=tar \cfg:default.paths.data=/usr/local/grafana/data \cfg:default.paths.logs=/usr/local/grafana/logs \cfg:default.paths.plugins=/usr/local/grafana/plugins
Restart=on-failure
LimitNOFILE=10000[Install]
WantedBy=multi-user.target

2. 重新加载 systemd 守护进程

sudo systemctl daemon-reload

3. 设置开机自启并启动 Grafana

sudo systemctl enable grafana
sudo systemctl start grafana

4. 查看运行状态

sudo systemctl status grafana

5. 访问地址

浏览器访问:
http://localhost:3000
默认账户:admin / admin

5.3、添加数据源(Data Source)

Grafana 本身不存数据,它需要连接 Prometheus、MySQL、Loki 等「数据源」才能显示监控指标。

✅ 以 Prometheus 为例:

(最常见的数据源类型)

1️⃣ 左侧菜单栏 → 点击 ⚙️ Configuration(齿轮) → Data Sources

2️⃣ 点击右上角 “Add data source”

3️⃣ 在列表中选择 Prometheus

4️⃣ 在 HTTP → URL 填写 Prometheus 地址,例如:

http://localhost:9090

(如果 Prometheus 跑在其他服务器,就改为对应 IP)

5️⃣ 点击底部的 “Save & Test”

若出现绿色提示:

Data source is working

说明 Grafana 已成功连接 Prometheus

六 、配置 Loki 日志

6.1、安装并启动Loki

1. 创建目录并解压安装包

mkdir -p /usr/local/loki 
unzip loki-linux-amd64.zip 
mv loki-linux-amd64 /usr/local/loki/loki 
ls -l /usr/local/loki

2. 创建 Loki 主配置文件

编辑配置文件:

vi /usr/local/loki/loki-config.yml

粘贴以下内容 👇

auth_enabled: falseserver:http_listen_port: 3100grpc_listen_port: 9096common:path_prefix: /usr/local/lokistorage:filesystem:chunks_directory: /usr/local/loki/chunksrules_directory: /usr/local/loki/rulesreplication_factor: 1ring:instance_addr: 127.0.0.1kvstore:store: memberlistmemberlist:join_members: []schema_config:configs:- from: 2025-01-01store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: loki_index_period: 24hstorage_config:boltdb_shipper:active_index_directory: /usr/local/loki/indexcache_location: /usr/local/loki/cacheshared_store: filesystemfilesystem:directory: /usr/local/loki/chunkslimits_config:reject_old_samples: truereject_old_samples_max_age: 168hretention_period: 720h

3、创建目录与权限

mkdir -p /usr/local/loki/{chunks,index,cache,rules} 
chown -R root:root /usr/local/loki 
chmod -R 755 /usr/local/loki

4、启动 Loki 服务测试

手动启动 Loki 验证配置是否正确:
/usr/local/loki/loki --config.file=/usr/local/loki/loki-config.yml
如果输出中没有报错,并且最后出现:
level=info msg="Loki started"
则说明 Loki 启动成功。

5、Web 页面验证

在浏览器中访问以下地址:

http://192.168.10.21:3100/ready

如果返回:

ready

表示 Loki 运行正常 ✅


6、配置 Systemd 服务管理

编辑服务文件:

vi /etc/systemd/system/loki.service

写入以下内容 👇

[Unit]
Description=Loki Log Service
After=network.target[Service]
ExecStart=/usr/local/loki/loki --config.file=/usr/local/loki/loki-config.yml
Restart=on-failure
RestartSec=5[Install]
WantedBy=multi-user.target

7、启动并验证服务

sudo systemctl daemon-reload 
sudo systemctl start loki 
sudo systemctl enable loki 
sudo systemctl status loki -l

如果状态显示:

Active: active (running)

则表示 Loki 已成功注册为系统服务并在运行中 ✅

6.2、配置 Promtail 收集日志

1️⃣ 创建目录并配置文件

在每台虚拟机上:

解压并设置目录

unzip promtail-linux-amd64.zip
sudo mkdir -p /usr/local/promtail
sudo mv promtail-linux-amd64 /usr/local/promtail/promtail
sudo chmod +x /usr/local/promtail/promtail

编辑 promtail-config.yml 文件

[root@localhost ~]# sudo vi /usr/local/promtail/promtail-config.yml
server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://192.168.10.21:3100/loki/api/v1/pushscrape_configs:- job_name: systemstatic_configs:- targets:- localhostlabels:job: varlogshost: ${HOSTNAME}__path__: /var/log/*.log

2创建 Promtail 的 systemd 服务

[root@localhost ~]# sudo vim /etc/systemd/system/promtail.service
[Unit]
Description=Promtail service
After=network.target[Service]
Type=simple
ExecStart=/usr/local/promtail/promtail --config.file=/usr/local/promtail/promtail-config.yml
Restart=always[Install]
WantedBy=multi-user.target

3、启动 Promtail

sudo systemctl daemon-reload
sudo systemctl start promtail
sudo systemctl status promtail -l
sudo systemctl enable promtail

6.3、🧭 Grafana 添加 Loki 数据源步骤

一、登录 Grafana 控制台

浏览器访问:

http://192.168.10.21:3000

默认账号密码:

用户名:admin 密码:admin

首次登录会提示修改密码,可自行更改。


二、进入数据源配置页面

在 Grafana 左侧菜单栏中依次点击:

「⚙️ Configuration(配置)」 → 「Data Sources(数据源)」 → 「Add data source(添加数据源)」


三、选择 Loki 数据源

在数据源列表中找到 Loki,点击进入配置页面。


四、填写 Loki 服务地址

在配置页面中填写 Loki 的地址(与之前的 Loki 服务端口一致):

http://192.168.10.21:3100

🔹 注意:如果 Grafana 与 Loki 部署在同一台主机上,也可直接写 http://localhost:3100


五、保存并测试连接

点击页面底部的 「Save & Test」 按钮。
若出现提示:

Data source is working

✅ 表示连接成功。


六、验证数据源

点击左侧菜单中的 Explore(探索)

  • 在顶部下拉框选择刚刚添加的 Loki 数据源

  • 在查询栏中输入:

    {job="varlogs"}

    然后点击 Run query

若能看到日志流输出(系统日志或 Promtail 推送的内容),说明 Loki 数据源工作正常 ✅。


七、可选操作

  • 可以在「Dashboards → Import」中导入 Loki 相关模板,也可以自定义;

  • 或者在「Alerting」中结合 Loki 实现基于日志内容的告警。

http://www.dtcms.com/a/526023.html

相关文章:

  • 如何做一款app需要多少钱网站seo收费
  • 电商网站设计公司皆选亿企邦怎么快速排名
  • MySQL使用技巧:字段内容的替换、拼接
  • 2025年数字趋势:重塑公共服务
  • 中企动力全网门户网站微信小程序是什么框架
  • 做企业网站公司游戏客户端开发
  • RPC攻击(Remote Procedure Call Attack)是什么?
  • 广西河池住房和城乡建设厅网站dedecms视频网站模板
  • 基于AI的智能制造成本核算与报价系统 - 技术详解
  • 南阳做网站优化哪家好北京网站设计哪家公司好
  • 网站建设的技术有哪些方面西安市市政建设网站
  • 网站建设参考金利福珠宝的网站建设理念
  • 专注企业网站建设专注软件优化分享的网站
  • 阅文集团旗下哪个网站做的最好网站按钮psd
  • SWOT分析:最经典的工具,如何用出新意?
  • 金峰辉网站建设京东商城网站地址
  • 网站建设的前期投入社交平台推广方式
  • 金坛网站建设哪家好兰溪建设局网站
  • 广州番禺做网站网站要怎么做才专业
  • 中山制作企业网站centos7.2做网站
  • 通过 Grafana 使用 PromQL 查询分析观测云数据最佳实践
  • 镇江大港南站电商推广合同
  • 福田欧曼服务站小网站推荐
  • 建设单位适合去哪个网站看资料企业展厅建议做什么
  • 制造业销采协同难?销采一体化CRM打通订单与供应链全链路
  • 【Linux】Linux进程概念(三)(进程状态,僵尸进程,孤儿进程,进程优先级)
  • 【NestJS】Reflect Metadata 全解
  • 如何做搜索引擎网站淄博 做网站
  • 网站开发怎么开发公司简介宣传文案
  • 在REBa2Cu3O7−δ块状超导磁体优异性能的可靠外延生长中,缓冲层辅助生长架构的进展 项目文献