Linux下的日志维护技巧

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1、系统日志

  /var/log/messages不仅是服务器的系统日志,很多时候它也包括许多服务的日志,所以它被称为“杂货铺”,建议重点关注。大家一般都喜欢用以下命令来看最后10条日志:tail -n10/var/log/messages。

  其实还可以将一段日志保存成文件(Xmanager3.0企业版的shell也有日志录像截取功能),或者直接用vim来处理。我以前配置主从复制的bind服务器时,有时会因为权限的原因报错,这时就可以在一台报错的服务器上用命令tail -f/var/log/messages实时查看服务器的日志变化情况,从而查找错误的蛛丝马迹。事实证明,效果很好,而且将此命令用于lvs+keepalived的排错效果也不错。其他服务器配置排错以此类推,这个做法也推荐读者掌握。

  2、系统安全日志

  /var/log/secure记录登录系统存取数据的文件,例如POP3、SSH、Telnet、FTP等都会被记录,我们可以利用此文件找出不安全的登录IP。目前比较流行的SSH防暴力破解工具DenyHosts主要也是读此文件。另外,我写了一个原理类似的shell安全脚本,用于线上服务器,在后面的章节跟大家分享。

  3、记录登录者的数据

  /var/log/wtmp记录登录者的信息数据,由于此文件已经被编码过(为二进制文件),想用cat等命令直接查看是不行的,必须使用last指令来取出文件的内容,如下所示:

  1. [root@localhost ~]# last  
  2. root pts/2220.249.72.138Wed Mar 30 08:33still logged in  
  3. root pts/2220.249.72.138Tue Mar 29 09:02 - 15:42(06:39)  
  4. root pts/2220.249.72.138Tue Mar 29 07:31 - 09:01(01:30)  
  5. root pts/2219.139.223.49Tue Mar 29 00:14 - 00:29(00:15)  
  6. root pts/2183.94.4.206Mon Mar 28 20:46 - 21:21(00:34)  
  7. root pts/2113.57.224.3Mon Mar 28 11:30 - 12:17(00:46)  
  8. root pts/4219.139.223.142Sun Mar 27 15:58 - 18:10(02:11)  
  9. root pts/3113.57.224.3Sun Mar 27 14:28 - 18:25(03:57)  
  10. root pts/3113.57.224.3Sun Mar 27 09:20 - 11:56(02:35)  
  11. root pts/3219.140.210.152Sun Mar 27 01:16 - 01:29(00:12)  
  12. root pts/2220.249.72.138Sat Mar 26 08:42 - 18:38(1+09:55)  
  13. root pts/2220.249.72.138Thu Mar 24 11:19 - 14:44(1+03:25)  
  14. root pts/2220.249.72.138Wed Mar 23 10:26 - 09:13(22:47)  
  15. root pts/2220.249.72.138Tue Mar 22 07:22 - 13:38(06:16)  
  16. root pts/2119.103.112.43Mon Mar 21 18:08 - 18:38(00:29)  
  17. root pts/2119.103.112.43Mon Mar 21 16:26 - 18:07(01:41)  
  18. root pts/3119.103.82.129Mon Mar 21 12:22 - 12:25(00:02)  
  19. root pts/2119.103.121.252Mon Mar 21 11:59 - 14:11(02:12)  
  20. root pts/2119.103.121.252Mon Mar 21 11:50 - 11:53(00:02)  
  21. root pts/2119.103.30.213Sun Mar 20 10:03 - 12:42(02:39)  
  22. root pts/358.19.17.3Sat Mar 19 12:22 - 12:22(00:00)  
  23. root pts/2220.249.72.138Sat Mar 19 07:07 - 16:05(08:58)  
  24. root pts/2219.140.213.209Sat Mar 19 01:39 - 01:55(00:16)

  4、记录登录时间

  /var/log/lastlog记录每个使用者最近登录系统的时间。因此当使用者登录时,就会显示其上次登录的时间,你应该注意一下这个时间,若此时间不是你上次登录的时间,表示账号可能被人盗用了。此可执行文件可用/usr/bin/lastlog指令读取(在FreeBSD8&FreeBSD8.1下为/usr/sbin/lastlogin)。使用此命令后的记录如下所示:

  1. [root@localhost ~]# lastlog  
  2. 用户名  端口 来自 最后登录时间  
  3. root  pts/2220.249.72.138三 3月 30 08:33:33 +0800 2011  
  4. bin**从未登录过**  
  5. daemon**从未登录过**  
  6. adm**从未登录过**  
  7. lp**从未登录过**  
  8. sync**从未登录过**  
  9. shutdown**从未登录过**  
  10. halt**从未登录过**  
  11. mail**从未登录过**  
  12. news**从未登录过**  
  13. uucp**从未登录过**  
  14. operator**从未登录过**  
  15. games**从未登录过**  
  16. gopher**从未登录过**  
  17. ftp**从未登录过**  
  18. nobody**从未登录过**  
  19. nscd**从未登录过**  
  20. vcsa**从未登录过**  
  21. pcap**从未登录过**  
  22. rpc**从未登录过**  
  23. apache**从未登录过**  
  24. mailnull**从未登录过**  
  25. smmsp**从未登录过**  
  26. ntp**从未登录过**  
  27. hsqldb**从未登录过**  
  28. xfs**从未登录过**  
  29. rpcuser**从未登录过**  
  30. sshd**从未登录过**  
  31. dbus**从未登录过**  
  32. avahi**从未登录过**  
  33. haldaemon**从未登录过**  
  34. avahi-autoipd**从未登录过**  
  35. gdm**从未登录过**  
  36. longfei**从未登录过**  
  37. ldap**从未登录过**  
  38. www**从未登录过**  
  39. mysql**从未登录过**



 5、服务器的邮件日志

  服务器的邮件为/var/log/messages,如果要用专业的日志分析工具来分析的话,我推荐使用Awstats。如果公司的开发系统对邮件的要求比较低,可以配置最简单的Sendmail或Postfix,通过看邮件日志里的status状态来判断邮件到底有没有正确发送。在配置Nagios服务器时,我也习惯用此日志来判断报警邮件到底有没有发送。如果对自己的shell水平足够有自信,也可以写脚本来收集邮件服务器的返回状态等。但专业的事情,建议还是由专业的Awstats工具来做,特别是邮件负载比较大时(比如,每天几百万条日志或上千万条日志),依靠人力完全不可取。

  6、输出iptables日志到一个指定的文件中

  iptables的man参考页中提到:我们可以使用iptables在Linux内核中建立、维护和检查IP包过滤规则表,iptables自身的3个表可能已经创建,每一个表包含了很多内嵌的链,也可能包含用户自定义的链。iptables默认把日志信息输出到/var/log/messages文件中。不过在有些情况下(比如你的Linux服务器是用来作为防火墙或NAT路由器的),你可能需要修改日志输出的位置,通过修改或使用新的日志文件,可以帮你创建更好的统计信息,或者帮你分析网络攻击信息。下面向大家介绍如何建立一个新的日志文件/var/log/iptables.log。输出iptables日志信息到一个指定文件的方法如下所示:

  1)打开/etc/syslog.conf文件。

# vim /etc/syslog.conf

  2)在文件末尾加入下面这行信息:

kern.warning /var/log/iptables.log

  3)保存和关闭文件,使用下面的命令重新启动syslogd。

/etc/init.d/syslog restart

  7、日志文件的专业工具

  系统的一些服务,比如Apache、Nginx、Squid,还有MySQL数据服务器,都有自己特定的日志文件,不过由于其格式比较复杂,还是推荐使用专业工具(如Awstats、Cacti)来分析。MySQL的binlog日志可以用mysqlbinlog来分析,Cacti用得比较多的情况是用来分析Nginx负载均衡器一段时间内的并发情况及服务器的流量异常情况。

  8、用dmesg查看启动消息

  dmesg提供了一个简单的方法查看系统启动信息。当Linux启动的时候,内核的信息被存入内核ring缓存当中,dmesg可以显示缓存中的内容。默认情况下,dmesg打印内容到屏幕上,当然你可以将其重定向输出到一个文件中。如果硬件损坏的话,在dmesg日志里是有显示的,可用以下命令来查看dmesggrep error,其实看到的也就是/var/log/dmesg中的内容。

  9、关于cron的日志

  默认情况下,Crontab中执行的日志写在/var/log下,我们可以先看看/etc/syslog.conf里的配置,通过命令grep cron/etc/syslog.conf来查看,如下所示:

  1. [root@localhost log]# grep cron /etc/syslog.conf  
  2. *.info;mail.none;authpriv.none;cron.none /var/log/messages  
  3. # Log cron stuff  
  4. cron.*/var/log/cron

  接着看/var/log/下的cron日志,如下所示:

  1. [root@localhost log]# ls -lsart /var/log/cron*  
  2. 80 -rw------- 1 root root 72378 03-20 04:02 /var/log/cron.2  
  3. 812 -rw------- 1 root root 819861 03-27 04:02 /var/log/cron.1  
  4. 524 -rw------- 1 root root 525442 03-31 13:59 /var/log/cron

  当crond执行任务失败时,Crontab的日志会给用户发一封邮件。如果在服务器上发现一个任务没有正常执行,而crond的邮件发送也失败,那么就检查一下mail的日志,看看是否是因磁盘空间不够而造成的。

  为了方便收集crond的日志信息,也可以将cornd错误输出和标准输出日志都指向自定义的日志文件:0 6 * * * root /root/test_file.sh >>/data/log/mylog.log 2 >&110.用shell或perl来分析日志

  我们在维护线上服务器时,并不是每台服务器的日志都需要查看,可以偏重于我们有需求的服务器。如果不太喜欢用Awstats来分析Nginx负载均衡器的日志,可以编写一段分析日志的脚本,下一节我将跟大家分享用shell编写的分析Nginx日志的脚本。


本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
9天前
|
Linux 应用服务中间件 PHP
性能工具之linux常见日志统计分析命令
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处。在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说“只有想不到的,没有它做不到的。
62 1
|
9天前
|
运维 监控 安全
在Linux系统中,认证日志
Linux系统中的认证日志对于安全监控和故障排查至关重要,常见的日志文件包括:`/var/log/auth.log`(Debian、Ubuntu)、`/var/log/secure`(RPM发行版)、`/var/log/lastlog`、`/var/log/faillog`、`/var/log/wtmp`和`/var/run/utmp`。这些文件记录登录尝试、失败、当前用户等信息。日志管理可通过文本编辑器、日志查看工具或`rsyslog`、`syslog-ng`等工具进行。注意日志位置可能因发行版和配置差异而变化,应确保日志文件的安全访问,并定期轮转归档以保护敏感信息和节省空间。
28 3
|
9天前
|
存储 监控 安全
Linux系统日志
【4月更文挑战第6天】Linux系统日志,关键用于记录系统状态和事件,包括内核、系统、安全和应用日志,助力管理员诊断问题、确保系统正常运行。日志管理涉及收集、分析、备份等,常用工具如rsyslog、systemd-journal和logrotate(用于日志轮转)。重视日志文件的存储管理,防止空间占用过多。
23 1
Linux系统日志
|
9天前
|
存储 监控 安全
Linux ContOS7 日志管理(rsyslog)
Linux ContOS7 日志管理(rsyslog)
|
9天前
|
监控 Linux 开发者
【专栏】`head`命令是Linux系统中用于快速查看文件开头内容的工具,常用于处理日志文件
【4月更文挑战第28天】`head`命令是Linux系统中用于快速查看文件开头内容的工具,常用于处理日志文件。基本用法包括指定查看行数(如`head -n 10 file.txt`)和与其他命令(如`grep`)结合使用。高级用法涉及动态查看日志、过滤内容、管道操作及在脚本中的应用。实际应用案例包括监控系统日志、排查错误和分析应用日志。使用时注意文件存在性、行数选择及权限问题。熟练掌握head命令能提升工作效率,结合其他工具可实现更多功能,助力Linux用户提升技能。
|
9天前
|
SQL 监控 安全
Linux&Windows 日志分析 陇剑杯 CTF
Linux&Windows 日志分析 陇剑杯 CTF
|
9天前
|
Linux
linux centos7查看linux的登录日志
linux centos7查看linux的登录日志
54 2
linux centos7查看linux的登录日志
|
9天前
|
关系型数据库 MySQL Linux
linux特定服务日志
Linux系统的服务日志在`/var/log`目录下,如系统日志(`/var/log/syslog`或`/var/log/messages`)、认证日志(`/var/log/auth.log`)、SSH日志(`/var/log/auth.log`或`/var/log/secure`)。Web服务器(Apache和Nginx)的访问和错误日志、MySQL错误日志、Postfix及Dovecot邮件服务器日志也在此处。日志位置可能因发行版和服务配置而异,不确定时可查服务配置或用`grep`搜索。使用`logrotate`可管理日志文件大小。
28 6
|
9天前
|
Ubuntu Linux
linux启动与关闭日志
Linux系统中的日志文件分布在多个位置,如`/var/log/syslog`或`/var/log/messages`(含系统事件)、`/var/log/boot.log`(启动详情,非所有发行版都有)、`/var/log/dmesg`(内核启动消息)、`/var/log/auth.log`(身份验证记录)和`/var/log/lastlog`(用户登录信息)。对于使用systemd的发行版,可利用`journalctl`命令进行日志查询。查看日志文件可借助文本编辑器或命令行工具如`tail`和`grep`。访问日志文件可能需要权限,可能需使用`sudo`或root用户。
45 0
|
存储 监控 网络协议
Linux日志分析工具之AWStats
AWStats是一款功能强大且功能强大的免费工具,可以图形方式生成高级Web,流媒体,ftp或邮件服务器统计信息。此日志分析器用作CGI或命令行, 并在几个图形网页中显示您的日志包含的所有可能信息。
Linux日志分析工具之AWStats