1.
准备工作与前提
- 环境:假设Ubuntu 20.04或22.04,具有root或sudo权限;开放SSH。
- 端口:Prometheus默认9090、node_exporter 9100、Grafana 3000、Alertmanager 9093,建议使用ufw或iptables按需开放并限制来源IP。
- 软件选择:Prometheus(采集)、node_exporter(主机指标)、blackbox_exporter(外部可达性)、Grafana(展示)、Alertmanager(告警派发)。
2.
安装node_exporter(主机指标采集)
- 下载并安装:执行 wget 下载最新release并解压到 /opt/node_exporter;创建系统服务文件 /etc/systemd/system/node_exporter.service。
- 启动与测试:sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter;在本机或Prometheus服务器上用 curl http://<服务器IP>:9100/metrics 验证。
3.
安装Prometheus并配置抓取
- 安装:下载Prometheus二进制,解压到 /opt/prometheus,创建 prometheus.yml。
- prometheus.yml示例(核心部分):
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['your-thai-ip:9100']
- 启动:建立systemd服务,sudo systemctl enable --now prometheus;访问 http://your-prometheus:9090/targets 查看target是否UP。
4.
安装黑盒与外部连通性检查
- blackbox_exporter:安装并以不同端口运行(例如9115)。
- 在prometheus.yml添加:
- job_name: 'blackbox'
metrics_path: /probe
params: {module: [http_2xx]}
static_configs:
- targets: ['http://your-service:80']
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
- 这样可监控HTTP响应码和延迟,适合检测泰国节点到目标的网络质量。
5.
安装Grafana并导入仪表盘
- 安装:apt安装或官方包,启动并登录(默认 admin/admin)。
- 添加Prometheus为数据源(URL填写 http://localhost:9090 或相应地址)。
- 导入现成dashboard(如node_exporter Full)或自建图表:CPU、内存、磁盘IO、网络带宽、磁盘使用率、TCP连接数等。
6.
配置告警规则与Alertmanager集成
- 在Prometheus配置rules文件(如 /etc/prometheus/rules.yml):
groups:
- name: host_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 5m
labels: {severity: critical}
annotations:
summary: "CPU使用率过高 (实例 {{ $labels.instance }})"
description: "5分钟内CPU>85%"
- 在prometheus.yml加入 rule_files 指向该文件,并在Prometheus启动参数中加上 --alertmanager.url=http://localhost:9093(或在web UI中配置)。
7.
配置Alertmanager派发方式(邮件/Telegram/Webhook)
- alertmanager.yml示例(简化):
global:
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alert@yourdomain.com'
smtp_auth_username: 'user'
smtp_auth_password: 'pass'
route:
receiver: 'team'
receivers:
- name: 'team'
email_configs:
- to: 'ops@yourdomain.com'
telegram_configs:
- bot_token: '123:ABC'
chat_id: '987654321'
- 重启Alertmanager并在Prometheus中确保能找到它。测试发送:使用amtool或在Prometheus触发test alert。
8.
防火墙、安全与运维细节
- 协议与端口只开放必要来源(例如只允许监控服务器访问9100/9115)。
- 使用基本认证或反向代理(nginx)保护Grafana界面;为Prometheus/Alertmanager配置TLS或仅内网访问。
- 日志与盘空间:监控 /var/log 及 Prometheus 数据目录的磁盘占用,并为数据库做周期性备份。
9.
故障排查与演练步骤
- 验证步骤:1) curl /metrics;2) 在Prometheus UI查看target和rule状态;3) 使用 promtool check rules rules.yml 检验语法。
- 演练:人为模拟高负载(stress工具)、断开服务或网络,验证告警触发与通知到达,记录演练结果并调整阈值与抑制策略。
10.
常见Q&A — 我如何快速开始监控泰国VPS?
问:新手如何最快上手一台泰国VPS的监控?
答:先在VPS上部署node_exporter并开放9100端口,在一台集中Prometheus(可以也是云端)添加对应target并确认UP,然后安装Grafana导入dashboard,最后按需添加告警规则。
11.
常见Q&A — 告警频繁抖动怎么办?
问:为什么告警经常短时触发然后恢复(抖动)?如何避免?
答:增加for时长(如from 30s到5m)、使用avg/irate平滑表达式、对短暂波动使用抑制(silence)或聚合告警,并在Alertmanager中配置分组与抑制规则。
12.
常见Q&A — 在泰国服务器上如何保证告警能可靠到达?
问:邮件或Telegram发送失败如何保障告警可靠投递?
答:配置多种接收器(邮件+Telegram+Webhook),在Alertmanager使用重试与备用接收器,确保SMTP/网络可达并监控Alertmanager自身的健康。
来源:性能监控实战泰国服务器租业如何配置监控与故障报警