明明白白你的Linux服务器——日志篇

来源:互联网 发布:詹姆斯本赛季盖帽数据 编辑:程序博客网 时间:2024/06/04 20:09

原文地址:http://os.51cto.com/art/201007/211455.htm

一、配置syslog(gyl4802959同学撰写)

目前,linux依旧使用syslogd作为日志监控进程,对其进行必要的配置能减少很多麻烦,并且可更有效的从系统日志监控到系统的状态。理解并完善一个syslog的配置,对于系统管理员来说显得尤为重要。
/etc/syslog.conf根据如下的格式定义规则: facility.level action
设备.优先级 动作facility.level 字段也被称为seletor(选择条件),选择条件和动作之间用空格或tab分割开。
#号开头的是注释,空白行会自动跳过。

1、facility

facility定义日志消息的范围,其可使用的key有: auth -由 pam_pwdb 报告的认证活动。authpriv -包括特权信息如用户名在内的认证活动cron -与 cron 和 at 有关的计划任务信息。daemon -与 inetd 守护进程有关的后台进程信息。kern -内核信息,首先通过 klogd 传递。lpr -与打印服务有关的信息。mail -与电子邮件有关的信息mark - syslog内部功能用于生成时间戳news -来自新闻服务器的信息syslog -由 syslog 生成的信息user -由用户程序生成的信息uucp -由 uucp 生成的信息local0-local7 -与自定义程序使用

* 通配符代表除了 mark 以外的所有功能除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。

2、level级别

level定义消息的紧急程度。按严重程度由高到低顺序排列为: emerg -该系统不可用,等同panicalert -需要立即被修改的条件crit -阻止某些工具或子系统功能实现的错误条件err -阻止工具或某些子系统部分功能实现的错误条件,等同errorwarning -预警信息,等同warnnotice -具有重要性的普通条件info -提供信息的消息debug -不包含函数条件或问题的其他信息none -没有重要级,通常用于排错

* 所有级别,除了none其中,panic、error、warn均为旧的标识符,不再建议使用。
在定义level级别的时候,需要注意两点: 1)优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级;

低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg等消息。(除非使用=号定义)

3、selector选择条件

通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。可以使用分号“;”同时定义多个选择条件。也支持三个修饰符: * - 所有日志信息= - 等于,即仅包含本优先级的日志信息! - 不等于,本优先级日志信息除外

4、action动作

由前面选择条件定义的日志信息,可执行下面的动作: file-指定日志文件的绝对路径terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2@host -远程的日志服务器username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径※注意,不能通过“|/var/xxx.sh”方式导向日志到其他脚本中处理。

5、举例

例如: *.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages#把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件中。mail,news.=info /var/adm/info#把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入。mail.*;mail.!=info /var/adm/mail#把邮件的除通知性消息外都写入mail文件中。mail.=info /dev/tty12#仅把邮件的通知性消息发送到tty12终端设备*.alert root,joey#如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们*.* @finlandia#把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)※注意:每条消息均会经过所有规则的,并不是唯一匹配的。

也就是说,假设mail.=info信息通过上面范例中定义的规则时,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。

二、messages日志

首先说下我们最关注的系统/var/log/messages,这东东不仅是咱们服务器的系统日志,很多时候它也做了许多服务的日志,这也是它被称为杂货铺的原因,值得重点关注,大家一般都喜欢用以下命令看最后十条日志

tail -n10 /var/log/messages

其实还可以将一段日志保存成文件,正用练下自己的awk、sed和grep水平;或者直接用vim来查看,这也是算是一种经验之谈吧。我以前配置bind的主从复制,有时因为权限的原因报错;这时可以在一台报错的服务器上用命令tail -f /var/log/messages实时查看服务器的变化情况,从中查找错误的蛛丝马迹;事实证明,效果很好,而且用于lvs+keepalived的排错效也不错,其它事例依此类推。

三、secure的用法

/var/log/secure:记录登入系统存取数据的文件,例如 pop3, ssh, telnet, ftp 等都会被记录,我们可以利用此文件找出不安全的登陆IP。

四、记录登陆者的数据

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

五、lastlog记录系统时间

/var/log/lastlog : 记录每个使用者最近签入系统的时间, 因此当使用者签入时, 就会显示其上次签入的时间,您应该注意一下这个时间, 若不是您上次签入的时间, 表示您的帐号可能被人盗用了。 此档可用 /usr/bin/lastlog 指令读取(Freebsd下为/usr/sbin/lastlogin)。

六、用dmesg查看启动消息 

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

七、服务器的邮件日志

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

八、日志文件的专业工具

像系统的一些服务,比如Apache、Nginx、Squid、还有mysql,都有自己的特定的日志文件,由于格式比较复杂,也推荐用专业工具,如Awstats、Cacti来分析,现在用cacti用得比较多是用它分析Nginx负载均衡器的一段时间的并发情况。

九、输出Iptables日志到一个指定的文件(logboy同学撰写)

Iptables的man参考页中提到: 我们可以使用Iptables在Linux内核中建立, 维护和检查IP包过滤规则表。几个不同的表可能已经创建, 每一个表包含了很多内嵌的链, 也可能包含用户自定义的链。Iptables默认把日志信息输出到/var/log/messages文件。不过一些情况下你可能需要修改日志输出的位置。下面向大家介绍如何建立一个新的日志文件/var/log/iptables.log。通过修改或使用新的日志文件, 你可以创建更好的统计信息或者帮助你分析网络攻击信息。

(1). Iptables默认的日志文件

例如, 如果你输入下面的命令, 屏幕将显示/var/log/messages文件中的Iptables日志信息:

# tail -f /var/log/messages

输出:

Oct 4 00:44:28 debian gconfd (vivek-4435):Resolved address "xml:readonly:/etc/gconf/gconf.xml.defaults"to a read-only configuration source at position 2Oct 4 01:14:19 debian kernel:IN=ra0 OUT= MAC=00:17:9a:0a:f6:44:00:08:5c:00:00:01:08:00SRC=200.142.84.36 DST=192.168.1.2LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=18374DF PROTO=TCP SPT=46040 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 

(2).输出Iptables日志信息到一个指定文件的方法

打开你的/etc/syslog.conf文件:

# vi /etc/syslog.conf

在文件末尾加入下面一行信息:

kern.warning /var/log/iptables.log

保存和关闭文件。

重新启动Syslogd(如果你使用Debian/Ubuntu Linux):

# /etc/init.d/sysklogd restart

另外, 使用下面命令重新启动Syslogd(如果你使用Red Hat/Cent OS/Fedora Core Linux):

# /etc/init.d/syslog restart现在确认你的Iptables使用了log-level 4参数(前面有一个log-prefix标志)。例如:

# DROP everything and Log itiptables -A INPUT -j LOG –log-level 4iptables -A INPUT -j DROP

举一个例子, 丢弃和记录所有来自IP地址65.55.11.2的连接信息到/var/log/iptables.log文件。

iptables -A INPUT -s 64.55.11.2 -m limitlimit 5/m --limit-burst 7 -j LOGlog-prefix ‘** HACKERS **’ --log-level 4iptables -A INPUT -s 64.55.11.2 -j DROP 

命令解释:

log-level 4: 记录的级别. 级别4为警告(warning)。

log-prefix ‘*** TEXT ***’: 这里定义了在日志输出信息前加上TEXT前缀。TEXT信息最长可以是29个字符, 这样你就可以在记录文件中方便找到相关的信息。

现在你可以通过/var/log/iptables.log文件参考Iptables的所有信息:

# tail -f /var/log/iptables.log

十、日志轮询

再说下日志的轮询,Linux的日志轮询机制做得相当好,当然我们也可以通过配置/etc/logrotate.conf来修改它,有兴趣的同学可参考鸟哥的文章,这里就不作详细介绍了。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两个月的小孩子咳嗽怎么办 5个月宝宝吃奶少怎么办 26岁的1型糖尿病怎么办 睡前吃得太饱怎么办 胰岛素2小时>300怎么办 血清c肽测定高怎么办 体测蛋白质和骨骼肌偏高怎么办 半个月重了十斤怎么办 月经停了2个月怎么办 在练腹肌中腹痛怎么办 越练肌肉越肥怎么办 喘不过气来 心闷怎么办 被气得喘不过气怎么办 健身完头晕想吐怎么办 吃多了反胃头晕怎么办 合同未约定退货货物积压怎么办 运动内衣把胸压平怎么办 经常穿皮鞋脚臭怎么办 买衣服胸围小了怎么办 内衣下胸围太紧怎么办 穿文胸衣服要开怎么办 运动内衣的拉链老来怎么办 胸罩没干急着穿怎么办 跑步时大腿很痒怎么办 胖大腿内侧磨伤怎么办 内衣围带过松怎么办 内衣底围特别紧怎么办 全棉衣服上的油怎么办 高腰牛仔裤腰大了怎么办 新买衣服太硬怎么办 棉麻的衣服发硬怎么办 新衣服太硬怎么办雪纺 衣服硬的咯人怎么办 脖子上的勒痕怎么办 腿上容易出现勒痕怎么办 身上总有内裤印怎么办 内裤穿出了印怎么办 饮水机热水口不出水怎么办 饮水机热水口出水小怎么办 新饮水机热水口出水小怎么办 白钢水桶中间支撑怎么办