監控和日誌記錄是管理和維護 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”