Linux系统日志服务syslog

一、概述
syslogd是Linux系统的日志服务守护进程,通过配置文件/etc/syslog.conf可以配置日志等级和要日志被记录的文件。
rsyslog是syslogd的多线程增强版,Gentoo发行版使用syslogd, Ubuntu发行版和Centos 6版本以上发行版均使用rsyslog
syslog-ng 也是syslogd 的一种增强版本。
二、syslog配置文件语法:
1.基本语法说明
#开头的为注释
facility.level action
说明 :facility.[=,!]level为选择条件,消息类型.日志级别,之间用一个小数点"."分隔。action和facility.level之间使用TAB隔开。
=和!为可选,只有点:输出大于等于某等级的日志; .=等于某等级; .!不等于某等级的所有
facility.level可以有多组,直接用分号;隔开
消息类型和日志级别也可以分别有多个,之间用逗号,隔开
如:
*.=debug;auth,authpriv.none;mail.none -/var/log/debug
-表示延迟写入
2.消息类型主要有以下几种:
kern 内核信息,首先通过 klogd 传递;
user 用户进程;
mail 邮件;
daemon 后台进程;
authpriv 授权信息;
syslog 系统日志;
lpr 打印信息;
news 新闻组信息;
uucp 由uucp生成的信息
cron 计划和任务信息。
mark syslog 内部功能用于生成时间戳
local0 - local7 自定义程序使用,例如使用 local5 做为 ssh 功能

  •    通配符代表除了 mark 以外的所有功能
    

3.日志级别主要有以下几种:
emerg 或 panic 该系统不可用(最紧急消息)
alert 需要立即被修改的条件(紧急消息)
crit 阻止某些工具或子系统功能实现的错误条件(重要消息)
err 阻止工具或某些子系统部分功能实现的错误条件(出错消息)
warning 预警信息(警告消息)
notice 具有重要性的普通条件(普通但重要的消息)
info 提供信息的消息(通知性消息)
debug 不包含函数条件或问题的其他信息(调试级-信息量最多)
none 没有重要级,通常用于排错(不记录任何日志消息)

  •            所有级别,除了none
    

4.action 动作域:
动作域支持三类:日志信息可以分别记录到多个文件里,还可以发送到命名管道、其他程序甚至另一台机器。

file                指定文件的绝对路径
terminal 或 print   完全的串行或并行设备标志符
@host(@IP地址)    远程的日志服务器
*                   所有用户,如:*.emery    *
|/dev/console       通过管道发送到控制台

5.常用日志文件说明:
/var/log/lastlog : 记录每个使用者最近签入系统的时间
/var/run/utmp : 记录每个使用者签入系统的时间, who, users, finger 等指令会查这个档案.
/var/log/wtmp : 记录每个使用者签入及签出的时间, last 这个指令会查这个档案. 这个档案也记录 shutdown 及 reboot 的动作.
/var/log/secure : 登录系统的信息
/var/log/maillog : 记录 sendmail 及 pop 等相关讯息.
/var/log/cron : 记录 crontab 的相关讯息 ,定时器的信息
/var/log/dmesg : /bin/dmesg 会将这个档案显示出来, 它是开机时的画面讯息.
/var/log/xferlog : 记录那些位址来 ftp 拿取那些档案.
/var/log/messages : 系统大部份的讯息皆记录在此, 包括 login, check password , failed login, ftp, su 等.
系统产生的日志文件/var/log/messages, /var/log/syslog, /var/log/kernel, 其中内容多有重复。
系统产生的日志中这3个文件最大,占用存储空间较多。Ubuntu16.04版本中只打开了syslog和kernel;红帽发行版中关闭了syslog,打开了messages;
我们平时常用的是messages,可以关闭/var/log/syslog系统日志。
关闭方法:
修改syslogd的主配置文件/etc/syslog.conf,注释掉其中的
.;auth,authpriv.none -/var/log/syslog
三、rsyslog配置文件语法
1.配置文件结构
配置文件/etc/rsyslog.conf大概分为三个部分:
####MODULES####

这个部分是针对接收配置的,主要是指定接收日志的协议和端口。若要配置日志服务器,则需要将相应的配置项去掉注释。

####GLOBAL DIRECTIVES####

这个部分主要用来配置模板,模板的作用是指定你希望在日志文件中保存的日志格式。

RULES

这一部分是规则文件,每行配置分两个字段,第一字段是说明要记录哪类日志(包括消息类型和等级),第二字段是说明日志存放位置(action),可以是本地文件,也可以是远程服务器。
filter action
rsyslog发现符合 filter 规则的日志后,会将日志发送到 action 指定的动作进行处理。

1> Filter
在rsyslog中,提供了三种方式的过滤器方法:
(1) 基于设施/优先级的过滤器(Facility/Priority-based filters)
这部分同syslog配置文件
(2) 基于属性的过滤器
语法:
:PROPERTY, [!]COMPARE_OPERATION, “STRING”
:PROPERTY是要比较的日志属性,COMPARE_OPERATION为要执行的比较操作,这个的!表示取反的意思,"STRING"为比较的值。

可以使用的比较操作有:
比较操作 描述
contains 匹配提供的字符串值是否是属性的一部分,如果不区分大小写,使用contains_i
isequal 比较属性和值是否相等
startswith 属性是否以指定字符串开始(startswith_i)
regex 正则表达式(POSIX BRE 基本正则)匹配
ereregex 正则表达式(POSIX ERE 扩展正则)匹配
isempty 判断属性是否为空,不需要 value

使用范例:
:msg, contains, “error”
:hostname, isequal, “host1”
:msg, !regex, “fatal .* error”
(3) 基于表达式的过滤器
基于表达式的过滤器使用了rsyslog自定义的脚本语言RainerScript构建复杂的filter,这里暂时不对这种方法进行讲述。

2> Action
Action定义了当匹配指定的 filter 的时候,执行什么操作。
如果要指定多个 ACTION, 使用&连接多个 ACTION。
例如:
kern.=crit user1
& @192.168.0.1

local3.* ^/tmp/a.sh # ^号后跟可执行脚本或程序的绝对路径

在 ACTION 后面追加;模板名称可以为指定的 action 使用该模板格式化日志。

kern.=crit user1
& ^test-program;temp
这里的;temp指定了传递日志给 test-program 程序时(^开头表明日志发送给该可执行文件), 使用它 temp 模板格式化日志。

(1)保存日志到日志文件
语法:
FILTER PATH
这里的PATH指定了日志要保存到的文件。
例如cron.* /var/log/cron.log指定了所有的定时任务日志都写入到/var/log/cron.log文件。
默认情况下,每次生成 syslog 的时候,日志信息会同步到日志文件。可以在文件路径前使用-指定忽略同步(如果系统崩溃,会丢失日志,但是这样可以提高日志性能)。

(2)动态生成日志文件。
上述方法记录日志可认为是"静态"的;可以通过,模板配置生成特定的文件名(如带有时间戳)
模板可以用来生成动态文件名,在使用动态文件名的时候,需要在 ACTION 中的模板名称前增加?表明该文件名是动态生成的。
例如:
$template DynamicFile,“/var/log/test_logs/%timegenerated%-test.log” # 预定义模板
FILTER ?DynamicFile # 使用模板
DynamicFile是预定义的输出路径模板; timegenerated属性从日志信息中提取出消息的时间戳,这样可以为每个日志生成唯一文件名称。

(3)通过网络发送syslog
rsyslog可以使用网络将日志消息发送或者接受日志,使用这个特性,可以实现使用单一的日志服务器统一管理多台服务器日志。
@[(zNUMBER)]HOST:[PORT]
这里的@告诉syslog使用UDP协议发送日志,要使用TCP的话,使用@@。可选值zNUMBER设置了是否允许使用zlib对日志压缩(压缩级别1-9)。

使用范例

*.* @192.168.0.1        # 使用 UDP 发送,默认端口514
*.* @@example.com:18    # 使用 TCP 发送到端口18, 默认10514
*.* @(z9)[2001:db8::1]  # UDP, ipv6,使用zlib级别9压缩

(4)丢弃日志
要丢弃日志消息,使用~动作。
FILTER ~
例如:
cron.* ~

2.其他语法
1>模板
任何rsyslog生成的日志都可以根据需要使用模板进行格式化,要创建模板,使用如下指令
t e m p l a t e T E M P L A T E N A M E , " t e x t 解释: template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION] 解释: templateTEMPLATENAME,"text解释:template指令表明了接下来的内容定义了一个模板,TEMPLATE_NAME是模板的名称,接下来双引号之间的内容为模板的内容。
可选选项 OPTION 指定了模板的功能,支持选项为sql和stdsql,在使用数据库存储的时候会用到。
2>全局指令
全局指令是rsyslogd守护进程的配置指令。
所有的全局指令必须以$开始,每行只能有一个指令,例如:
$MainMsgQueueSize 50000
在新的配置格式中(rsyslog v6),已经不在使用这种方式的指令,但是它们仍然是可用的。

四、syslog日志服务的使用
1.C接口
syslog(LOG_USER | LOG_INFO, “syslog test message generated in program %s \n”, argv[0]);
2.shell命令接口
logger -p kern.info “it will add to messages file”
五、syslogd
注意:busybox中的syslogd可能自带转储功能,所以不需要logrotate关心,该转储功能是由syslogd自身实现的

root@Austin:~# fuser /var/log/messages
145
root@Austin:~# ps | grep 145
  145 root      0:08 /sbin/syslogd -n
root@Austin:~# syslogd --help
BusyBox v1.35.0 (2023-10-11 16:26:24 CST) multi-call binary.
Usage: syslogd [OPTIONS]
System logging utility
(this version of syslogd ignores /etc/syslog.conf)
        -n              Run in foreground
        -R HOST[:PORT]  Log to HOST:PORT (default PORT:514)
        -L              Log locally and via network (default is network only if -R)
        -O FILE         Log to FILE (default: /var/log/messages, stdout if -)
        -s SIZE         Max size (KB) before rotation (default 200KB, 0=off)
        -b N            N rotated logs to keep (default 1, max 99, 0=purge)
        -l N            Log only messages more urgent than prio N (1-8)
        -S              Smaller output
        -t              Strip client-generated timestamps

六、参考文档
参考文档1
参考文档2

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Linux上搭建syslog服务器,可以按照以下步骤进行操作: 1. 安装syslog服务:可以使用yum或apt-get等包管理工具安装syslog-ng或rsyslog服务。 2. 配置syslog服务:可以编辑/etc/syslog-ng/syslog-ng.conf或/etc/rsyslog.conf文件,设置日志的存储路径、格式、过滤规则等。 3. 开启syslog服务:可以使用systemctl或service等命令启动syslog服务,并设置开机自启动。 4. 配置客户端:在需要将日志发送到syslog服务器的客户端上,可以编辑/etc/rsyslog.conf或/etc/syslog.conf文件,设置日志的发送目标为syslog服务器的IP地址和端口号。 5. 测试:可以在客户端上生成一些日志,查看是否能够成功发送到syslog服务器,并在服务器上查看日志是否正常存储。 以上就是在Linux上搭建syslog服务器的基本步骤,具体操作可以根据不同的系统和需求进行调整。 ### 回答2: Linux是一种开源的操作系统,它允许用户自主搭建各种服务器,其中包括syslog服务器。syslog是一种用于系统日志的标准协议,它用于跟踪和记录各种系统错误、警告消息、安全事件等。在Linux系统中,syslog服务器是非常重要的,因为它可以帮助管理员更好地理解系统中发生了什么事,同时能够协助分析和解决问题。 搭建Linux syslog服务器的具体步骤如下: 1. 确认系统环境:Syslog服务器一般不需要特殊的硬件要求,但是需要安装特定的软件包,例如rsyslog和sysklogd。在搭建之前要想好日志存储的位置、日志的保留时间等问题。 2. 安装rsyslog:在Ubuntu和Debian系统中,rsyslog是默认安装的。如果不确定是否已经安装,可以使用sudo apt-get install rsyslog安装。CentOS系统中也可以使用yum install rsyslog安装。 3. 配置rsyslog:配置rsyslog可以通过编辑/etc/rsyslog.conf文件来实现。该文件中列出了不同类型和等级的消息,并确定了每个类型和等级的目标日志文件。可以添加自定义规则,以便将所有日志转发到集中式syslog服务器。 4. 重启rsyslog服务:在Ubuntu和Debian系统中,sudo service rsyslog restart命令可以重启rsyslog服务。在CentOS系统中,可以使用systemctl restart rsyslog.service命令重启。 5. 测试syslog服务器:在测试syslog服务器时,可以使用logger命令来生成一个日志消息,例如,logger "Hello, syslog server!"。然后查看rsyslog配置文件所指定的日志文件,查看消息是否已成功写入。 在Linux系统中搭建syslog服务器可以很好地帮助管理员监控和分析系统日志,从而更好地维护系统的正常运行。通过以上步骤,我们可以轻松地搭建一台高效可靠的syslog服务器。 ### 回答3: Syslog是一个系统日志记录工具,它可以帮助管理员更方便地记录并管理系统的各种事件,如系统启动、关闭、内核错误等。在Linux系统中,搭建Syslog服务器可以让管理员更方便地管理整个系统中的日志。 以下是搭建Syslog服务器的步骤: 1. 安装Syslog服务器 在Linux系统上,Syslog服务器通常使用syslog-ng或rsyslog软件。通过包管理器如apt、yum或zypper等,可以安装这些软件。例如,在Ubuntu系统上可以使用如下命令: ``` sudo apt-get install syslog-ng ``` 2. 配置Syslog服务器 一旦安装了Syslog服务器,就需要配置其收集和转发日志。Syslog服务器的默认配置文件通常位于/etc/syslog-ng/syslog-ng.conf或/etc/rsyslog.conf中。对于syslog-ng服务器,可以使用一些命令来测试其工作状态,例如: ``` syslog-ng -V ``` 这将显示当前Syslog服务器的版本。默认情况下,Syslog服务器将收集/var/log目录下的所有日志文件。 3. 客户端配置 要将一台Linux主机的日志发送到Syslog服务器,需要配置客户端日志记录器,例如rsyslogsyslog-ng。以rsyslog为例,可以在/etc/rsyslog.conf文件中添加以下行来配置Syslog服务器: ``` *.info;mail.none;authpriv.none;cron.none @server_ip_address ``` 其中,server_ip_address是Syslog服务器的IP地址。这将导致该主机将所有不包括邮件、认证和计划任务的消息发送到Syslog服务器。 4. 重启服务 完成客户端和服务器配置后,需要重启相关服务以使其生效。以syslog-ng为例,可以使用以下命令重启服务器: ``` systemctl restart syslog-ng ``` 此时,所有客户端上的日志记录将发送到Syslog服务器并存储在其中。管理员可以使用工具如Logrotate等来管理日志文件,定期备份和删除旧日志文件。 总之,搭建Syslog服务器对于一个Linux管理员来说是一项基本的任务。它可以帮助管理员更好地管理系统事件,并且可以提供重要的调试信息,使其更容易诊断系统问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值