linux备忘录-日志档案
linux的日志档案
linux的日志档案记录系统或程序在运行过程中产生的一些信息,例如事件的记录,错误的记录等等。特别是在发生错误时,我们可以通过日志档案找到错误发生的根源,例如当我们无法启动邮件服务器时(sendmail服务),我们可以查询一下它的日志档案/var/log/maillog。
Linux中常见的日志档案
- /var/log/cron
 
记录crontab排程的信息。
- /var/log/dmesg
 
记录开机时核心侦测过程中所产生的各项信息。
- /var/log/lastlog
 
记录系统上所有账号最近一次登入系统的相关信息。
- /var/log/maillog或/var/log/mail/*
 
记录邮件的往来信息,主要是记录sendmail(STMP协议提供者)和dovecot(POP3协议提供者)服务所产生的信息。
- /var/log/messages
 
系统发生的错误信息或重要信息都会记录在此。
- /var/log/secure
 
基本上,需要输入账号密码的软件在登入时都会把信息记录在此。
- /var/log/wtmp和/var/log/faillog
 
记录正确登入系统这的账户信息(wtmp),和错误登录系统的账户信息(faillog)
- /var/log/httpd/*和/var/log/news/*和/var/log/samba/*
 
对应的网络服务记录的日志档案
系统日志所需要的服务
- syslogd
 
记录登录系统与网络服务等信息
- klogd
 
记录登录核心产生的各种信息
- logrotate
 
主要进制日子文件的轮替功能
syslogd 记录日志文件的服务
在Ubuntu这个发行版中,syslogd这个服务被扩展成了rsyslogd。相应的配置文件则变成了/etc/rsyslog.conf。
通过ps和chkconfig可以查看该服务是否有启动且是否有开机启动。
# 查看syslogd是否有启动
ps aux | grep 'syslog'
# ps aux | grep 'syslog' | grep -v 'grep'
# 查看syslogd是否有开机启动
chkconfig --list syslogd
syslogd会记录的内容
系统产生的信息经过syslogd记录下来后,一般会记录下面内容
- 事件发生的日期和时间
 - 发生此时间的主机名
 - 启动此时间的服务名称(如 samba,xinetd等)或函数库(如 libpam)
 - 信息的实际数据内容
 
例如对于登录时记录账户信息的/var/log/secure,其记录的信息格式为
日期/时间 HostName 服务与相关函数 信息说明
syslogd服务的 配置文件
syslogd这支服务的配置文件为 /etc/syslog.conf。该配置文件规定了
- 什么样的服务
 - 记录什么等级的信息
 - 信息记录到哪里
 
/etc/syslog.conf的格式大致为
# 服务名称[.=!]信息等级    信息记录的文件名或装置或主机
# 例如mail这个服务产生的info等级信息
mail.info    /var/log/maillog_info
# 服务名称 (可以使用 man 3 syslog查询) syslog规范的一些服务,都是syslog规定的一些名称,许多程序都归类到这些名称中
#     auth 与认证有关,如login,ssh,su等需要账号密码的东西
#     cron 工作排程cron/at等产生信息记录的地方
#     daemon 与daemon有关的信息
#     kern 核心产生的信息
#     lpr 打印相关的信息
#     mail 邮件相关信息
#     news 新闻组服务器有关的信息
#     syslog syslogd程序自身产生的信息
#     uer,uucp,local0~local7 与unix like机器本身有关的信息
# 信息等级,分为7种,从不重要到重要为
#     info 基本的信息说明
#     notice
#     warning (warn) 警告信息,可能有问题
#     err 错误信息
#     crit 严重的错误信息
#     alert 警告警告
#     emerg 很严重的错误信息
#     none 都不记录
# [符号.=!]
#     . 比后面还要高的等级都要记录下来
#     .= 只记录后面的等级
#     .! 除了该等级之外的等级信息
# 信息记录的文件名或装置或主机
#     档案的绝对路径 通常是/var/log/里的档案
#     打印机或其他 /dev/lp0
#     使用者名称 显示给用户
#     远程主机 例如@www.vbrid.tsai,要求对方主机支持
#     * 目前在线的所有人
# 例子
mail.info    /var/log/maillog
news.*;cron.*    /var/log/cronnews
news.=warn;cron.=warn    /var/log/cronnews.warn
*.*;news,cron,mail.none    /var/log/messages
*.*;news.none.cron.none;mai.none    /var/log/messages
自行增加日志文档
如果我们有一些自身的需求,需要将信息记录在特定的文档当中,则需要按照下面的做法
# 先进行/etc/syslog.conf配置
vim /etc/syslog.conf
# 添加
*.info    /var/log/admin.log # 自身的需求
# 重新启动syslog服务
/etc/init.d/syslog restart
日志档案的安全问题
放置日志档案被删除
通过档案的特殊属性可以实现一些档案的特殊需求。例如令档案只能读取,而不能进行其他操作。通过lsattr和chattr这两个命令可以处理档案的这种特殊属性。
特殊属性的 i 使得档案不能删掉,不能新增数据。
特殊属性的 a 只能添加数据,不能删除
例如
# 给/var/log/messages添加特殊属性a
chattr +a /var/log/messages
lsattr /vat/log/messages
# 去掉特殊属性
chattr -a /var/log/messages
日志档案服务器
syslog这个程序自身已经拥有一个日志档案服务器,只不过这个服务器默认是没有开启的。如果开启了这个日志服务器,则该服务会在UDP的端口514进行监听。
让syslogd接受其他主机的日志信息
对于server端
- 修改syslogd的配置文件
 
vim /etc/sysconfig/syslog
# 将下行
SYSLOG_OPTIONS="-m 0"
# 修改成
SYSLOG_OPTIONS="-m 0 -r"
- 重新启动syslogd,并观察
 
/etc/init.d/syslog restart
netstat -lunp | grep syslog
对于client端,我们只需要指定信息传送给主机即可。
vim /etc/syslog.conf
# 添加
*.*  @192.168.1.100
# 然后重启syslog
日志档案的轮替 logrotate
logrotate的功能是将就的日志档案移动成旧档案,并且重新建立新的空档案来记录。syslog是通过daemon的方式运行的,而logrotate是通过任务排程cron的方式运行的。logrotate的排程配置在/etc/cron.daily档案中,即logrotate每天都要进行日志档案的轮替。
logrotate的配置文件
logrotate的配置主要是记录 在什么状态下才进行日志档案的轮替。其主要的配置文件有
- /etc/logrotate.conf (这是logrotate的主要配置文件)
 - /etc/logrotate.d/* (该目录中的档案都会被读入/etc/logrotate.conf)
 
logrotate的配置内容为
# 查看/etc/logrotate.conf的内容
vim /etc/logrotate.conf
# 下面是logrotate配置的默认值
weekly  # 预设每个礼拜进行一次rotate工作
rotate 4  # 保留4个日志档案
create  # rotate时建立新的档案进行记录
#compress  # 被rotate的日志档案是否需要压缩,大部分系统不需要compress
include /etc/logrotate.d
# 将/etc/logrotate.d/中的所有档案都读进来
/var/log/wtmp{  # 仅针对/var/log/wtmp进行的设定
    monthly  # 一个月一次rotate
    minsize 1M  # 日志档案超过1M才进行rotate
    create 0664 root utmp  # 指定新档案建立时的权限、所属账号、所属群组
    rotate 1  # 只保留一份
}
# wtmp 主要记录登入者 和 系统重新启动时的时间 和来源主机 和登入时间
对于syslog这个服务,其日志档案的轮替配置为
# 打开/etc/logrotate.d/syslog
vim /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog \
/var/log/spooler /var/log/boot.log /var/log/cron{
    sharedscripts
    postrotate
    /bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null' 2> /dev/null || true
    /bin/kill -HUP 'car /var/run/rsyslogd.pid 2> /dev/null' 2> /dev/null || true
    endscript
}
# 可以通过 sharescrpts 和 endscript的组合 呼叫外部指令下达
# 呼叫指令的时间通过下面指定
#   prerotate 在rotate之前执行
#   postrotate 在rotate之后执行,例如重新启动服务 kill -HUP
#   这两个时间设定对于已经有特殊权限的日志档案来说十分重要。
# 上面在rotate后,取得syslogd的pid后,重新启动syslogd服务 /bin/kill -HUP
# 对于已经加上特殊权限 +a 的情况,可以这么处理
/var/log/messages /var/log/secure /var/log/maillog \
/var/log/spooler /var/log/boot.log /var/log/cron{
    sharedscripts
    prerotate
    /usr/bin/chattr -a /var/log/messages    # rotate前去掉a特殊属性
    endscript
    sharedscripts
    postrotate
    /bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null' 2> /dev/null || true
    /bin/kill -HUP 'car /var/run/rsyslogd.pid 2> /dev/null' 2> /dev/null || true
    /usr/bin/chattr +a /var/log/message     # rotate后,重新加上a特殊属性
    endscript
}
执行logrotate进行测试
logrotate [-vf] logfile
# 选项和参数
# -v 显示logrotate的运作过程
# -f 强制进行rotate工作
# 例子
logrotate -v /etc/logrotate.conf
自定义日志档案的轮替功能
对于之前自定义设置的日志档案/var/log/admin.log,进行下面的轮替配置
# 1. 先添加+a特殊属性
chattr +a /var/log/admin.log
lsattr /var/log/admin.log
# 2. 配置logrotate配置文件
#    在/etc/logrotate.d/下建立一个档案为admin
vi /etc/logrotate.d/admin
# 配置内容如下
/var/log/admin.log{
    monthly  # 一个月一次rotate工作
    size=10M  # 档案大小大于10M就开始rotate
    rotate 5  # 保留五份日志档案
    compress  # 进行压缩
    sharedscripts
    prerotate
    /usr/bin/chattr -a /var/log/admin.log
    endscript
    sharedscripts
    postrotate
    /usr/bin/killall -HUP syslogd
    /usr/bin/chattr +a /var/log/admin.log
    endscript
}
# 3. 测试logrotate
logrotate -v /etc/logrotate.conf
#    测试强制rotate
logrotate -vf /etc/logrotate.conf
lsattr /var/log/admin.log*
分析日志档案
日志档案的分析时什么重要的,它可以帮我们及时找出系统出现的问题。向 last, lastlog, dmesg等命令都可以查询一些日志档案信息。同时,系统一般也会提供一个logwatch的日志档案分析程序,从而能够较为方便地进行日志档案的分析工作。
日志档案分析程序 logwatch
logwatch 会每天分析一次日志档案,并将数据用email的方式发送给root用户。
自己写日志档案分析工具
如果我们有自己的日志档案分析需求,我们可以自己写一个分析工具,并将分析工具注册到crontab中,就可以实现周期性的日志档案分析,同时也可以像logwatch一样通过email的方式发送分析结果。
命令
- logrotate (日志档案轮替)
 
logrotate [-vf] logfile
# 选项和参数
# -v 显示logrotate的运作过程
# -f 强制进行rotate工作
# 例子
logrotate -v /etc/logrotate.conf
												
											linux备忘录-日志档案的更多相关文章
- linux备忘录-基本命令
		
基本命令 将命令分类为获取信息类,文件管理类,目录管理类,文本处理类,系统类,工具类. 获取信息类 uname # 输出所有信息 # 一行输出,空格分割 uname -a # 输出内核名称 uname ...
 - [转]linux查看日志文件内容命令
		
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
 - linux查看日志文件内容命令tail、cat、tac、head、echo
		
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
 - linux查看日志文件命令
		
转:https://www.cnblogs.com/zdz8207/p/linux-log-tail-cat-tac.html linux查看日志文件内容命令tail.cat.tac.head.ech ...
 - 【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo
		
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
 - linux查看日志文件内容命令tail、cat、tac、head、echo、vi
		
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
 - linux查看日志文件内容命令tail、cat、tac、head、echo详解
		
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
 - Linux使用日志
		
Linux使用日志 ----------------------------------------------------------------------------- SecureCRTPor ...
 - linux查看日志的方法
		
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
 
随机推荐
- LinQ 简介
			
LinQ是3.0新加的语法.用起来比较方便,我们可以使用较简单的方法来过滤数据和处理数据. 使用场景: 可以看到LINQ使用场景还是很多的.现在写项目基本都会用到. 在出现委托之前,我们来查找对象 在 ...
 - caffe convert mxnet
			
https://github.com/apache/incubator-mxnet/tree/430ea7bfbbda67d993996d81c7fd44d3a20ef846/tools/caffe_ ...
 - DHTML---HTML5
			
1. HTML概述 网页是网站的表现层,各种编程语言(如Java)构成后台的逻辑,我们将后台逻辑做好然后通过页面表达.同时通过网页来与后台进行交互.而Html是我们做网页的基础,由浏览器来解析. 1. ...
 - ios应用数据存储方式(偏好设置)-转
			
一.简单介绍 1.很多ios应用都支持偏好设置,比如保存用户名,密码,字体大小等设置,ios提供了一套标准的解决方案来为应用加入偏好设置功能. 2.每个应用都有个NSUserDefaults实例,通过 ...
 - Spring框架中的IOC?
			
Spring中的org.springframework.beans包和org.SpringframeWork.context包构成了Spring框架IOC容器的基础.BeanFactory接口提供了一 ...
 - JAVA面向对象思想理解分析
			
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
 - Java的内存--存储
			
0.参考资料: http://www.j2megame.org/index.php/content/view/2246/125.html 1.Java的内存机制 Java 把内存划分成两种:一种是栈内 ...
 - 微信小程序中无刷新修改
			
1.点击事件无刷新修改 原理:onload事件中是把这个分类和品牌的列表全部拿出来,拼接成数组的格式,在小程序中遍历的时候就要把小标(index)给绑定到左侧的品牌上,然后js中获取index的值,就 ...
 - Learning Experience of Big Data: Connect CentOs to Xshell and set Java environment on CentOS
			
1.set up connections between vitural machine and Xshell: After we connect the virtural machine to ne ...
 - python3 练习题100例 (二十二)输入两个字符串,输出两个字符串集合的并集
			
题目内容: 输入两个字符串,输出两个字符串集合的并集. 为保证输出结果一致,请将集合内元素排序之后再输出, 如对于集合aset,可输出sorted(aset). 输入格式: 共两行,每一行为一个字符串 ...