监控和日志记录是管理和维护 Ubuntu Server 22.04 的关键方面。无论您运行的是单台服务器还是管理复杂的基础设施,有效的监控工具都能让您跟踪系统性能、排除故障并确保可靠性。本指南将介绍如何使用 rsyslog 或 syslog-ng设置集中式日志记录、将日志转发到远程日志服务器,以及将 Ubuntu Server 与 Nagios、Zabbix 和 Prometheus 等常用监控平台集成。
01. Ubuntu Server 简介 – SysOSX: AI & Cloud
02. 如何设置您的第一台 Ubuntu 服务器:初学者指南 – SysOSX: AI & Cloud
03. 精通 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud
04. 在 Ubuntu Server 上管理用户和权限:综合指南 – SysOSX: AI & Cloud
05. Ubuntu Server 网络基础:综合指南 – SysOSX: AI & Cloud
06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud
07.修补和更新 Ubuntu Server:综合指南 – SysOSX: AI & Cloud
08. 保护您的 Ubuntu 服务器:加固和防护的实用步骤 – SysOSX: AI & Cloud
10. Ubuntu Server 系统监控工具:综合指南 – SysOSX: AI & Cloud
服务器监控为何重要
在当今全天候在线的数字化环境中, 97% 的组织 认为服务器监控对业务连续性至关重要(IDC,2024 年)。对于 Ubuntu Server 22.04 用户而言,有效的监控意味着:
📊 为容量规划提供可行的见解
🛠️ 通过主动检测防止 68% 的潜在故障
📈 通过跟踪 CPU/RAM/磁盘使用情况优化资源分配
🔍 通过集中式日志记录实现快速故障排除
Ubuntu Server 上的集中式日志记录
集中式日志记录将多台服务器的日志整合到一个位置,便于分析基础设施中的问题并进行故障排除。Ubuntu Server 22.04 支持以下强大的日志记录工具: rsyslog 和 syslog-ng。
集中式日志记录精通
rsyslog 与 syslog-ng:快速对比
| 特性 | rsyslog | syslog-ng |
|---|---|---|
| 协议支持 | UDP/TCP | UDP/TCP/TLS |
| 过滤 | 基础 | 高级 |
| 性能 | 高 | 非常高 |
| 配置 | 简单 | 复杂 |
设置 rsyslog 以实现集中式日志记录
rsyslog 是一个可靠且广泛使用的日志守护进程,Ubuntu Server 预装了该程序。请按以下步骤将其配置为集中式日志记录:
- 安装 rsyslog(如果尚未安装):
sudo apt update && sudo apt install rsyslog
- 编辑 rsyslog 配置文件:
打开/etc/rsyslog.conf,取消注释以下行以启用基于 UDP 或 TCP 的日志转发:
# For UDP
#module(load="imudp")
#input(type="imudp" port="514")
# For TCP
#module(load="imtcp")
#input(type="imtcp" port="514")
- 重启 rsyslog 服务:
sudo systemctl restart rsyslog
- 设置日志转发:
要将日志转发到远程服务器,请将以下行添加到/etc/rsyslog.conf:
*.* @@remote-server-ip:514
- 将
remote-server-ip替换为日志服务器的 IP 地址。请使用@表示 UDP,使用@@表示 TCP。
设置 syslog-ng 以实现集中式日志记录
syslog-ng 是另一个强大的日志记录工具,提供高级过滤和日志记录功能。设置方法如下:
- 安装 syslog-ng:
sudo apt update && sudo apt install syslog-ng
- 配置 syslog-ng 以实现集中式日志记录:
编辑配置文件/etc/syslog-ng/syslog-ng.conf:
source s_local {
system();
internal();
};
destination d_remote {
tcp("remote-server-ip" port(514));
};
log {
source(s_local);
destination(d_remote);
};
- 将
remote-server-ip替换为日志服务器的 IP 地址。 - 重启 syslog-ng:
sudo systemctl restart syslog-ng
将日志转发到远程日志服务器
在分布式环境中,将日志转发到远程服务器对于集中监控至关重要。 rsyslog 和 syslog-ng 都支持通过 UDP 或 TCP 转发日志。请确保远程日志服务器已配置为接受指定端口(例如 514)上的传入日志。
配置远程日志服务器
在远程日志服务器上,请确保 rsyslog 或 syslog-ng 已配置为接收日志:
- 对于
rsyslog,将以下行添加到/etc/rsyslog.conf:
module(load="imtcp")
input(type="imtcp" port="514")
- 对于
syslog-ng,请定义一个用于接收传入日志的源:
source s_remote {
tcp(port(514));
};
将 Ubuntu Server 与监控平台集成
Nagios、Zabbix 和 Prometheus 等监控平台可实时了解服务器的健康状况、性能和资源利用率。以下是将 Ubuntu Server 22.04 与这些工具集成的方法。
Nagios:经典方案
Nagios 是一款强大的监控工具,可跟踪服务器性能并提醒您注意潜在问题。要将 Nagios 与 Ubuntu Server 集成:
- 安装 Nagios 代理:
sudo apt update && sudo apt install nagios-nrpe-server nagios-plugins
- 配置 NRPE:
编辑/etc/nagios/nrpe.cfg以定义 Nagios 将监控的命令:
command[check_load]=/usr/lib/nagios/plugins/check_load -w 5,4,3 -c 10,8,6
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
- 重启 NRPE:
sudo systemctl restart nagios-nrpe-server
Zabbix:企业级监控
Zabbix 是一个企业级监控平台,具有丰富的自定义选项。要将 Zabbix 与 Ubuntu Server 集成:
- 安装 Zabbix 代理:
sudo apt update && sudo apt install zabbix-agent
- 配置 Zabbix 代理:
编辑/etc/zabbix/zabbix_agentd.conf并设置服务器和主机名:
Server=your-zabbix-server-ip
Hostname=UbuntuServer22.04
- 重启 Zabbix 代理:
sudo systemctl restart zabbix-agent
Prometheus + Grafana:现代监控栈
Prometheus 是一款现代监控工具,专为可扩展性和灵活性而设计。要将 Prometheus 与 Ubuntu Server 集成:
- 安装 Node Exporter:
Node Exporter 是一个轻量级代理,用于向 Prometheus 公开指标。
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
- 运行 Node Exporter:
sudo nohup /usr/local/bin/node_exporter &
- 配置 Prometheus:
通过编辑prometheus.yml文件将 Ubuntu 服务器添加到 Prometheus:
scrape_configs:
- job_name: 'ubuntu_servers'
scrape_interval: 15s
static_configs:
- targets: ['server1:9100', 'server2:9100']
Grafana 仪表盘创意:
- 集群范围资源热图
- 预测性磁盘空间预测
- 异常检测告警
专业监控策略
- 日志保留策略
- 7 天 – 关键系统
- 30 天 – 常规服务器
- 1 年 – 合规系统
- 告警阈值最佳实践
- 🟢 警告:磁盘使用率 75%
- 🔴 严重:磁盘使用率 90%
- 📈 自动扩缩容触发器:CPU 持续 70%
- 成本优化
- 使用 VictoriaMetrics 实现 10 倍于原生 Prometheus 的存储压缩
- 对调试级别条目实施日志采样
现代方案:分层日志管理
聪明的团队会结合多种保留策略:
| 层 | 保留期 | 存储类型 | 用例 |
|---|---|---|---|
| 热层 | 7 天 | NVMe/SSD | 主动故障排除 |
| 温层 | 30 天 | HDD/云存储 | 事后分析 |
| 冷层 | 1 年以上 | Glacier/S3 Deep Archive | 合规/审计 |
实现示例:
# Use logrotate with AWS S3 lifecycle rules
/var/log/nginx/*.log {
daily
rotate 7
compress
postrotate
/usr/bin/aws s3 sync /var/log/nginx/ s3://logs-hot/
find /var/log/nginx/ -type f -mtime +7 -exec aws s3 cp {} s3://logs-cold/ \;
endscript
}
重新评估保留期的关键因素
- 合规要求
- GDPR:个人数据最长 6 年
- SOX:金融系统 7 年
- PCI-DSS:1 年,其中 3 个月可立即访问
- 事件调查需求
- APT 攻击通常在泄露 6 个月以上后才被发现(Mandiant M-Trends 2024)
- 成本优化策略
- 7 天后压缩日志:
zstd --ultra -22(压缩率 80% 以上) - 使用列式格式(Parquet/ORC)使分析存储缩小 60%
- 7 天后压缩日志:
修订建议
对于 大多数生产关键系统:
- 热层访问:7-14 天(SSD/NVMe)
- 合规归档:1 年以上(冷存储)
- 安全日志:最少 180 天(CIS Benchmark v4)
合规设置示例:
# Auditd rules for PCI-DSS
-a always,exit -F arch=b64 -S all -F path=/var/log/payment.log -F perm=wa -k payment_logs
常见问题:Ubuntu Server 监控
Q:我应该多久检查一次服务器指标?
A:– 生产系统每 15 秒检查一次
- 非关键工作负载每 1 分钟检查一次
Q:我可以监控 Docker 容器吗?
A:可以!请使用:
- cAdvisor(用于容器指标)
- Prometheus Docker Swarm exporter
Q:企业监控的成本是多少?
A:开源方案免费。企业版:
- Nagios XI:约 $1,995/年
- Zabbix Enterprise:约 $1,700/年
- Grafana Cloud:约 $50+/月
参考文档:
Syslog-ng: https://syslog-ng.github.io/
Rsyslogd: https://www.rsyslog.com/doc/index.html
结论
监控和日志记录对于维护 Ubuntu Server 的健康状况和性能至关重要。通过使用 rsyslog 或 syslog-ng设置集中式日志记录、将日志转发到远程服务器,并与 Nagios、Zabbix 和 Prometheus 等平台集成,您可以深入了解基础设施并确保平稳运行。
敬请期待: Ubuntu 服务器审计与合规最佳实践
有效的系统监控只是维护安全合规服务器环境的一部分。在下一篇文章中,我们将深入探讨 审计与合规最佳实践 (适用于 Ubuntu Server),涵盖 PCI-DSS 和 GDPR 等合规标准概述、使用 auditctl配置审计规则,以及生成审计报告以识别可疑活动等主题。不要错过!
3 thoughts on “11. Centralized Logging for ubuntu server: a must read guide”