前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统各类日志查看

系统各类日志查看

作者头像
全栈工程师修炼指南
发布2022-09-28 19:47:17
1.2K0
发布2022-09-28 19:47:17
举报

[TOC]

0x00 快速入门

包含了用户日志、服务进程日志、系统安全日志等(syslog);

logrotate 命令

描述:用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱,防止linux系统日志文件过大

使用logrotate指令优点: 可让你轻松管理系统所产生的记录文件,每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。

预设的配置文件存放在/etc/logrotate.conf文件中,可以管理wtmp/btmp等产生的日志的配置选项;

这是一个text文档,包含许多配置选项(如下表),可以给系统的任何日志制定配置参数,此外这些选项还允许logrotate从其他日志文件读取和使用参数。

代码语言:javascript
复制
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# use date as a suffix of the rotated filedateext
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
  monthly
  minsize 1M
  create 0664 root utmp
  rotate 1
}


 #至于logrotate对文件进行管理时的所要执行的规则,可以在/etc/logrotate.d文件夹下创建文件,logrotate会在执行的时候自动读取相应的规则,比如我在/etc/logrotate.d/路径下新建了一个名为syslog的文件,其中的内容为:
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
/log/test.log 
{ 
         size 10M 
         create 
         start 10 
         rotate 4 
         compress 
         copytruncate
         postrotate      #轮换过后重启rsyslog服务;
            invoke-rc.d rsyslog rotate > /dev/null
         endscript       #结束脚本;
} 
#当文件/log/test.log的大小超过10M时就开始循环,允许logrotate创建文件,循环文件的开始为10,即文件为为test.log.10.gz,最多循环创建4个文件,即为test.log.13.gz,多于四个后开始在第一个上面循环,依次迭代。


# Function 参数解释
compress — 用gzip压缩旋转的日志文件。
nocompress — 在不需要压缩旋转日志文件的情况下使用。
copytruncate — 用于还在向开放日志文件写信息的过程。该选择将活归档日志文件制成副本。
nocopytruncate — 把日志文件复制进备份,但该开放文件不会被裁剪。
create mode owner group — 旋转日志文件并创建允许特定组合用户的新文件。缺省是使用与原始文件一样的模式,组合用户。
nocreate — 可以防止产生新日志文件。
delaycompress — 在使用压缩选择时,旋转文件不会在下一个循环开始时被压缩。
nodelaycompress –    日志文件会在循环过程中被压缩。
errors address — 将logrotate错误邮件发送到某个地址。
ifempty — 即使在空文件时也要旋转。这是Logrotate的缺省项。
notifempty — 空文件不旋转。
mail address — 这个邮件日志文件是循环到一个地址,因此能有效从系统中清楚。
nomail    在邮件日志循环时,副本不邮寄。
olddir directory — 这个选项会将循环日志文件保持在特定目录。该目录必需与现有日志文件在同一文件系统。
noolddir — 循环的日志文件与现有文件处于相同目录。
prerotate/endscript — 结束和执行旋转任务。
postrotate/endscript — 可以在一个日志文件旋转时执行的命令。
daily — 每日旋转日志文件。
weekly — 每周旋转日志文件。
monthly — 每月旋转日志文件。
rotate count — 在删除前旋转文件的特定次数。如果计数为零,就意味着没有副本保留。而5则意味着保留5个副本。
tabootext [+] list — This directs logrotate to not rotate files with the specified extension. The default list of extensions is .rpm-orig, .rpmsave, v, and ~。
size size — 在日志文件达到一定大小时开始旋转。大小是以bytes (默认), kilobytes (sizek)或megabytes (sizem)计算。
WeiyiGeek.配置
WeiyiGeek.配置

WeiyiGeek.配置

基于语法:

代码语言:javascript
复制
#语法
logrotate(选项)(参数)

#选项
-?或--help:在线帮助; 
-d或--debug:详细显示指令执行过程,便于排错或了解程序执行的情况; 
-f或--force :强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然; 
-s<状态文件>或--state=<状态文件>:使用指定的状态文件; 
-v或--version:显示指令执行过程; 
-usage:显示指令基本用法。

实际案例:

代码语言:javascript
复制

logrotate规则配置好后怎么定时去执行呢? 答:这个就可以交给Linux中的crontab来控制了

logger 命令(重要)

描述:syslog是Linux系统默认的日志守护进程,用于往系统中写入日志也可以接受来自系统的各种功能的信息,他提供一个shell命令接口到syslog系统模块。

默认的syslog配置文件是/etc/syslog.conf文件,程序,守护进程和内核提供了访问系统的日志信息;因此任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。

几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听UDP 端口514,并根据 syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。

意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线) 方法分析远端设备的事件

代码语言:javascript
复制
#用法
logger [options] [messages]

#参数
-d, --udp 
        使用数据报(UDP)而不是使用默认的流连接(TCP)
-i, --id  
        逐行记录每一次logger的进程ID
-f, --file file_name
        记录特定的文件
-h, --help
        显示帮助文本并退出
-n, --server
        写入指定的远程syslog服务器,使用UDP代替内装式syslog的例程
-P(大), --port port_num
        使用指定的UDP端口。默认的端口号是514
-p(小), --priority priority_level
        指定输入消息的优先级,优先级可以是数字或者指定为 " facility.level" 的格式。比如:" -p local3.info " local3 这个设备的消息级别为 info。默认级别是 "user.notice"
-s, --stderr
        输出标准错误到系统日志。
-t, --tag tag
        指定标记记录
-u, --socket socket
        写入指定的socket,而不是到内置系统日志例程。
-V, --version
        现实版本信息并退出

/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息: 日志级别:

代码语言:javascript
复制
facility:
    auth:             用户授权
    authpriv:         授权和安全
    cron:             计划任务
    daemon:           系统守护进程
    kern:             与内核有关的信息
    lpr                与打印服务有关的信息
    mail               与电子邮件有关的信息
    news               来自新闻服务器的信息
    syslog             由syslog生成的信息
    user               用户的程序生成的信息,默认
    uucp               由uucp生成的信息
    local0~7           用来定义本地策略
 
level:
    alert          需要立即采取动作
    crit           临界状态
    debug          调试
    emerg          系统不可用
    err            错误状态
    error          错误状态
    info           正常消息
    notice         正常但是要注意

实际案例:

代码语言:javascript
复制
#示例1.在/var/log中创建并写入日志信息由syslog协议处理的,是由守护进程sylogd负责执行,每个标准进程都可以用syslog记录日志,可以使用logger命令通过syslogd记录日志
logger "This is a test logger"
[root@izwz9biz2m4sd3bb3k38pgz ~]# tail -n 1 /var/log/messages
Jun  6 09:41:03 izwz9biz2m4sd3bb3k38pgz root: This is a test logger


#示例2.如果要记录特定的标记(tag)可以使用:
logger -t FLAG-TAG "This is a test logger demo 2"
[root@izwz9biz2m4sd3bb3k38pgz ~]# tail -n 1 /var/log/messages
Jun  6 09:42:09 izwz9biz2m4sd3bb3k38pgz FLAG-TAG: This is a test logger demo 2


#示例3.连接远程rsyslog示(这样设置不带HOST名称)
logger -p user.notice -t bash-$$ -i -n 192.168.1.88 -- "${SSH_CONNECTION} - ${USER} - ${PWD} - ${command}"


#示例4.连接远程rsyslog示(带HOST名称)
logger -p user.notice -t bash-$$ -i -- "${SSH_CONNECTION} - ${USER} - ${PWD} - ${command}"
#编辑rsyslog文件
user.* @@192.168.1.88:514
# Aug  2 13:42:35	10.10.107.222	master	local1	notice	bash-12610[12650]	192.168.1.88 52965 10.10.107.222 22 - root - /root - grep --color=auto "12610"
WeiyiGeek.syslog日志收集
WeiyiGeek.syslog日志收集

WeiyiGeek.syslog日志收集

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 快速入门
    • logrotate 命令
      • logger 命令(重要)
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档