kizumi_header_banner_img
文章导读

普罗米修斯


avatar
Mortis-AveMuj1ca 2026年5月14日 145

普罗米修斯.txt
监控协议与端口

backend.ebilibili.com 是 HTTP 还是 HTTPS?
HTTPS


www.ebilibili.com 是 HTTP 还是 HTTPS?
HTTPS


如果不是默认 80/443,请提供端口,比如 backend.ebilibili.com:8080。
什么端口,什么服务的端口?我需要做什么特殊处理给你提供特殊的像zabbix-agent那样的东西吗?


探测路径 & 预期响应
这是什么?


只检查根路径 / 吗?还是需要检查特定路径,如 /health?
health是什么?我需要在开发的时候写好health?

预期 HTTP 状态码是多少?一般是 200,也可能有 301/302 的跳转?
预期是200,我有nginx负载均衡,负载均衡后会怎么样?是跳转还是200?


是否要验证返回内容中包含某关键词(如 “ok”)?还是只看连通性?
没有关键词,我开发的时候没考虑监控,所以只看连通性。


你的 Prometheus 与 Blackbox Exporter 部署环境
Blackbox Exporter是什么?Prometheus在22.04 LTS (Jammy Jellyfish)


Blackbox Exporter 的访问地址是什么?例如 localhost:9115 还是 10.0.0.5:9115?
Blackbox Exporter是什么?我目前做的事情有,从官网下载Prometheus二进制文件包,解压。
root@shop:~/prometheus-3.5.3.linux-amd64# ls
LICENSE NOTICE prometheus prometheus.yml promtool



是否需要跨网络?需不需要额外配置 proxy_url?
需要跨网络,是三台完全不相干的公网服务器。
我不知道要不要额外配置 proxy_url。


抓取频率
一般是多少?和“希望多久检查一次?例如 15s、30s。”问题的区别是?


希望多久检查一次?例如 15s、30s。
一般是多久?和“抓取频率”问题的区别是?


告警需求
1,大概持续了10分钟(你不需要钻死牛角尖卡10分钟,大概是那么回事就行)还是5xx不能访问的情况
2,CPU 使用率超过 90% 持续 5 分钟。
可用内存低于 10%。Swap 使用率超过 50%。磁盘空间使用率超过 80%。磁盘 I/O 等待时间超过 10ms。网卡流量超过设定阈值(如 100Mbps)。
Web 服务响应时间超过 3 秒。数据库连接数超过最大连接数的 80%。


是否需要简单的告警规则?例如连续 2 分钟无法访问就触发告警。
看”告警需求”

告警要发送到哪里?如需要,我可以顺带给出 Alertmanager 示例。
发送到邮箱2014145559@qq.com
授权码 xxxx


—————————————-


给普罗米修斯服务器装blackbox_exporter

cd /root
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.25.0/blackbox_exporter-0.25.0.linux-amd64.tar.gz
tar xf blackbox_exporter-0.25.0.linux-amd64.tar.gz
cd blackbox_exporter-0.25.0.linux-amd64
./blackbox_exporter –config.file=blackbox.yml

给普罗米修斯服务器装alertmanager


cd /root
wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz
tar xf alertmanager-0.27.0.linux-amd64.tar.gz
cd alertmanager-0.27.0.linux-amd64

nohup ./alertmanager –config.file=alertmanager.yml &


给普罗米修斯服务器配置alert_rules.yml
./prometheus –config.file=prometheus.yml 会自动加载同目录的alert_rules.yml


给业务装node_exporter
cd /root
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar xf node_exporter-1.8.2.linux-amd64.tar.gz
cd node_exporter-1.8.2.linux-amd64
nohup ./node_exporter &



业务 9100 端口,没有认证信息,要在云防火墙上写好白名单。
服务器 :9090/alerts 触发的告警 -> 6501
服务器 :9093 告警转发状态 -> 6502





alertmanager.yml
global:
smtp_smarthost: ‘smtp.qq.com:587’
smtp_from: ‘2014XXXX59@qq.com’
smtp_auth_username: ‘2014XXXX59@qq.com’
smtp_auth_password: ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXX’

route:
receiver: ’email-me’
group_by: [‘alertname’]
group_wait: 10s
group_interval: 10s
repeat_interval: 1h

receivers:
– name: ’email-me’
email_configs:
– to: ‘2014145559@qq.com’
headers:
Subject: ‘[Prometheus告警] {{ .GroupLabels.alertname }}’



alert_rules.yml
groups:
– name: website_alerts
rules:
# 网站不可用超过10分钟
– alert: SiteDown
expr: probe_success{job=”blackbox-websites”} == 0
for: 10m
labels:
severity: critical
annotations:
summary: “网站 {{ $labels.instance }} 无法访问”
description: “{{ $labels.instance }} 已经连续探测失败超过10分钟”

# 网站响应时间超过3秒
– alert: SiteSlow
expr: probe_duration_seconds{job=”blackbox-websites”} > 3
for: 5m
labels:
severity: warning
annotations:
summary: “网站 {{ $labels.instance }} 响应过慢”
description: “当前响应时间 {{ $value }} 秒”

– name: system_alerts
rules:
# CPU > 90% 持续5分钟
– alert: HighCPUUsage
expr: 100 – (avg by (instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 90
for: 5m
labels:
severity: warning
annotations:
summary: “主机 {{ $labels.instance }} CPU使用率超过90%”

# 可用内存 < 10%
– alert: LowMemory
expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 < 10
for: 5m
labels:
severity: critical
annotations:
summary: “主机 {{ $labels.instance }} 可用内存低于10%”

# Swap > 50%
– alert: HighSwapUsage
expr: (1 – (node_memory_SwapFree_bytes / node_memory_SwapTotal_bytes)) * 100 > 50
for: 5m
labels:
severity: warning
annotations:
summary: “主机 {{ $labels.instance }} Swap使用率超过50%”

# 磁盘使用 > 80%
– alert: HighDiskUsage
expr: (node_filesystem_size_bytes{fstype!=”tmpfs”} – node_filesystem_free_bytes{fstype!=”tmpfs”}) / node_filesystem_size_bytes{fstype!=”tmpfs”} * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: “主机 {{ $labels.instance }} 磁盘{{ $labels.mountpoint }} 使用率超过80%”

# 磁盘 I/O 等待时间 > 10ms (这里用 await 指标,需要 node_exporter 开启 diskstats collector)
– alert: HighDiskIO
expr: rate(node_disk_io_time_seconds_total[1m]) * 1000 > 10
for: 5m
labels:
severity: warning
annotations:
summary: “主机 {{ $labels.instance }} 磁盘 I/O 等待时间超过10ms”

# 网卡流量 > 100Mbps (100,000,000 bits/s)
– alert: HighNetworkTraffic
expr: rate(node_network_receive_bytes_total{device!=”lo”}[5m]) * 8 > 100000000
for: 5m
labels:
severity: warning
annotations:
summary: “主机 {{ $labels.instance }} 网卡 {{ $labels.device }} 接收流量超过100Mbps”

# 数据库连接数 > 80% —— 暂时注释,等你装了对应 exporter 再开启
# – alert: TooManyDBConnections
# expr: …


blackbox.yml

modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_status_codes: [200] # 最终页面返回200就算成功
follow_redirects: true # 跟随负载均衡的跳转
method: GET
# 如果是 HTTPS,默认就会用 HTTPS,无需额外配置证书验证(不验证)
tls_config:
insecure_skip_verify: true


prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s

alerting:
alertmanagers:
– static_configs:
– targets:
– localhost:9093 # 等下启动 Alertmanager

rule_files:
– “alert_rules.yml”

scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘localhost:9090’]

# 黑盒监控:两个网站
– job_name: ‘blackbox-websites’
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
– targets:
– https://backend.ebilibili.com
– https://www.ebilibili.com
relabel_configs:
– source_labels: [__address__]
target_label: __param_target
– source_labels: [__param_target]
target_label: instance
– target_label: __address__
replacement: localhost:9115 # Blackbox Exporter 地址

# 服务器系统监控(如果你在两个业务服务器上装了 node_exporter,默认9100端口)
– job_name: ‘node_exporter’
static_configs:
– targets:
– 123.56.118.63:9100
– 156.226.176.143:9100
# 如果 node_exporter 还没装,这个 job 只会显示 down,不影响网站监控



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码