目标:在日本 VPS(Ubuntu/CentOS)上实现系统与业务监控、及时报警、集中化日志采集与检索。总体架构建议:Node Exporter → Prometheus → Alertmanager → 邮件/LINE/Slack;Filebeat/rsyslog → Logstash/Graylog/Elasticsearch → Kibana。优先考虑轻量化和可扩展。
步骤:1) 确认系统版本(cat /etc/os-release);2) 设置时区为东京(sudo timedatectl set-timezone Asia/Tokyo);3) 配置 NTP/sntp;4) 打开必要端口(Prometheus 9090、Grafana 3000、Elasticsearch 9200 等),使用 ufw 或 iptables 并限制来源 IP。
步骤:1) 下载官方二进制:wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz;2) 解压并复制到 /usr/local/bin;3) 建立 systemd 服务 /etc/systemd/system/node_exporter.service,内容参考官方;4) systemctl daemon-reload && systemctl enable --now node_exporter。验证:curl http://localhost:9100/metrics。
步骤:1) 下载 Prometheus,解压并放置 /opt/prometheus;2) 编辑 prometheus.yml,添加 scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100','其他主机:9100'];3) systemd 启动 promethues;4) 在 targets 页面确认抓取。
步骤:1) 安装 Alertmanager 并创建 alertmanager.yml,配置 receivers(email/Slack/LINE webhook);2) 在 Prometheus rules 文件中写规则(例如 node_filesystem_avail_bytes < 10737418240 for 10G);3) 在 prometheus.yml 中引用 rule_files 并重载 Prometheus;4) 测试告警:使用 kill 命令或模拟指标阈值。
步骤:1) 安装 Grafana,启动并登录 admin/admin;2) 添加数据源 Prometheus(URL http://prometheus:9090);3) 导入现成仪表盘(例如 node exporter full);4) 配置报警面板(Grafana Alert 或使用 Prometheus 接管)。
步骤:1) 建议在每台 VPS 安装 Filebeat:sudo apt install filebeat;2) 配置 filebeat.yml 指向 Logstash/Elasticsearch(output.elasticsearch 或 output.logstash);3) 如果使用 rsyslog,配置 /etc/rsyslog.d/50-forward.conf 将日志转发到本地文件或远端;4) 启动并验证:filebeat test output。
步骤:1) 对小规模推荐 Elasticsearch + Kibana + Logstash:安装对应版本并调整 vm.max_map_count;2) 配置 Logstash pipeline 解析 grok、timestamp;3) 在 Elasticsearch 设置索引模板与 ILM(索引生命周期)策略,设置热/温/冷/删除阶段;4) 在 Kibana 建立索引模式并创建常用发现视图。
步骤:1) 配置 /etc/logrotate.d/yourapp:daily/weekly、rotate 7、compress、notifempty、copytruncate;2) 对于转发失败场景使用本地缓存目录并定期归档到对象存储(如 AWS S3 或日本对象存储),使用 rclone 或 awscli 同步并加密传输。
步骤:1) 建议多通道(邮件+团队聊天)。Prometheus Alertmanager 支持 webhook、email、slack。示例 email 配置使用 SMTP,Slack 使用 incoming webhook URL;2) 配置静默期(for: 5m)与分组规则(group_by: [alertname, instance])避免告警风暴;3) 对计划内维护使用抑制(silence)。
步骤/命令:1) 查看服务状态:systemctl status node_exporter prometheus filebeat;2) 查看端口:ss -tulpen | grep 9090;3) 网络连通:mtr -rw example.com;4) 抓包:tcpdump -i eth0 port 9200;5) 检查日志量和磁盘:du -sh /var/log/*;定期审查 Kibana 的索引大小并调整 ILM。
步骤:1) 对敏感日志和传输启用 TLS(Elasticsearch/Logstash 与 Filebeat 使用证书);2) 给 Prometheus、Grafana、Kibana 启用基本认证或反向代理(nginx + HTTPS);3) 日志与配置定期备份到异地存储,保留策略按合规要求设置。
Q1: 在日本 VPS 上部署 Prometheus/Grafana 的网络注意事项有哪些?
A1: 要注意防火墙规则仅放通必要端口(9090、3000、9100、9200),优先限制到监控服务器 IP;设置时区为 Asia/Tokyo 保证时间一致;若跨区域抓取数据,考虑网络带宽与延迟,必要时使用 Pushgateway 或在日本侧做本地聚合。
Q2: 日志量大时如何控制 Elasticsearch 存储增长?
A2: 使用 Index Lifecycle Management (ILM) 设置热/温/冷分层,启用索引压缩(best_compression)、定期删除旧索引或转储到对象存储;对日志采集使用过滤与抽样(例如对 debug 日志抽样),只保留关键字段。
Q3: 異常报警频繁(告警风暴)怎么处理?
A3: 在 Alertmanager 配置 group_by、group_wait、group_interval、repeat_interval,并为噪声告警设置更高阈值或更长的 for 时间;使用抑制(silence)避免重复通知;优化告警规则,避免直接基于瞬时值触发,改用平均/窗口判断。