侧边栏壁纸
博主头像
伯淳的个人博客博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

日志文件

Administrator
2023-11-01 / 0 评论 / 1 点赞 / 16 阅读 / 4626 字

1.什么是日志文件

日志文件:记录系统在什么时候由哪个进程做了什么样的操作时,发生了何种事件。

linux常见的日志文件目录:/var/log/

日志文件所需的相关服务与程序

  • systemd-journald.service

  • rsyslog.service

  • logrotate

日志文件内容的一般格式:

  • 时间发生的日期与事件

  • 发生此事情的主机名

  • 启动该事件的服务名称(如systemd、crond等)或命令与函数名称(如su、login...)

  • 该信息的实际内容

2.rsyslog.service:记录日志文件的服务

2.1rsyslog.service的配置文件:/etc/rsyslog.conf

配置文件规定了:

(1)什么服务(2)的什么等级(3)需要被记录在哪里(设备或文件)

2.2日志文件的安全性设置

为了防止日志文件被删除,或是被root自己不小心修改,可用隐藏属性来处理,可以使用a这个属性(chattr +a 文件),如果日志文件设置了这个属性,那么它就只能被增加,而不能被删除。取消方法用chattr -a 文件

2.3日志文件服务器的设置

待实践成功再更新。

3.日志文件的轮询(logrotate)

logrotate的主要功能就是将现有的日志文件重新命名以做备份,然后重新建立一个空文件来记录信息。

3.1logrotate的配置文件

  • /etc/logrotate.conf

  • /etc/logrotate.d/

logrotate.conf的设置语法是:

日志文件的绝对路径与文件名 ... {
		个别的参数设置值,如monthly, compress等
}

例:

[root@study ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
  • 执行脚本:可调用外部命令进行额外的命令执行,需与sharedscripts .... endscript设置合用。可用的环境为:

    • prerotate:在启动logrotate之前的命令

    • postrotate:在做完logrotate之后启动的命令。

  • 该设置只对/var/log/内的cron、maillog、messages、secure、spooler有效

  • 轮询完毕后取得syslog的PID后,以kill -HUP重新启动syslogd.

假如我们对/var/log/messages这个文件增加了chattr +a的属性,可这样处理:

[root@study ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    prerotate
       /usr/bin/chattr -a /var/log/messages
    endscript
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /usr/bin/chattr +a /var/log/messages
    endscript
}

3.2实际测试logrotate的操作

logrotate [-vf] logfile

-v:启动显示模式,会显示logrotate运行的过程

-f:强制每个日志文件都进行轮询操作

4.systemd-journald.service

systemd-journald用来管理与查询这次启动后的登录信息,而rsyslogd可以记录以前及现在的所有数据到磁盘文件中,方便未来进行查询。

4.1使用journalctl查看登录信息

journalctl [-nrpf] [--since TIME] [--until TIME] _optional

-n:后面+数字,显示指定数字的行数

-r:反向输出

-p:显示后面接的信息重要性排序

-f:类似于tail -f的功能,实时持续显示journal日志的内容

--since --until 设置开始与结束时间

_SYSTEMD_UNIT=unit.service:只输出unit.service的信息

_COMM=bash:只输出与bash有关的信息

_PID=pid:只输出此PID号的信息

_UID=uid:类似

4.2logger命令的使用

logger [-p 服务名称.等级] "信息"

例一:指定一下,让 dmtsai 使用 logger 来传送数据到日志文件中
[root@study ~]# logger -p user.info "I will check logger command"
[root@study ~]# journalctl SYSLOG_FACILITY=1 -n 3
-- Logs begin at Mon 2015-08-17 18:37:52 CST, end at Wed 2015-08-19 18:03:17 CST. --
Aug 19 18:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[29710]: starting 0yum-hourly.cron
Aug 19 18:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[29714]: finished 0yum-hourly.cron
Aug 19 18:03:17 study.centos.vbird dmtsai[29753]: I will check logger command

1

评论区