管理 Linux, Windows 等服务器甚至路由器等嵌入式设备时,常常需要查看系统日志、应用日志来确认系统安全情况、确认服务运行状况等。当只有单台服务器需要管理时,我们可以远程登入服务器查看日志,而当有多台服务器需要管理时,一一登入查看日志就显得不便了。因而我们可以考虑采用远程日志记录的方案,来集中化的管理多台服务器的日志。

远程日志记录带来的另一个额外的好处是,即使服务器宕机、损坏等,由于日志同时记录在远程服务器上,我们不会丢失已记录的日志。集中化的日志管理,也使得对日志的分析、备份等操作变得更为简便。

本文介绍了利用 Papertrail 所提供的日志管理记录服务来远程记录日志的一些配置细节。

通过我的邀请码 2b4b27 注册可以额外获得持续一年每月 50MB 的额外日志记录容量。

Papertrail 日志查看界面

首先,我们需要进入 Papertrail 网站,注册账号。注册完成后,我们会得到远程日志记录服务器的域名和端口号,会在随后的配置中用到。

确认系统所采用的日志系统

执行以下命令:

ls -d /etc/*syslog*
  • 如果有列出 rsyslog.conf,那么系统采用 rsyslog 进行日志记录管理;
  • 如果有列出 syslog-ng.conf,那么系统采用 syslog-ng 进行日志记录管理;
  • 如果有列出 syslog.conf,那么系统采用 syslog 进行日志记录管理;
  • 如果都没有,且系统存在 systemctl, journalctl 等命令,那么系统采用 systemd-journald 进行日志记录,journalctl 进行日志管理。

配置日志系统进行远程日志记录

根据系统所采用的日志系统,进行相对应的配置。

配置使用 rsyslog 的系统

对于使用 rsyslog 的系统,编辑 /etc/rsyslog.conf 文件,在文件最后添加如下内容:

*.*          @<host>.papertrailapp.com:<port>

注意将上文中的 <host> 以及 <port> 换为实际的内容。

随后,重启服务即可:

sudo service rsyslog restart

配置使用 systemd 的系统

对于使用 systemd 的系统,我们可以建立一个 systemd 的服务来将日志转发到远程服务器。

转发日志时需要使用 ncat 命令或 socat 命令,两者选其一即可。

1. 使用 ncat

ncat 命令包含在 nmap 包中,我们可以执行以下命令来安装:

# Arch Linux
sudo pacman -S nmap --noconfirm
# CentOS / Fedora
sudo yum install nmap -y
# Debian / Ubuntu
sudo apt-get install nmap -y

2. 使用 socat

socat 命令包含在 socat 包中,我们可以执行以下命令来安装:

# Arch Linux
sudo pacman -S socat --noconfirm
# CentOS / Fedora
sudo yum install socat -y
# Debian / Ubuntu
sudo apt-get install socat -y

使用 socat 命令通过 SSL 连接 Papertrail 的服务时,还需要验证本地保存的服务器的证书,因此要预先下载保存:

cd /etc
sudo curl -O https://papertrailapp.com/tools/papertrail-bundle.pem

随后新建 /etc/systemd/system/papertrail.service 服务文件,内容如下:

[Unit]
Description=Papertrail
After=systemd-journald.service
Requires=systemd-journald.service

[Service]
# 如使用 ncat 则移除下一行行首的 #
#ExecStart=/bin/sh -c "journalctl -f | ncat --ssl <host>.papertrailapp.com <port>"
# 如使用 socat 则移除下一行行首的 #
#ExecStart=/bin/sh -c "journalctl -f | socat - SSL:<host>.papertrailapp.com:<port>,cafile=/etc/papertrail-bundle.pem"
TimeoutStartSec=0
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

注意将上文中的 <host> 以及 <port> 换为实际的内容。

创建完服务文件以后,执行以下命令启动服务并设置开机自启:

sudo systemctl start papertrail
sudo systemctl enable papertrail

完成后,可以执行以下命令确认服务正常启动:

journalctl -f -u papertrail

参考:Configuring centralized logging from systemd · Papertrail log management