如何轻松实现高效监控与安全地传输Ubuntu系统日志?

更新于
2026-08-13 17:10:20
5阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

在日常运维中,日志是程序健康与安全的第一道防线。只是很多管理员面临以下痛点:

  • 日志量庞大,手动逐文件查看耗时且易遗漏关键事件;
  • 多台服务器或网络设备的日志分散存放难以实现统一监控;
  • 通过明文方式远程传输日志,存在被窃听或篡改的风险;
  • 缺少自动化报警机制,导致安全事件发现延迟。

" src="/img02/797912025,4141015894&fm=253&app=138&f=jpg"/>

主要思路概览

1️⃣ 使用 journalctl 结合 Cron 实现实时本地监控 2️⃣ 通过 Logwatch/auditd/top/htop/iotop 等工具补充程序资源和安全审计 3️⃣ 采用 rsyslog、syslog‑ng、Fluentd、Logstash、Filebeat 等成熟方案。实现加密远程传输 4️⃣ 配置 TLS/mTLS、SSH 密钥等链路加密和双向认证 5️⃣ 按需组合上述工具,建立适合“多源统一监控 + 高可用安全传输”的完整程序。

实时本地日志监控方案

journalctl + Cron 作业实现持续监控

*/5 * * * * root /usr/bin/journalctl -u ssh -n 100>> /var/log/ssh_monitor.log

Cron 每五分钟抓取最新的 SSH 日志并写入自定义文件。实现“无需手动 tail,只要打开文件即能看到最新条目"。

-f实时追踪所有日志

$ journalctl -f

- 持续输出最新日志条目,按 q 退出。配合 | grep … 可实现关键字过滤,解决“关键告警淹没在海量信息中"的问题。

L​ogwatch – 自动生成程序报告

L​ogwatch 能每日汇总 CPU、内存、磁盘 I/O、认证失败等信息,并生成易读报告。至于典型用法,

如何轻松实现高效监控与安全地传输Ubuntu系统日志?
$ sudo logwatch --detail High --mailto --range yesterday

auditd – 审计关键操作

auditd 能记录文件访问、使用者登录等敏感事件。配置示例这方面,

# /etc/audit/rules.d/custom.rules
-w /etc/passwd -p wa -k passwd_changes
-w /var/log/auth.log -p wa -k auth_changes

安全远程传输方案

rsyslog – 基础加密传输

SEND SIDE:

# /etc/rsyslog.d/99-tls.conf
module
module
module # 推荐使用 RELP 保证可靠性
action(type="omrelp" target="logserver.example.com" port="6514"
tls.tls_cert="/etc/ssl/certs/client.crt"
tls.tls_key="/etc/ssl/private/client.key"
tls.tls_ca_cert="/etc/ssl/certs/ca.pem")
*.* :omrelp:

SERV SIDE:

# /etc/rsyslog.d/99-relp-tls.conf
module
input(type="imrelp" port="6514"
tls.tls_cert="/etc/ssl/certs/server.crt"
tls.tls_key="/etc/ssl/private/server.key"
tls.tls_ca_cert="/etc/ssl/certs/ca.pem"
tls.permittedpeer="client.example.com")
*.* /var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log

- 使用 TLS 加密并开启双向认证。确保只有受信任的客户端能够写入日志。

/etc/syslog-ng/conf.d/remote.conf 示例:

@version: 3.5
source s_local { system;internal,};destination d_remote {
tcp
tls)
peer-verify);},filter f_auth { facility;},log { source;filter,老实说,destination;},log { source;destination,};说起来,

L​ogstash / Fluentd – 灵活 ETL 与多协议输出

L​ogstash 输入插件示例:

{
"input": {
"beats": { "port": 5044 }
},"filter": {
"grok"这方面。
{ "match": { "message": "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{DATA:program}: %{GREEDYDATA:msg}" } }
},"output": {
"elasticsearch": { "hosts":,"ssl_certificate_verification" => true }
}
}

- 将 Ubuntu 本地 Syslog 或 Filebeat 数据统一送往 Elasticsearch/Kibana,实现可视化告警。

/etc/filebeat/filebeat.yml 精简片段:

# Enable TLS for output
output.logstash:
从hosts来看,ssl.certificate_authorities:
ssl.certificate: "/etc/pki/tls/certs/filebeat.crt"
ssl.key: "/etc/pki/tls/private/filebeat.key"
# Optional mutual auntication
ssl.verification_mode: full
# Define which logs to ship
filebeat.inputs:
- type: log
说到paths,- /var/log/*.log
- /var/log/auth.log
- /var/log/kern.log
processor:
add_host_metadata: ~
add_cloud_metadata: ~
setup.kibana:
从host来看。"https://kibana.example.com:5601"
setup.dashboards.enabled: true
setup.template.settings:
index.number_of_shards: 1
setup.ilm.enabled: false # 根据需求自行开启 ILM
# Restart service after edit:
# sudo systemctl restart filebeat

多源统一监控与关联分析

SYSTEM 工具箱:top、htop、iotop、netstat

- top / htop: 实时查看 CPU、内存使用 - I/Otop: 磁盘 IO 热点定位 - Netsat -tulnp: 网络端口监听状态 - 将这些工具输出写入轮询脚本,每分钟生成一次快照并发送至中心日志网站。

Kubernetes‑style 日志关联:时间戳 + PID + 容器 ID

Docker 或 Node.js 应用可在日志中加入进程 ID 与容器 ID,例如:

{"time":"2026-08-11T14:23:45Z"。"pid":1234,"container_id":"abcde12345","msg":"User login failed"}

- 中央网站通过字段关联,可把业务异常直接映射到程序层面的资源争用或审计事件,实现“一键定位”。

实践步骤与排错要点

  • 1️⃣ rsyslog 加密发送与接收检查:
    • - 确认双方证书链完整;使用  验证 TLS 握手;
    • - 查看服务状态:

  • 2️⃣ syslog‑ng 配置语法校验:
    • - 用  提前捕获语法错误;
    • - 检查 SELinux/AppArmor 是否阻止网络端口打开。

  • 3️⃣ Fluentd / Logstash 输入输出匹配:
    • - 确认输入插件监听端口已打开;
    • - 检查过滤器正则是否匹配实际日志格式;
    • - 查看内部缓冲区: .

  • 4️⃣ Filebeat 启动异常处理:
    • - 看日志: ;
    • - 常见错误 “certificate verification failed” 多为 CA 方法错误或证书不匹配;
    • - 确认 Logstash 接收端已启用对应 SSL 配置。

  • 5️⃣ auditd 未记录事件排查:
    • - 验证规则已加载: ;
    • - 检查 auditd 服务状态及硬盘空间;
    • - 如需持久化,请把规则写入 /etc/audit/rules.d/audit.rules.

  • 6️⃣ 日志轮转与存储容量管理:
    • - 使用 logrotate 配置压缩周期:
      /var/log/*.log {
      weekly
      rotate 8
      compress
      missingok
      notifempty
      }
      


    结论 & 行动教程

    * 把 “**实时本地监控**” 与 “**加密远程转发**” 两环紧密结合。即可消除“**手工翻看丢失关键告警**” 的痛点;* 推荐先部署 rsyslog/TLS 做基础加密,再根据业务规模逐步引入 syslog‑ng 或 Fluentd 做高级过滤和负载均衡;* 对于需要细粒度审计的环境。一定开启 auditd 并结合 Filebeat 将审计日志同步至 ELK/Kibana,以实现 **一键追溯**。* 最终用 top/htop/iotop 等轻量工具做资源健康检查。用 Logwatch 定期生成报告,让运维人员在 **根据数据调整** 的前提下快速定位问题。其实,


    这篇文章共计约1600+ 字。适用于从小型单机到公司级多节点的 Ubuntu 环境。如有进一步定制需求,请参考官方文档或联系专业处理团队。

标签:Ubuntu

在日常运维中,日志是程序健康与安全的第一道防线。只是很多管理员面临以下痛点:

  • 日志量庞大,手动逐文件查看耗时且易遗漏关键事件;
  • 多台服务器或网络设备的日志分散存放难以实现统一监控;
  • 通过明文方式远程传输日志,存在被窃听或篡改的风险;
  • 缺少自动化报警机制,导致安全事件发现延迟。

" src="/img02/797912025,4141015894&fm=253&app=138&f=jpg"/>

主要思路概览

1️⃣ 使用 journalctl 结合 Cron 实现实时本地监控 2️⃣ 通过 Logwatch/auditd/top/htop/iotop 等工具补充程序资源和安全审计 3️⃣ 采用 rsyslog、syslog‑ng、Fluentd、Logstash、Filebeat 等成熟方案。实现加密远程传输 4️⃣ 配置 TLS/mTLS、SSH 密钥等链路加密和双向认证 5️⃣ 按需组合上述工具,建立适合“多源统一监控 + 高可用安全传输”的完整程序。

实时本地日志监控方案

journalctl + Cron 作业实现持续监控

*/5 * * * * root /usr/bin/journalctl -u ssh -n 100>> /var/log/ssh_monitor.log

Cron 每五分钟抓取最新的 SSH 日志并写入自定义文件。实现“无需手动 tail,只要打开文件即能看到最新条目"。

-f实时追踪所有日志

$ journalctl -f

- 持续输出最新日志条目,按 q 退出。配合 | grep … 可实现关键字过滤,解决“关键告警淹没在海量信息中"的问题。

L​ogwatch – 自动生成程序报告

L​ogwatch 能每日汇总 CPU、内存、磁盘 I/O、认证失败等信息,并生成易读报告。至于典型用法,

如何轻松实现高效监控与安全地传输Ubuntu系统日志?
$ sudo logwatch --detail High --mailto --range yesterday

auditd – 审计关键操作

auditd 能记录文件访问、使用者登录等敏感事件。配置示例这方面,

# /etc/audit/rules.d/custom.rules
-w /etc/passwd -p wa -k passwd_changes
-w /var/log/auth.log -p wa -k auth_changes

安全远程传输方案

rsyslog – 基础加密传输

SEND SIDE:

# /etc/rsyslog.d/99-tls.conf
module
module
module # 推荐使用 RELP 保证可靠性
action(type="omrelp" target="logserver.example.com" port="6514"
tls.tls_cert="/etc/ssl/certs/client.crt"
tls.tls_key="/etc/ssl/private/client.key"
tls.tls_ca_cert="/etc/ssl/certs/ca.pem")
*.* :omrelp:

SERV SIDE:

# /etc/rsyslog.d/99-relp-tls.conf
module
input(type="imrelp" port="6514"
tls.tls_cert="/etc/ssl/certs/server.crt"
tls.tls_key="/etc/ssl/private/server.key"
tls.tls_ca_cert="/etc/ssl/certs/ca.pem"
tls.permittedpeer="client.example.com")
*.* /var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log

- 使用 TLS 加密并开启双向认证。确保只有受信任的客户端能够写入日志。

/etc/syslog-ng/conf.d/remote.conf 示例:

@version: 3.5
source s_local { system;internal,};destination d_remote {
tcp
tls)
peer-verify);},filter f_auth { facility;},log { source;filter,老实说,destination;},log { source;destination,};说起来,

L​ogstash / Fluentd – 灵活 ETL 与多协议输出

L​ogstash 输入插件示例:

{
"input": {
"beats": { "port": 5044 }
},"filter": {
"grok"这方面。
{ "match": { "message": "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{DATA:program}: %{GREEDYDATA:msg}" } }
},"output": {
"elasticsearch": { "hosts":,"ssl_certificate_verification" => true }
}
}

- 将 Ubuntu 本地 Syslog 或 Filebeat 数据统一送往 Elasticsearch/Kibana,实现可视化告警。

/etc/filebeat/filebeat.yml 精简片段:

# Enable TLS for output
output.logstash:
从hosts来看,ssl.certificate_authorities:
ssl.certificate: "/etc/pki/tls/certs/filebeat.crt"
ssl.key: "/etc/pki/tls/private/filebeat.key"
# Optional mutual auntication
ssl.verification_mode: full
# Define which logs to ship
filebeat.inputs:
- type: log
说到paths,- /var/log/*.log
- /var/log/auth.log
- /var/log/kern.log
processor:
add_host_metadata: ~
add_cloud_metadata: ~
setup.kibana:
从host来看。"https://kibana.example.com:5601"
setup.dashboards.enabled: true
setup.template.settings:
index.number_of_shards: 1
setup.ilm.enabled: false # 根据需求自行开启 ILM
# Restart service after edit:
# sudo systemctl restart filebeat

多源统一监控与关联分析

SYSTEM 工具箱:top、htop、iotop、netstat

- top / htop: 实时查看 CPU、内存使用 - I/Otop: 磁盘 IO 热点定位 - Netsat -tulnp: 网络端口监听状态 - 将这些工具输出写入轮询脚本,每分钟生成一次快照并发送至中心日志网站。

Kubernetes‑style 日志关联:时间戳 + PID + 容器 ID

Docker 或 Node.js 应用可在日志中加入进程 ID 与容器 ID,例如:

{"time":"2026-08-11T14:23:45Z"。"pid":1234,"container_id":"abcde12345","msg":"User login failed"}

- 中央网站通过字段关联,可把业务异常直接映射到程序层面的资源争用或审计事件,实现“一键定位”。

实践步骤与排错要点

  • 1️⃣ rsyslog 加密发送与接收检查:
    • - 确认双方证书链完整;使用  验证 TLS 握手;
    • - 查看服务状态:

  • 2️⃣ syslog‑ng 配置语法校验:
    • - 用  提前捕获语法错误;
    • - 检查 SELinux/AppArmor 是否阻止网络端口打开。

  • 3️⃣ Fluentd / Logstash 输入输出匹配:
    • - 确认输入插件监听端口已打开;
    • - 检查过滤器正则是否匹配实际日志格式;
    • - 查看内部缓冲区: .

  • 4️⃣ Filebeat 启动异常处理:
    • - 看日志: ;
    • - 常见错误 “certificate verification failed” 多为 CA 方法错误或证书不匹配;
    • - 确认 Logstash 接收端已启用对应 SSL 配置。

  • 5️⃣ auditd 未记录事件排查:
    • - 验证规则已加载: ;
    • - 检查 auditd 服务状态及硬盘空间;
    • - 如需持久化,请把规则写入 /etc/audit/rules.d/audit.rules.

  • 6️⃣ 日志轮转与存储容量管理:
    • - 使用 logrotate 配置压缩周期:
      /var/log/*.log {
      weekly
      rotate 8
      compress
      missingok
      notifempty
      }
      


    结论 & 行动教程

    * 把 “**实时本地监控**” 与 “**加密远程转发**” 两环紧密结合。即可消除“**手工翻看丢失关键告警**” 的痛点;* 推荐先部署 rsyslog/TLS 做基础加密,再根据业务规模逐步引入 syslog‑ng 或 Fluentd 做高级过滤和负载均衡;* 对于需要细粒度审计的环境。一定开启 auditd 并结合 Filebeat 将审计日志同步至 ELK/Kibana,以实现 **一键追溯**。* 最终用 top/htop/iotop 等轻量工具做资源健康检查。用 Logwatch 定期生成报告,让运维人员在 **根据数据调整** 的前提下快速定位问题。其实,


    这篇文章共计约1600+ 字。适用于从小型单机到公司级多节点的 Ubuntu 环境。如有进一步定制需求,请参考官方文档或联系专业处理团队。

标签:Ubuntu