跳转至

系统日志 syslog-ng 服务

系统日志服务比较常见的有三种:syslog、rsyslog、和syslog-ng

syslog:系统日志 - 维基百科 (wikipedia.org) 诞生于1980年

rsyslog:Rsyslog - 维基百科 (wikipedia.org) 项目始于 2004 年

syslog-ng:syslog-ng - 维基百科 (wikipedia.org) 项目始于1998年

[root@VM-0-16-centos ~]# rpm -ql syslog-ng
/etc/logrotate.d/syslog
/etc/syslog-ng
/etc/syslog-ng/conf.d
/etc/syslog-ng/patterndb.d
/etc/syslog-ng/scl.conf
/etc/syslog-ng/syslog-ng.conf
/usr/bin/loggen
/usr/bin/pdbtool
/usr/bin/update-patterndb
/usr/lib/systemd/system/syslog-ng.service
/usr/lib64/libsyslog-ng-3.5.6.so
/usr/lib64/syslog-ng/libaffile.so
/usr/lib64/syslog-ng/libafprog.so
/usr/lib64/syslog-ng/libafsocket-notls.so
/usr/lib64/syslog-ng/libafsocket-tls.so
/usr/lib64/syslog-ng/libafsocket.so
/usr/lib64/syslog-ng/libafstomp.so
/usr/lib64/syslog-ng/libafuser.so
/usr/lib64/syslog-ng/libbasicfuncs.so
/usr/lib64/syslog-ng/libconfgen.so
/usr/lib64/syslog-ng/libcryptofuncs.so
/usr/lib64/syslog-ng/libcsvparser.so
/usr/lib64/syslog-ng/libdbparser.so
/usr/lib64/syslog-ng/liblinux-kmsg-format.so
/usr/lib64/syslog-ng/libsyslogformat.so
/usr/lib64/syslog-ng/libsystem-source.so
/usr/sbin/syslog-ng
/usr/sbin/syslog-ng-ctl
/usr/share/doc/syslog-ng-3.5.6
/usr/share/doc/syslog-ng-3.5.6/AUTHORS
/usr/share/doc/syslog-ng-3.5.6/COPYING
/usr/share/doc/syslog-ng-3.5.6/NEWS
/usr/share/doc/syslog-ng-3.5.6/bof-2002-09-27.txt
/usr/share/doc/syslog-ng-3.5.6/dos-2000-11-22.txt
/usr/share/doc/syslog-ng-3.5.6/relogger.pl
/usr/share/doc/syslog-ng-3.5.6/syslog-ng.conf.doc
/usr/share/doc/syslog-ng-3.5.6/syslog2ng
/usr/share/man/man1/loggen.1.gz
/usr/share/man/man1/pdbtool.1.gz
/usr/share/man/man1/syslog-ng-ctl.1.gz
/usr/share/man/man5/syslog-ng.conf.5.gz
/usr/share/man/man8/syslog-ng.8.gz
/usr/share/syslog-ng
/usr/share/syslog-ng/include
/usr/share/syslog-ng/include/scl
/usr/share/syslog-ng/include/scl/pacct
/usr/share/syslog-ng/include/scl/pacct/plugin.conf
/usr/share/syslog-ng/include/scl/rewrite
/usr/share/syslog-ng/include/scl/rewrite/cc-mask.conf
/usr/share/syslog-ng/include/scl/syslogconf
/usr/share/syslog-ng/include/scl/syslogconf/README
/usr/share/syslog-ng/include/scl/syslogconf/convert-syslogconf.awk
/usr/share/syslog-ng/include/scl/syslogconf/plugin.conf
/usr/share/syslog-ng/include/scl/system
/usr/share/syslog-ng/include/scl/system/plugin.conf
/usr/share/syslog-ng/syslog-ng.vim
/usr/share/syslog-ng/xsd
/usr/share/syslog-ng/xsd/patterndb-1.xsd
/usr/share/syslog-ng/xsd/patterndb-2.xsd
/usr/share/syslog-ng/xsd/patterndb-3.xsd
/usr/share/syslog-ng/xsd/patterndb-4.xsd
/usr/share/vim
/usr/share/vim/vim73
/usr/share/vim/vim73/syntax
/usr/share/vim/vim73/syntax/syslog-ng.vim
/var/lib/syslog-ng

syslog-ng 命令


名称
       syslog-ng - syslog-ng 系统记录器应用程序

简介
       syslog-ng [options]

描述
       本手册页仅为摘要;有关syslog ng的完整文档,请参阅《syslog ng开放源代码版管理员指南》[1] 或 syslog ng官方网站[2]。

       syslog ng OSE应用程序是一个灵活且高度可扩展的系统日志应用程序。通常,syslog ng用于管理日志消息并实现集中式日志记录,其目的是在单个中央日志服务器上收集多个设备的日志消息。不同的设备(称为syslog ng客户端)都运行syslog ng,并从各种应用程序、文件和其他来源收集日志消息。客户端将所有重要的日志消息发送到远程syslog ng服务器,服务器在那里对它们进行排序和存储。

选项
       --cfgfile <file> or -f <file>
           使用指定的配置文件。

       --chroot <dir> or -C <dir>
           将根目录更改为指定的目录。配置文件是在chroot之后读取的,因此配置文件必须在chroot中可用。通过这种方式,还可以在记录之后重新加载syslog-ng配置。但是,请注意,--user和--group选项是在记录之前解析的。

       --debug or -d
           在调试模式下启动syslog ng。

       --default-modules
           自动加载的模块的逗号分隔列表。未自动加载的模块可以通过在syslog ng OSE配置文件中包含@module<modulename>语句来加载。默认情况下加载以下模块:affile、afprog、afsocket、afuser、basicfuncs、csvparser、dbparser、syslogformat、afsql。仅在syslog ng Open Source Edition 3.3及更高版本中提供。

       --enable-core
           启用syslog ng在崩溃时写入核心文件,以帮助支持和调试。

       --fd-limit <number>
           设置所需文件描述符(fd-s)的最小数量;这设置了syslog ng可以同时打开的文件数。默认值:4096。请注意,这不会覆盖主机的全局ulimit设置。

       --foreground or -F
           不要进行后台处理,在前台运行。

       --group <group> or -g <group>
           初始化配置文件后切换到指定的组。

       --help or -h
           打印帮助信息

       --module-registry
           显示可用模块的列表和说明。请注意,并不是所有这些模块都是自动加载的,只有在--default modules选项中指定的模块。仅在syslog ng Open Source Edition 3.3及更高版本中提供。

       --no-caps
           在没有功能支持的情况下,以root身份运行syslog ng。这是默认行为。在Linux上,如果syslog ng是在启用--enable-Linux-caps选项的情况下编译的,则可以以非root身份运行syslog ng并提供功能支持。(执行syslog ng--version以显示已启用的生成参数列表。)

       --persist-file <persist-file> or -R <persist-file>
           设置存储持久选项和数据的syslog-ng.persistent文件的路径和名称。

       --pidfile <pidfile> or -p <pidfile>
           设置存储主进程PID的PID文件的路径。

       --preprocess-into <output-file>
           处理完配置文件并解析了包含的文件和变量后,将生成的配置写入指定的输出文件。仅在syslog ng Open Source Edition 3.3及更高版本中提供。

       --process-mode <mode>
           设置如何在前台(主要用于调试)、后台作为后台进程或安全后台模式下运行syslog ng。默认情况下,syslog ng在安全后台模式下运行。此模式创建一个名为supervisoring syslog ng的主管进程,如果系统日志ng崩溃,该进程将重新启动。

       --stderr or -e
           将syslog ng的内部消息记录到stderr。主要与--foreground选项一起用于调试目的。如果未指定,syslog ng将把此类消息记录到其内部源。

       --syntax-only or -s
          验证配置文件的语法是否正确,然后退出。

       --user <user> or -u <user>
           在初始化配置文件(以及可选的chrooting)后切换到指定的用户。请注意,如果指定的用户没有创建/dev/log文件的权限,则不可能重新加载syslog ng配置。

       --verbose or -v
           启用用于排除syslog ng故障的详细日志记录。

       --version or -V
           显示版本号和编译信息,以及可用模块的列表和简短描述。有关可用模块的详细描述,请参阅--module注册表选项。请注意,并不是所有这些模块都是自动加载的,只有在--default modules选项中指定的模块。

       --worker-threads
           设置syslog ng OSE可以使用的辅助线程数,包括主syslog ng OS E线程。请注意,syslog ng OSE中的某些操作可以使用不受此选项限制的线程。只有当syslog ng OSE在多线程模式下运行时,此设置才有效。仅在syslog ng Open Source Edition 3.3及更高版本中提供。有关详细信息,请参阅syslog ng Open Source Edition 3.3管理员指南。



其他
       syslog-ng.conf(5)

       syslog ng OSE 3.3管理员指南[1]

       如果您在使用syslog ng时遇到任何问题或需要帮助,请访问syslog ng wiki[3]或syslog ng邮件列表[4]。

       有关syslog ng的新闻和通知,请访问syslog ng Insider博客[5]。

作者
      本手册页由BalaBit文档团队编写<documentation@balabit.com>。

版权

       作者根据GNU通用公共许可证第2版或更新版本(GPL v2+)的条款,授予复制、分发和/或修改本手册页面的权限。

后记
        1. 《syslog ng开放源代码版管理员指南》
           http://www.balabit.com/support/documentation/

        2. syslog ng官方网站
           http://www.balabit.com/network-security/syslog-ng/

        3. 访问 syslog-ng wiki
           http://www.balabit.com/wiki/syslog-ng-faq

        4. syslog-ng 邮件列表
           https://lists.balabit.hu/mailman/listinfo/syslog-ng

        5. syslog-ng  内部博客
           http://insider.blogs.balabit.com

配置文件 syslog-ng.conf

SYSLOG-NG.CONF(5)               The syslog-ng.conf 手册页               SYSLOG-NG.CONF(5)


名字
       syslog-ng.conf - syslog-ng应用程序 配置文件

简介
       syslog-ng.conf

DESCRIPTION
       本手册页仅为摘要;有关syslog ng的完整文档,请参阅《syslog ng开放源代码版管理员指南》[1]或syslog ng官方网站[2]。syslog ng OSE应用程序是一个灵活且高度可扩展的系统日志应用程序。通常,syslog ng用于管理日志消息并实现集中式日志记录,其目的是在单个中央日志服务器上收集多个设备的日志消息。不同的设备(称为syslog ng客户端)都运行syslog ng,并从各种应用程序、文件和其他来源收集日志消息。客户端将所有重要的日志消息发送到远程syslog ng服务器,服务器在那里对它们进行排序和存储。syslog ng应用程序读取传入消息并将其转发到选定的目的地。syslog ng应用程序可以接收来自文件、远程主机和其他来源的消息。日志消息在一个定义的源中输入syslog ng,并发送到一个或多个目的地。来源和目的地是独立的对象;日志路径定义syslogng对消息的处理方式,将源连接到目标。日志路径由一个或多个源和一个或更多个目的地组成;从源到达的消息被发送到日志路径中列出的每个目的地。在syslog ng中定义的日志路径称为日志语句。可选地,日志路径可以包括筛选器。过滤器是只选择某些消息的规则,例如,只选择特定应用程序发送的消息。如果日志路径包含筛选器,则syslog ng只将满足筛选器规则的消息发送到日志路径中设置的目的地。

配置 SYSLOG-NG
        配置文件的主体由对象定义组成:源、目的地、日志路径定义接收的日志消息以及发送的位置。syslog ng配置文件中使用的所有标识符、选项名称和属性以及任何其他字符串都区分大小写。在另一个语句中引用对象之前,必须先定义对象。对象定义(也称为语句)具有以下语法:

               object_type object_id {<options>};

·对象的类型: 源, 目的地, 日志, 滤波器, 解析器, 重写规则, 或者 模板.

·object_id: 标识对象的唯一名称。使用保留字作为标识符时,请将标识符用引号括起来。

               提示:使用与他们识别的对象类型相关的标识符。例如,用s_作为源对象的前缀,用d_作为目的地的前缀,依此类推。

·Parameters: 对象的参数,用大括号{parameters}括起来。

·Semicolon: 对象定义以分号(;)结尾。

           例如,下面的行定义了一个源,并将其称为s_internal。

               source s_internal { internal(); };

           稍后可以使用对象的ID在其他语句中引用该对象,例如,以前的源用作以下日志语句的参数:

               log { source(s_internal); destination(d_file); };

 ·语句中的参数和选项类似于C编程语言的函数调用:选项的名称后面跟着一个参数列表,参数列表括在括号内,并以分号结束。

              option(parameter1, parameter2); option2(parameter1, parameter2);

              例如,以下源语句有三个选项;前两个选项(file()和follow_freq())只有一个参数,而第三个选项(flags())有两个参数:
                            source s_tail { file("/var/log/apache/access.log"  follow_freq(1) flags(no-parse, validate-utf8)); };

              对象可能具有必需参数和可选参数。必需的参数是位置参数,这意味着必须按照定义的顺序指定这些参数。可以使用选项(值)格式以任何顺序指定可选参数。如果未指定参数(可选或必需),则使用其默认值。参数及其默认值列在特定对象的参照部分中。

              示例1。使用必需和可选参数unix-stream()源驱动程序有一个必需的参数:要侦听的套接字的名称。可选参数以任何顺序跟随套接字名称,因此以下源定义具有相同的效果:

               source s_demo_stream1 {unix-stream("/dev/log" max-connections(10) group(log)); };
               source s_demo_stream2 {unix-stream("/dev/log" group(log) max-connections(10)); };

·有些选项是全局选项,或者可以全局设置,例如,syslog ng OSE是否应该使用DNS解析来解析IP地址。全局选项详见???。

               options { use_dns(no); };

·syslog ng配置文件中使用的所有标识符、属性和任何其他字符串都区分大小写。

·对象可以在定义之前使用。

·要在配置文件中添加注释,请以#开头一行,然后写下您的注释。syslog ng将忽略这些行。

# 注释: 这是一个流源
source s_demo_stream {unix-stream("/dev/log" max-connections(10) group(log)); };

日志语句的语法如下:

           log {
               source(s1); source(s2); ...
               optional_element(filter1|parser1|rewrite1); optional_element(filter2|parser2|rewrite2);...
               destination(d1); destination(d2); ...
               flags(flag1[, flag2...]);
               };

下面的log语句将所有到达本地主机的消息发送到远程服务器。

           source s_localhost { tcp(ip(127.0.0.1) port(1999) ); };
           destination d_tcp { tcp("10.1.2.3" port(1999); localport(999)); };
           log { source(s_localhost); destination(d_tcp); };

syslog-ng应用程序有许多全局选项来管理DNS使用、使用的时间戳格式以及其他常规点。每个选项可能都有参数,类似于驱动程序规范。要设置全局选项,请使用以下语法将选项语句添加到syslog ng配置文件中:

options { option1(params); option2(params); ... };

下面列出了syslog ng中可用的源、目标和筛选器。有关详细信息,请参阅《syslog ng管理员指南》[1]。

       -       .sp
       表1。syslog ng中可用的源驱动程序
       ┌────────────────────────────┬────────────────────────────────────────────────────┐
       │名字                         │ 描述                                               │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │internal()                  │ 在syslog ng中内部生成的消息。                         │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │file()                      │ 打开指定的文件并读取消息。                             │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │pipe(), fifo                │ 打开指定的命名管道并读取消息。                          │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │pacct()                     │  从Linux上的进程记帐日志中读取消息                     │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │program()                   │ 打开指定的应用程序并从其标准输出中读取消息。              │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │sun-stream(), sun-streams() │在Solaris系统上打开指定的STREAMS设备并读取传入消息。      │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │syslog()                    │ 使用新的IETF标准syslog协议侦听传入消息。                |
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │system()                    │ 自动检测syslog ng OSE在哪个平台上运行,并收集该平台的本机日志消息。│
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │tcp(), tcp6()               │ 分别通过IPv4和IPv6网络使用BSD syslog协议在指定的TCP端口上侦听传入消息。│
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │udp(), udp6()               │ 分别通过IPv4和IPv6网络使用BSD syslog协议在指定的UDP端口上侦听传入消息。│
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │unix-dgram()                │ 以SOCK_DGRAM模式打开指定的unix套接字并侦听传入消息。     │
       ├────────────────────────────┼────────────────────────────────────────────────────┤
       │unix-stream()               │ 以SOCK_STREAM模式打开指定的unix套接字并侦听传入消息。    │
       └────────────────────────────┴────────────────────────────────────────────────────┘

       表 2. syslog ng中可用的目标驱动程序
       ┌─────────────────┬────────────────────────────────────────────────────┐
       │名字                         │ 描述                                    │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │file()           │ 将消息写入指定的文件。                                 │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │fifo(), pipe()   │ 将消息写入指定的命名管道。                             │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │program()        │  分叉并启动指定的程序,并向其标准输入发送消息。            │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │sql()            │ 将消息发送到SQL数据库。除了标准的syslog ng包之外,sql()目标还需要安装特定于数据库的包。请参阅??中适用于您的平台的部分???。                                                │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │syslog()         │ 使用IETF系统日志协议将消息发送到指定的远程主机。IETF标准支持使用UDP、TCP和TLS网络协议的消息传输。                                                                           │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │tcp() and tcp6() │ 分别通过IPv4和IPv6使用BSD syslog协议将消息发送到远程主机的指定TCP端口。│
       ├─────────────────┼────────────────────────────────────────────────────┤
       │udp() and udp6() │ 分别通过IPv4和IPv6使用BSD syslog协议将消息发送到远程主机的指定UDP端口。│
       ├─────────────────┼────────────────────────────────────────────────────┤
       │unix-dgram()     │ 以SOCK_DGRAM样式(BSD)将消息发送到指定的unix套接字。    |
       ├─────────────────┼────────────────────────────────────────────────────┤
       │unix-stream()    │ 以SOCK_STREAM样式(Linux)将消息发送到指定的unix套接字。 │
       ├─────────────────┼────────────────────────────────────────────────────┤
       │usertty()        │ 如果指定用户已登录,则向该用户的终端发送消息。             │
       └─────────────────┴────────────────────────────────────────────────────┘

       Table 3. syslog ng OSE中可用的筛选函数 
       ┌──────────────────────┬───────────────────────────────────────────────────┐
       │Name                  │ Description                                       │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │facility()            │ 根据发送功能筛选邮件。                                │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │filter()              │ 调用另一个筛选器函数。                                │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │host()                │ 根据发送主机筛选邮件。                                │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │level() or priority() │ 根据邮件的优先级筛选邮件。                             │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │match()               │ 使用正则表达式可以根据指定的标头或内容字段筛选消息。       │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │message()             │ 使用正则表达式根据邮件内容筛选邮件。                    │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │netmask()             │ 根据发送主机的IP地址筛选邮件。                         │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │program()             │ 根据发送应用程序筛选邮件。                            │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │source()              │ 选择指定syslog ng OSE源语句的消息。                   │
       ├──────────────────────┼───────────────────────────────────────────────────┤
       │tags()                │ 选择具有指定标记的邮件。                              │
       └──────────────────────┴───────────────────────────────────────────────────┘

文件
       /home/algernon/install/syslog-ng/3.5/

       /home/algernon/install/syslog-ng/3.5/etc/syslog-ng.conf

SEE ALSO
       syslog-ng(8)

       The syslog-ng OSE 3.3 Administrator Guide[1]

       如果您在使用syslog ng时遇到任何问题或需要帮助,请访问syslog ng wiki[3]或syslog ng邮件列表[4]。

       有关syslog ng的新闻和通知,请访问syslog ng Insider博客[5]。

作者
       本手册页由BalaBit文档团队编写<documentation@balabit.com>。

COPYRIGHT

       作者根据GNU通用公共许可证第2版或更新版本(GPL v2+)的条款,授予复制、分发和/或修改本手册页面的权限。

NOTES
        1. 《syslog ng开放源代码版管理员指南》
           http://www.balabit.com/support/documentation/

        2. syslog ng官方网站
           http://www.balabit.com/network-security/syslog-ng/

        3. 访问syslog ng wiki
           http://www.balabit.com/wiki/syslog-ng-faq

        4. syslog ng邮件列表
           https://lists.balabit.hu/mailman/listinfo/syslog-ng

        5. syslog ng内幕博客
           http://insider.blogs.balabit.com



syslog-ng Open Source Edition                                          02/26/2014                                                     SYSLOG-NG.CONF(5)