如何使用 syslog-ng 从远程 Linux 机器上收集日志
创始人
2024-03-01 22:05:23
0

如果你的数据中心全是 Linux 服务器,而你就是系统管理员。那么你的其中一项工作内容就是查看服务器的日志文件。但是,如果你在大量的机器上去查看日志文件,那么意味着你需要挨个去登入到机器中来阅读日志文件。如果你管理的机器很多,仅这项工作就可以花费你一天的时间。

另外的选择是,你可以配置一台单独的 Linux 机器去收集这些日志。这将使你的每日工作更加高效。要实现这个目的,有很多的不同系统可供你选择,而 syslog-ng 就是其中之一。

syslog-ng 的不足是文档并不容易梳理。但是,我已经解决了这个问题,我可以通过这种方法马上进行安装和配置 syslog-ng。下面我将在 Ubuntu Server 16.04 上示范这两种方法:

  • UBUNTUSERVERVM 的 IP 地址是 192.168.1.118 ,将配置为日志收集器
  • UBUNTUSERVERVM2 将配置为一个客户端,发送日志文件到收集器

现在我们来开始安装和配置。

安装

安装很简单。为了尽可能容易,我将从标准仓库安装。打开一个终端窗口,运行如下命令:

sudo apt install syslog-ng

你必须在收集器和客户端的机器上都要运行上面的命令。安装完成之后,你将开始配置。

配置收集器

现在,我们开始日志收集器的配置。它的配置文件是 /etc/syslog-ng/syslog-ng.conf。syslog-ng 安装完成时就已经包含了一个配置文件。我们不使用这个默认的配置文件,可以使用 mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.BAK 将这个自带的默认配置文件重命名。现在使用 sudo nano /etc/syslog/syslog-ng.conf 命令创建一个新的配置文件。在这个文件中添加如下的行:

@version: 3.5
@include "scl.conf"
@include "`scl-root`/system/tty10.conf"
    options {
        time-reap(30);
        mark-freq(10);
        keep-hostname(yes);
        };
    source s_local { system(); internal(); };
    source s_network {
        syslog(transport(tcp) port(514));
        };
    destination d_local {
    file("/var/log/syslog-ng/messages_${HOST}"); };
    destination d_logs {
        file(
            "/var/log/syslog-ng/logs.txt"
            owner("root")
            group("root")
            perm(0777)
            ); };
    log { source(s_local); source(s_network); destination(d_logs); };

需要注意的是,syslog-ng 使用 514 端口,你需要确保在你的网络上它可以被访问。

保存并关闭这个文件。上面的配置将转存期望的日志文件(由 system()internal() 指出)到 /var/log/syslog-ng/logs.txt 中。因此,你需要使用如下的命令去创建所需的目录和文件:

sudo mkdir /var/log/syslog-ng
sudo touch /var/log/syslog-ng/logs.txt

使用如下的命令启动和启用 syslog-ng:

sudo systemctl start syslog-ng
sudo systemctl enable syslog-ng

配置客户端

我们将在客户端上做同样的事情(移动默认配置文件并创建新配置文件)。拷贝下列文本到新的客户端配置文件中:

@version: 3.5
@include "scl.conf"
@include "`scl-root`/system/tty10.conf"
source s_local { system(); internal(); };
destination d_syslog_tcp {
              syslog("192.168.1.118" transport("tcp") port(514)); };
log { source(s_local);destination(d_syslog_tcp); };

请注意:请将 IP 地址修改为收集器的 IP 地址。

保存和关闭这个文件。与在配置为收集器的机器上一样的方法启动和启用 syslog-ng。

查看日志文件

回到你的配置为收集器的服务器上,运行这个命令 sudo tail -f /var/log/syslog-ng/logs.txt。你将看到包含了收集器和客户端的日志条目的输出(图 A)。

图 A

恭喜你!syslog-ng 已经正常工作了。你现在可以登入到你的收集器上查看本地机器和远程客户端的日志了。如果你的数据中心有很多 Linux 服务器,在每台服务器上都安装上 syslog-ng 并配置它们作为客户端发送日志到收集器,这样你就不需要登入到每个机器去查看它们的日志了。


via: https://www.techrepublic.com/article/how-to-use-syslog-ng-to-collect-logs-from-remote-linux-machines/

作者:Jack Wallen 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

AI竟会「自己认错」?破解...
新智元报道 编辑:定慧 好困 【新智元导读】 在多智能体AI系统...
2025-06-02 21:12:04
SQL Server跟踪(...
写在前面的话: 该文章内容是参考   https:/...
2025-06-01 15:33:40
Jenkins--邮件通知...
1为啥要配置邮件通知配置邮件通知的目的是为了给用户发送构建结果的状...
2025-05-31 22:24:25
CentOS系统下wc命令...
CentOS中的文本统计利器:命令详解与应用 在CentOS系统的...
2025-05-29 06:11:07
如何在CentOS系统上部...
作为Linux系统中广泛使用的DNS服务软件,BIND(Berke...
2025-05-25 13:47:28
CentOS系统安装Had...
Hadoop在CentOS系统上的安装与配置流程 对于需要处理海量...
2025-04-23 19:47:33

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...