### Redhat Syslog 配置详解 #### 一、Syslog 概述 Syslog(系统日志)是一项广泛应用于Linux系统中的日志记录服务,主要用于收集和存储来自不同应用程序和系统组件的日志数据。在Redhat Linux环境中,Syslog服务通常由`syslogd`进程来提供支持。Syslog的配置文件`/etc/syslog.conf`允许管理员自定义日志记录的行为,从而更好地监控系统运行状况、排查问题和维护系统安全。 #### 二、Syslog配置文件详解 ##### 1. 基本格式 `syslog.conf`文件的每一行遵循特定的格式:“选择符 动作”(selector action)。具体格式如下: ``` facility.priority[;facility.priority]action ``` - `facility`: 设施,指日志消息的来源类型。 - `priority`: 优先级,表示日志消息的重要程度。 - `action`: 记录行为,定义如何处理满足条件的日志消息。 例如: ``` kern.info /var/log/kernel.log ``` 这条配置意味着所有内核(`kern`)产生的优先级为`info`及以上的日志消息将会被记录到`/var/log/kernel.log`文件中。 ##### 2. 设施与优先级 - **设施**:表示产生日志消息的应用程序或系统组件。 - `LOG_AUTH`: 用于认证系统如login、su、getty等。 - `LOG_AUTHPRIV`: 同`LOG_AUTH`,但只登录到所选择的单个用户可读的文件中。 - `LOG_CRON`: cron守护进程。 - `LOG_DAEMON`: 其他系统守护进程,如routed。 - `LOG_FTP`: 文件传输协议ftpd、tftpd。 - `LOG_KERN`: 内核产生的消息。 - `LOG_LPR`: 系统打印机缓冲池lpr、lpd。 - `LOG_MAIL`: 电子邮件系统。 - `LOG_NEWS`: 网络新闻系统。 - `LOG_SYSLOG`: 由syslogd产生的内部消息。 - `LOG_USER`: 随机用户进程产生的消息。 - `LOG_UUCP`: UUCP子系统。 - `LOG_LOCAL0`至`LOG_LOCAL7`: 为本地使用保留。 - **优先级**:表示日志消息的重要程度。 - `EMERG`: 紧急情况,如系统panic。 - `ALERT`: 需要立即注意的情况。 - `CRIT`: 关键性问题,如进程crash或overflow。 - `ERR`: 错误事件。 - `WARNING`: 警告事件。 - `NOTICE`: 普通但重要的事件。 - `INFO`: 有用的信息。 - `DEBUG`: 用于调试的信息。 ##### 3. 特殊符号 - `*`: 表示任何设施(句点前的*)或任何优先级(句点后的*)。 - `none`: 不包括任何优先级。 - `=`: 仅针对该优先级而不包括大于它的优先级。 - `!`: 求反,放在优先级或`=`前面表示相反的意思。 例如: - `local0.*`: 表示`local0`的任何优先级的日志消息。 - `*.crit`: 表示任何设施的优先级大于等于关键事件的日志消息。 - `*.=crit`: 表示任何设施的关键事件日志消息。 - `*.*;kern.none`: 除`kern`外的其他任何设施的任何日志消息。 - `kern.info;kern.!=err`: `kern`设施从`info`到`warning`之间的日志消息。 ##### 4. 记录行为(Action) - `文件名`: 将日志消息写入指定的文件中,需包含绝对路径。 - `|程序`: 通过管道转发给某个程序。 - `/dev/console`: 发送到本地机器终端和控制台上。 - `@hostname或@IP地址`: 转发给另外一台远程主机的syslogd程序。 - `用户列表`: 发送到指定用户的终端上。 #### 三、配置实例 假设有一个需求:DNS守护进程`named`会产生自己的日志文件,而系统默认的`syslogd`服务也会将这些日志复制到`/var/log/messages`中。为了提高I/O性能,需要取消`/var/log/messages`对`named`的日志转储。 在`/etc/syslog.conf`文件中找到相关的配置行: ```bash [root@ns2 ~]# cat /etc/syslog.conf ... *.info;mail.none;authpriv.none;cron.none;named.none /var/log/messages ... ``` 修改上述配置,将`named.none`添加到`*.info`之后,使得所有非邮件、非私有认证、非cron、非named的消息都被记录到`/var/log/messages`中,而`named`的日志则不会被记录: ```bash *.info;mail.none;authpriv.none;cron.none;named.none /var/log/messages ``` 修改后保存并重启`syslogd`服务使配置生效: ```bash systemctl restart rsyslog ``` 通过以上步骤,我们可以有效地控制日志记录的内容和方式,从而实现更高效的系统管理和故障排查。
- 粉丝: 1
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论5