当前位置: 首页 > 编程日记 > 正文

Linux 日志管理(RHEL7)

日志管理
系统和程序的日记本
记录系统,程序运行中发生的各种事件
通过查看日志,了解及排除故障
信息安全控制的依据
内核及系统日志
由系统服务rsyslog统一记录/管理
日志消息采用文本格式
主要记录事件发生的时间,主机,进程,内容
常见的日志文件

/var/log/messages       记录内核消息,各种服务的公共消息
/var/log/dmesg      记录系统启动过程的各种消息
/var/log/cron       记录与cron计划任务相关的消息
/var/log/maillog        记录邮件收发相关的消息
/var/log/secure     记录与访问限制相关的安全消息

用户日志
由登录程序负责记录/管理
日志消息采用二进制格式
记录登录用户的时间,来源,执行的命令等信息

/var/log/lastlog        记录最近的用户登陆事件
/var/log/wtmp       记录成功的用户登录/注销事件
/var/log/btmp       记录失败的用户登录事件
/var/log/utmp       记录当前登录的每个用户的相关信息

查看文本日志消息
通过分析工具
tail,tailf,less,grep等文本浏览/检索命令
tailf = tail -f (实时跟踪)
awk,sed 等格式化过滤工具
专用分析工具
Webmin系统管理套件
Webalizer AWStats 等日志统计套件
用户登录分析
user who w 命令
查看已登录的用户信息,详细度不同
last lastb 命令
查看最近登录成功/失败的用户信息

[root@svr7 ~]# usersroot root root
[root@svr7 ~]# whoroot     tty1         2017-11-13 02:36root     pts/0        2017-11-13 01:31 (192.168.4.254)root     pts/1        2017-11-13 02:29 (192.168.4.254)
pts/n  指的是 伪字符终端
ttyn     指的是 纯字符终端  
[root@svr7 ~]# who | wc -l  #查看当前登录用户数量3
[root@svr7 ~]# w02:36:41 up  6:24,  3 users,  load average: 0.00, 0.01, 0.05USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     tty1                      02:36   17.00s  0.02s  0.02s -bashroot     pts/0    192.168.4.254    01:31    7:13   0.07s  0.00s tailf /opt/123.root     pts/1    192.168.4.254    02:29    1.00s  0.07s  0.02s wwtmp begins Thu Jan  5 11:47:19 2017
[root@svr7 ~]# last -2root     tty1                          Mon Nov 13 02:36   still logged in   root     tty1                          Mon Nov 13 02:36 - 02:36  (00:00)wtmp begins Thu Jan  5 11:47:19 2017
[root@svr7 ~]# lastb -2lisi     tty1                          Mon Nov 13 02:36 - 02:36  (00:00)    root     ssh:notty    192.168.4.254    Fri Nov 10 03:50 - 03:50  (00:00)    btmp begins Thu Jan  5 11:48:25 2017

日志消息的优先级
Linux内核定义的事件紧急程度
分为0~7共8种优先级别
其数值越小,表示对应事件越紧急
0 EMERG (紧急) 会导致主机系统不可用的情况
1 ALERT (警告) 必须马上采取措施解决的问题
2 CRIT (严重) 比较严重的情况
3 ERR (错误) 运行出现错误
4 WARNING(提醒) 可能会影响系统功能的事件
5 NOTICE (注意) 不会影响系统但值得注意
6 INFO (信息) 一般信息
7 DEBUG (调试) 程序或系统调试信息等
8 NONE 不需要登录
debug 与 none 两个 当我们想要做一些错误检测或者忽略掉某些服务的信息时用这两个
4级别以上是比较重要的
#记录日志文件的服务的配置文件

vim /etc/rsyslog.conf 
#kern.*                                                 /dev/console
只要是内核产生的信息,全都送到console(终端机)去 console通常是由外部设备连接到系统来
这个通常的应用是在系统出现严重问题而无法使用默认的屏幕查看时,可以使用这个选项来连接取得内核信息
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
mail news authpriv cron 等类型生成的信息较多 除此之外的其他信息都写入 /var/log/messages 中
authpriv.*                                              /var/log/secure
认证方面的信息均写入 /var/log/secure
mail.*                                                  -/var/log/maillog
邮件方面的信息则写入 /var/log/maillog 
cron.*                                                  /var/log/cron
周期性工作调度均写入 /var/log/cron
*.emerg                                                 :omusrmsg:*
当产生最严重的错误等级时,将该等级的信息以wall的方式广播给所有系统登录的帐号
uucp,news.crit                                          /var/log/spooler
当新闻组方面的信息有严重错误就写入   /var/log/spooler
local7.*                                                /var/log/boot.log
开机时应该显示到屏幕的信息写入到 /var/log/boot.log  

链接符号代表的意思
"." 代表比后面还要高的等级(含该等级)例如mail.info 代表只要是mail的信息,而且信息等级高于info(含info本身)时,就被记录
".=" 代表所需等级就是后面的等级而已,其他的不要
".!" 代表不等于,即除了该等级外的其他等级都记录

常见的放置位置:
文件的绝对路径,通常放在/var/log/里
打印机或其他设备 例如/dev/lp0这个打印机设备
用户名称:显示给用户
远程主机:例如@www.test.test 要对方主机支持
*: 代表目前在线的所有人

自定义日志(以ssh为例)
1)修改ssh服务日志级别
vim /etc/ssh/sshd_config,搜索SyslogFacility,查出默认情况ssh日志级别为认证级别,此处将其修改为local0

[root@room1pc32 桌面]# vim /etc/ssh/sshd_config 
#SyslogFacility AUTH
#SyslogFacility AUTHPRIV
SyslogFacility local0

2)修改系统日志配置

[root@room1pc32 桌面]# vim /etc/rsyslog.conf 
local0.*                                                /var/log/sshtest.log

3)重启服务

[root@room1pc32 桌面]# systemctl restart rsyslog.service 
[root@room1pc32 桌面]# systemctl restart sshd

4)测试

echo > /var/log/sshtest.log     #清空日志文件 没有此文件时 会自动生成日志文件
使用另一台机器ssh 此服务器
查看 /var/log/sshtest.log的信息注意 日志文件如果编辑过 就无法记录了 要从新启动日志文件服务 所以用vim 查看的时后 不要用:wq 用:q 就好了

远程日志服务器
可以使用tcp 和 udp 传输 这里使用的是tcp
日志服务器端:172.40.51.132
发送日志端:172.40.51.131
在 172.40.51.132 上
取消如下两行信息注释

[root@room1pc32 桌面]# vim /etc/rsyslog.conf 
$ModLoad imtcp
$InputTCPServerRun 514

重启系统日志服务

[root@room1pc32 桌面]# systemctl restart rsyslog.service

检查514端口

[root@room1pc32 桌面]# netstat -pantu | grep 514
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      29338/rsyslogd      
tcp6       0      0 :::514                  :::*                    LISTEN      29338/rsyslogd 

在 172.40.51.131 上
最后一行添加

[root@room1pc31 桌面]# vim /etc/rsyslog.conf 
*.* @@172.40.51.132:514

重启系统日志服务

[root@room1pc31 桌面]# systemctl restart rsyslog.service

测试 在172.40.51.131 上操作

[root@room1pc31 桌面]# systemctl restart vsftpd

在172.40.51.131 上查看日志

[root@room1pc32 桌面]# grep 'pc31' /var/log/messages
Dec  8 14:55:01 room1pc31 systemd: Started Vsftpd ftp daemon.

日志回滚
weekly #每周对日志文件进行一次rotate工作
rotate 4 #保留四个历史日志文件
create #由于日志文件被重命名 所以新建一个空的文件继续存储
dateext #归档老版本日志文件添加一个日期

include /etc/logrotate.d    #将/etc/logrotate.d/这个目录中的所有文件都执行rotate的工作
/var/log/wtmp {         #针对/var/log/wtmp 所设置的参数monthly             #每月一次create 0664 root utmp   #新建文件的权限与属主 属组minsize 1M      #文件容量超过1MB后才执行(略过时间参数)rotate 1            #仅保留一个历史日志文件
}
/var/log/btmp {missingok           #文件丢失不报错monthlycreate 0600 root utmprotate 1
}

logrotate的写法:
文件名:被处理的日志文件的绝对路径
参数:上述文件名进行轮替的参数 用{}包括起来
参数可以调用外部命令执行
执行环境
sharedscripts
...
endscript
prerotate:在启动logrotate之前进行
postrotate:在做完logrotate之后启动的命令
syslog服务如何设置rotate

[root@room1pc32 桌面]# vim /etc/logrotate.d/syslog 
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{missingoksharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript
}

对五个日志文件进行轮替,轮替完毕后 取得syslog 的PID后 以kill-HUP重新启动
如果日志文件增加了chattr +a 的属性时
可以在参数中添加如下操作

        sharedscriptsprerotate/usr/bin/chattr -a 文件名endscriptsharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true/usr/bin/chattr +a 文件名endscript

实际测试 logrotate 的操作
logrotate [-vf] logfile
-v : 启动显示模式,会显示logrotate运行的过程
-f : 不符合配置文件数据,强制每个日志文件都进行rotate的操作

在ssh日志的基础上 做日志回滚
1)编辑配置文件

[root@room1pc31 桌面]# cd /etc/logrotate.d/
[root@room1pc31 logrotate.d]# vim sshd
/var/log/sshtest.log{
missingok
weekly
create 0600root root
minsize 1M
rotate 3
}

2)重启日志服务

[root@room1pc31 logrotate.d]# systemctl restart rsyslog.service 

3)预演执行轮询

[root@room1pc31 logrotate.d]# logrotate -d /etc/logrotate.d/sshd 
reading config file /etc/logrotate.d/sshd
Handling 1 logs
rotating pattern: /var/log/sshtest.log weekly (3 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/sshtest.loglog does not need rotating
[root@room1pc31 logrotate.d]# echo $?
0

4) 强制轮询 也就是说轮询条件没满足

[root@room1pc31 logrotate.d]# logrotate -vf /etc/logrotate.d/sshd 
...
[root@room1pc31 logrotate.d]# echo $?
0

5)查看ssh日志

[root@room1pc31 logrotate.d]# ls /var/log/sshtest.log
sshtest.log    sshtest.log.1 
[root@room1pc31 log]# du -sh sshtest.log
0   sshtest.log
[root@room1pc31 log]# du -sh sshtest.log.1
4.0K    sshtest.log.1

6)logrotate日志查看

[root@room1pc31 log]# cd /var/lib/
[root@room1pc31 lib]# grep '2017-12-8' logrotate.status 
"/var/log/sshtest.log" 2017-12-8-16:50:7

logrotate的执行由crond服务实现 在/etc/cron.daily目录中

[root@room1pc32 桌面]# vim /etc/cron.daily/logrotate 
#!/bin/sh/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

扩展
保护日志文件措施
设置文件的隐藏属性
chattr [-RV][+-=AacDdijsSu][-v]文件或目录
-R 递归

  • 失效属性
  • 激活属性
    a 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件,目录就只可以在目录下建立和修改,而不允许删除
    i 系统不允许对这个文件进行任何修改,目录 目录下的文件不允许建立和删除文件
    查看文件的隐藏属性
    lsattr [-adR] 文件目录

使用journalctl工具 (只有Linux7 )
提取由systemd-journal服务搜集的日志
主要包括内核/系统日志,服务日志
常见用法
journalctl | grep 关键词
journalctl -u 服务名 [ -P 优先级 ]
journalctl -n 消息条数
journalctl --since='yyyy-mm-dd HH:MM:SS' --until="yyyy-mm-dd HH:MM:SS"

[root@svr7 /]# journalctl  --since="9:00"   --until="9:30" 
[root@svr7 /]# yum -y install httpd
[root@svr7 /]# systemctl restart  httpd
[root@svr7 /]# journalctl  -u  httpd   
[root@svr7 /]# journalctl  -n  10

转载于:https://blog.51cto.com/13558754/2057168

相关文章:

汇聚6年思想变迁:知识图谱报告幻灯片大全

本文汇总了中文知识图谱计算会议CCKS报告合集,涵盖从2013年至2018年,共48篇,从中可以看出从Google 2012年推出知识图谱以来,中国学术界及工业界这6年来知识图谱的主流思想变迁。作者 | 刘焕勇来源 | CSDN博客编辑 | apddd项目介绍…

【POCO】POCO学习总结(四)——MinGW编译poco

在window下使用MinGW编译poco 使用MSYS 下载MSYS 官网介绍:http://www.mingw.org/wiki/Getting_Started 官网下载:https://jaist.dl.sourceforge.net/project/mingw/Installer/mingw-get-setup.exe 安装 运行mingw-get-setup.exe,只选择…

辞职之后的思考--激励

本人曾拿过多次奖金,也曾与很多同事沟通过拿奖金的感觉,引发一些思考,这其实也是希望在以后有机会给别人发奖金时做参考之用。   并不是所有人都会有奖金,所以如果我没有奖金其实也没有什么关系,但是,我非…

【linux】串口编程(一)——配置串口

目前遇到的串口编程都是用于通信,很少作为终端显示。以前没有对串口编程做深入研究,本次以libmodbus源码中对串口的设置为例,详解总结串口编程时配置的属性(struct termios) 以libmodbus中_modbus_rtu_connect函数为例…

Playboy封面女郎、互联网第一夫人,程序员们的“钢铁审美”

整理 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 46 年前,《花花公子》(Playboy)的一期杂志封面女郎 Lenna,成为数万“钢铁直男”的梦中女神。然而,这位女性更为人所知的是她在计算机图像处理领…

开源实时日志分析ELK

开源实时日志分析ELK 2018-01-04 转自:开源实时日志分析ELK平台部署 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性…

【linux】串口编程(二)——非阻塞接收

项目中很少会使用阻塞接收,一般都是selectread监听模式来实现非阻塞接收。 使用selece时,需要处理一些异常情况的返回,比如:系统中断产生EINTR错误;超时错误ETIMEDOUT。 使用read时,需要处理读取时可能出现…

使用Photoshop制作网页模板

用图层组管理网页元素首先是在Photoshop中制作好网页的框架。网页中的元素有很多, 像Banner条、文本框、文字、版权、Logo、广告等。尽量把这些相对独立的元素放在不同的图层中,这样方便以后的再编辑。不过图层一多,就 显得很凌乱&#xff0c…

赵本山:我的时代还没有结束 | Python告诉你

作者 | 丁彦军来源 | 恋习Python(ID: sldata2017)【AI科技大本营按】今年春晚的小品好看吗?没有了赵本山的春晚总觉得少了点什么,然而许久不登春晚舞台的本山大叔借着B站的东风证明了「你大爷还是你大爷」。最近很多人被“改革春…

038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>组件之WEB开发中组件使用场景与定义组件的方式</title><script src"vue.js"></script> </head> <body> <…

IronPython系列:Composite Pattern及其实现

最近挺经常做鱼的。对于做鱼的步骤算是熟悉。以烤制为例&#xff0c;主要有三步&#xff1a;洗&#xff08;Clean&#xff09;、切&#xff08;Cut&#xff09;和烤&#xff08;Bake&#xff09;。烤鱼&#xff08;Bake&#xff09;又有两个小步&#xff1a;加热(Heat)和烤(Bak…

2019全球AI 100强,中国占独角兽半壁江山,但忧患暗存

整理 | apddd出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;日前&#xff0c;创投研究机构CB Insights发布了年度人工智能企业百强榜单——由100个最具前途的AI公司组成&#xff0c;它们从3000多个候选者中脱颖而出&#xff0c;其业务涵盖人工智能硬件、数据基础设施…

【linux】串口编程(三)——错误处理

一个程序的优劣&#xff0c;可以从多个角度来判断&#xff0c;错误处理就是其中之一。从代码中的错误处理部分&#xff0c;可以体现出一个程序员的水平和修养。 下面还是以libmodbus为例&#xff0c;总结下串口编程中的错误处理。 【1】基础 【1.1】modbus中错误处理有三种&a…

微服务实战之春云与刀客(三)—— 面向接口调用代码结构实例

2019独角兽企业重金招聘Python工程师标准>>> 概述 在上一篇中提到了spring cloud 面向接口调用的开发风格&#xff0c;这一篇会举一个简单的但完整的例子来说明整个代码结构。 代码已上传到 https://github.com/maruixiang/spring-cloud-demo/tree/master/demo1 代码…

如何创建复杂的机器学习项目?

翻译 | 光城责编 | 郭芮转载自CSDN&#xff08;CSDNnews&#xff09;scikit-learn提供最先进的机器学习算法。但是&#xff0c;这些算法不能直接用于原始数据。原始数据需要事先进行预处理。因此&#xff0c;除了机器学习算法之外&#xff0c;scikit-learn还提供了一套预处理方…

关闭vmware喇叭报警声

关闭vmware喇叭报警声 在vmware里面安装linux系统后&#xff0c;操作时经常使用tab键或使用VI时经常听到pc speaker突然叫一声&#xff0c;如果正当戴着耳机欣赏音乐&#xff0c;被这么一叫还要吓一跳。下面是解决办法&#xff1a;C:\Documents and Settings\All Users\Applica…

【ubuntu工具】Atom的简介及安装

Atom中文社区&#xff1a;https://atom-china.org/ 知乎atom&#xff1a;https://www.zhihu.com/question/22867204 Atom&#xff0c;是github用nodejs编写的一个编辑器 Atom安装步骤&#xff1a; sudo add-apt-repository ppa:webupd8team/atomsudo aptitude updatesudo a…

破解Win2008口令-ERD6.0

我们在日常使用计算机的过程中&#xff0c;大多都经历过由于忘记口令从而无法进入系统的遭遇。遇到这种问题该如何处理呢&#xff1f;很多朋友一定想到了形形的口令破解工具&#xff0c;这些工具中名气最大的就是ERD Commander Boot CD。 ERD Commander Boot CD是一张可以启动操…

【Qt】Qt5.9.0: error: GL/gl.h: 没有那个文件或目录

重新安装ubuntu&#xff0c;在编译Qt时报错&#xff1a; /home/Qt5.9.0/Examples/Qt-5.9/widgets/widgets/calculator/button.cpp:51: from …/calculator/button.cpp:51: /home/Qt5.9.0/5.9/gcc_64/include/QtGui/qopengl.h:139: error: GL/gl.h: 没有那个文件或目录 解决方…

给Chrome“捉虫”16000个,Google开源bug自检工具

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在内部开发和使用八年之久&#xff0c;近日&#xff0c;Google 宣布开源 bug 自动化检测工具 ClusterFuzz。ClusterFuzz 是一款提供端到端的自动化模糊测试工具&#xff1a;从错误检测到分类排查&…

小巧的日志记录组件 - 开源研究系列文章

今天给大家带来一个小巧的日志记录组件LogHelper。这个组件是由Log4Net这个组件的由来而来的&#xff0c;不过只是写入.txt文本文件而已。如果能够对大家的项目有帮助那就更好了。 首先&#xff0c;打开.SLN解决方案&#xff0c;添加引用日志组件。 然后&#xff0c;先对日志组…

.NET开发人员值得关注的七个开源项目

微软近几年在.NET社区开源项目方面投入了相当多的时间和资源&#xff0c;不禁让原本对峙的开源社区阵营大吃一惊&#xff0c;从微软.NET社区中的反应来看&#xff0c;微软.NET开发阵营对开源工具的依赖正日益增强&#xff0c;本文就为所有.NET开发人员介绍7个应该关注的开源项目…

SystemTap了解

SystemTrap是监控和跟踪运行中的Linux内核操作的动态方法。 http://www.ibm.com/developerworks/cn/linux/l-systemtap/ 使用SystemTrap需要使用trap来运行一个stp脚本 如何安装&#xff1a; Centos下直接yum install systemtrap就行了 测试是否可以运行 运行&#xff1a;stap …

Windows 95被做成了App,可玩扫雷和纸牌

6 秒重温 Windows95 开机画面 作者 | 琥珀 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; “看到 Win95&#xff0c;再看到仙剑 DOS 的画面&#xff0c;突然有种想哭的感觉&#xff0c;小时候帮李逍遥实现了仗剑江湖的愿望&#xff0c;但自己却没有实现自己的愿望…

【Ubuntu】虚拟机VirtualBox安装win7完整步骤

在Ubuntu16.04中使用VirtualBox安装win7&#xff0c;亲测可以完美使用; 完整步骤参见如下链接&#xff1a; 1、VirtualBox安装步骤&#xff1a;http://www.xitongcheng.com/jiaocheng/xtazjc_article_23804.html 2、win7镜像下载&#xff1a;http://www.xitongcheng.com/jia…

全栈AI工程师指南,DIY一个识别手写数字的web应用

作者 | shadow chi本文经授权转载自 无界社区mixlab&#xff08;ID&#xff1a;mix-lab&#xff09;网上大量教程都是教如何训练模型&#xff0c;往往我们只学会了训练模型&#xff0c;而实际应用的环节是缺失的。def AIFullstack&#xff08; &#xff09;&#xff1a;本文从「…

mysql 中limit 用法!!

select * from mydb where id limit i,j; 意思就是从第i行开始&#xff0c;检索出j行&#xff0c;结束&#xff01;主要用于分页技术中&#xff0c;比如说我们一页现实10行&#xff0c;可以这样做&#xff1a;select * from mydb where id order by id desc limit $page,10($pa…

【Qt】Qt动态库和静态库的创建和使用

动态库(共享库)的创建 在Qt Creator中新建项目,选择Library 点击“Choose”进入下一步 选择创建库的类型:共享库 选择Kit套件 选择需要的模块 配置工程路径、名字等 Qt Creator自动创建的文件 我配置的动态库名字为:Share pro文件内容

23.3. Ethernet0/0 - Wan口配置

23.3.1. DHCP 动态IP地址 <Netkiller>system-view System View: return to User View with CtrlZ.interface Ethernet0/0port link-mode routenat outboundip address dhcp-allocipsec policy navigator #[Netkiller]display dhcp client Ethernet0/0 DHCP client inform…

用Python解锁“吃鸡”正确姿势

大吉大利&#xff0c;今晚吃鸡~ 今天跟朋友玩了几把吃鸡&#xff0c;经历了各种死法&#xff0c;还被嘲笑说论女生吃鸡的100种死法&#xff0c;比如被拳头抡死、跳伞落到房顶边缘摔死 、把吃鸡玩成飞车被车技秀死、被队友用燃烧瓶烧死的。这种游戏对我来说就是一个让我明白原来…