linux笔记----日志文件

来源:互联网 发布:包络定理知乎 编辑:程序博客网 时间:2024/05/29 02:00
日志的作用:
用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于解决系统故障

file:///tmp/ct_tmp/1.png
[root@vm conf.d]# cat /etc/rsyslog.conf |grep -v ^#|grep -v ^$
......

*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
设备类别.日志级别 消息发送位置
------------------
设备类型--------------------------------------------------------------------
Authpriv 主要与认证有关的机制,例如 login, ssh, su;
cron 就是计划任务 cron/at 等产生信息记录的地方;
daemon 与各个 daemon 有关的信息;
kern 就是核心 (kernel) 产生信息的地方;
mail 只要与邮件收发有关的信息纪录都属於这个;
syslog 就是 syslogd 本身产生的服务;
local0 ~ local7 自定义程序使用,如local5为ssh功能;
news 与新闻群组服务器有关的东西;
-------------------
日志消息的级别--------------------------------------------------------------
0 EMERG(紧急):会导致主机系统不可用的情况 ------emergency
1 ALERT(警告):必须马上采取措施解决的问题
2 CRIT(严重):比较严重的情况 -------critical
3 ERR(错误):运行出现错误 ------error
4 WARNING(提醒):可能会影响系统功能的事件
5 NOTICE(注意):不会影响系统但值得注意
6 INFO(信息):一般信息
7 DEBUG(调试):程序或系统调试信息等
----------------
配置文件:/etc/rsyslog.conf语法-------------------------------------------
设备类别[连接符]日志级别
. :记录大于等于后面的级别日志
.=:只记录等于后面的级别日志
.!=:只记录不等于后面的级别日志
-----------------
消息发送位置--------------------------------------------------------------------
本地文件:通常就是文件的绝对路径
打印机:例如 /dev/lp0 这个打印机装置
用户名称:显示给用户
远程主机:例如 @202.100.100.1
*:所有在线的人
----------------
系统日志保存位置----------------------------------------------------------------
默认位于:/var/log 目录下
主要日志文件介绍
内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/maillog
错误登录日志:/var/log/faillog
---------------
相关服务的日志文件-----------------------------------------------------------
由相应的应用程序独立进行管理
Web服务:/var/log/
httpd/
access_log、error_log
代理服务:/var/log/squid/
access.log、cache.log、squid.out、store.log
FTP服务:/var/log/xferlog
---------------
分析工具------------------------------------------------------------------------
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
用户登录分析
who、w、user、last、ac、lastlog
---------------
用户日志文件--------------------------------------------------------------------
保存了用户登录、退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件
---------------
日志管理策略------------------------------------------------------------------
1,及时作好备份和归档
2,控制日志访问权限
日志中可能会包含各类敏感信息,如账户、口令等
3,集中管理日志
使用日志服务器便于日志的统一收集、整理和分析 杜绝日志信息的意外丢失、恶意篡改或删除
--------------
日志轮转功能-------------------------------------------------------------------
方便有效的管理日志,防止日志文件过大
日志轮转命令:logrotate
配合一个配置文件,再加上计划任务,每天执行一次来达到循环的效果
日志的轮转对日志的维护有着很重要的意义,可以作为一种备份策略,又可以方便管理员查阅日志
日志轮转主配置文件:/etc/logrotate.conf
logrotate -v /etc/logrotate.conf
-f:强制轮转

[root@vm ~]# tail -f /var/log/messages
-------动态监控查看日志文件
Jul 20 13:08:47 vm yum[2957]: Installed: tree-1.5.3-2.el6.i686 因为我刚才安装了tree命令

[root@localhost yum.repos.d]# service httpd restart
-----启动httpd服务
停止 httpd: [确定]
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[确定]
[root@mbr yum.repos.d]#
vim /etc/httpd/conf/httpd.conf ----- 修改276行的配置
ServerName www.feng.com:80
[root@mbr yum.repos.d]# service httpd restart
[root@localhost yum.repos.d]# iptables -F

====
httpd默认网页文件放置在/var/www/html/index.html
[root@localhost yum.repos.d]# cd /var/www/html/
[root@localhost html]# vim index.html
----可以编辑简单的网页,用ip可以登录
<html>
<title>music festival</title>
<body>
<h1>zhang man yu</h1>
<a href="meinv/zhangmanyu.html"> 张曼玉</a>
<a href=download >file download </a>
<font color=red >strawberry music festival</font>
</body>
</html
====
httpd默认日志文件放在/var/log/httpd/*下面,使用firefox 访问网站会产生日志
[root@localhost html]# cd /var/log/httpd/
[root@localhost httpd]# ls
access_log error_log
==access_log:记录正常的访问日志
==error_log :记录错误的访问日志

[root@localhost httpd]# tail -2 access_log 查看正确访问的日志文件的内容,可知谁访问了该网站
10.0.0.122 - - [21/Jul/2013:03:26:03 +0800] "GET / HTTP/1.1" 200 32 "-" "Mozilla/5.0 (X11; Linux i686; rv:10.0.5) Gecko/20120601 Firefox/10.0.5"
10.0.0.149 - - [21/Jul/2013:03:31:49 +0800] "GET / HTTP/1.1" 200 32 "-" "Mozilla/5.0 (X11; Linux i686; rv:10.0.5) Gecko/20120601 Firefox/10.0.5"
[root@vm html]# tail /var/log/httpd/error_log 当不能访问网站时,可以查看/var/log/httpd/error_log文件即可
[Sat Jul 20 13:26:07 2013] [error] [client 10.0.0.64] (13)Permission denied: file permissions deny server access: /var/www/html/index.html
[root@localhost html]# chmod 600 index.html ----修改权限
修改默认文件的权限为600,则访问时,会报出如下错误:
file:///tmp/ct_tmp/2.png
firefox访问,出现404错误 ------原因:链接不存在, 找不到文件或目录。
-------------------
统计出访问量前3名的ip,然后使用iptables将他们拒绝。---------------------
[root@log httpd]# cat deny_ip.sh
cat /var/log/httpd/access_log |awk '{print $1}'|sort -n|uniq -c|sort -nr|head -3|awk '{print $2}' >/tmp/deny_ip.txt
/sbin/iptables -F
for i in `cat /tmp/deny_ip.txt`
do
/sbin/iptables -I INPUT -s $i -p tcp --dport 80 -j DROP
done
---------------
如果想显示网站的内容,供别人下载,步骤---------------------------------------
要出现如下效果,需进行如下操作:
file:///tmp/ct_tmp/3.png
1.建议先删除/var/www/html/下的index.html文件,加入相关文件
[root@vm html]# rm -rf index.html
[root@vm html]# cp /etc/passwd .
[root@vm html]# cp /etc/hosts .
[root@vm html]# ll
total 12
-rw-r--r--. 1 root root 194 Jul 20 13:35 hosts
-rw-r--r--. 1 root root 1825 Jul 20 13:35 passwd
-rw-r--r--. 1 root root 23 Jul 20 13:29 tt.php
[root@vm html]# pwd
/var/www/html
2.修改配置文件,编辑/etc/httpd/conf.d/welcome.conf文件,注释如下几行
[root@vm html]# cd /etc/httpd/conf.d/
mod_dnssd.conf README welcome.conf
[root@vm conf.d]# vim welcome.conf
[root@vm conf.d]# cat welcome.conf
# This configuration file enables the default "Welcome"
# page if there is no default index page present for
# the root URL. To disable the Welcome page, comment
# out all the lines below.
#
#<LocationMatch "^/+$"> 注释
# Options -Indexes
# ErrorDocument 403 /error/noindex.html
#</LocationMatch>
3.需再次启动httpd服务
[roo
t@vm ~]# service httpd restart-------启动httpd服务


[root@vm ~]# users 显示当前有多少用户

root root roo
t
[root@teacher vnc]#
who --------查看当前谁登录过系统
用户名 终端
root tty1 2013-07-22 08:01 (:0)
root pts/0 2013-07-22 08:02 (:0.0)
root pts/1 2013-07-22 08:04 (:3.0)

tty 开机进入系统会产生,控制终端
pts/1 打开终端产生,虚拟终端

[root@teacher vnc]#
w --------显示当前系统中每个用户和它所运行的进程信息
当前时间 开机多久了 登录的用户数 cpu的1,5,15分钟的平均负载
15:15:30 up 7:15, 11 users, load average: 0.00, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 - 15:15 9.00s 0.00s 0.00s -bash
root tty1 :0 08:01 ? 60.32s 60.32s /usr/b
root pts/0 :0.0 08:02 7:13m 18:56 0.00s bash
root pts/1 :3.0 08:04 3:53m 1:12 0.03s vim /e
root pts/2 10.0.0.185 08:47 6:27m 0.00s 0.00s -bash
from :0 0号桌面 3.0 3号桌面
from 10.0.0.185 从远程机器连接过来的

-----------
显示开机多长时间----------------------------------------------------
[root@teacher vnc]# uptime
15:19:30 up 7:19, 11 users, load average: 0.00, 0.02, 0.00

[root@localhost ~]# lastlog 查看最后一次登录系统用户的情况
Username Port From Latest
root pts/0 10.0.0.149 Sun Jul 21 05:11:45 +0800 2013
bin **Never logged in**
daemon **Never logged in**
............................
last ------查看最近那些用户登录过系统
lastlog ------查看所有的用户是否登录过系统


想查看某个时期用户使用过的命令,需要开启进程统计功能
[root@localhost ~]# accton /var/account/pacct 开启统计功能
[root@localhost ~]# accton 关闭
[root@localhost ~]# lastcomm --user root 根据用户来分析

--------------
日志记录的一般格式----------------------
[root@vm conf.d]# tail -5 /var/log/messages
Jul 20 13:54:30 vm rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="3511" x-info="http://www.rsyslog.com"] start
时间标签 主机名 子系统名(进程) 消息字段(相关内容)


日志服务器的部署
file:///tmp/ct_tmp/4.png
服务器端
1.修改配置文件允许别的机器发送日志过来
[root@localhost httpd]# vim /etc/rsyslog.conf
# Provides UDP syslog reception 开启udp方式接收日志,打开514端口,把下面蓝色部分的#注释去掉
$ModLoad imudp
$UDPServerRun 514


# Provides TCP syslog reception 开启tcp方式接收日志,打开514端口,把下面蓝色部分的#注释去掉
$ModLoad imtcp
$InputTCPServerRun 514

2.刷新rsyslog服务,让新修改的配置生效
[root@localhost httpd]# service rsyslog restart
关闭系统日志记录器: [确定]
启动系统日志记录器: [确定]
[root@log_server ~]#
lsof -i:514 ----查看那个进程监听514号端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1446 root 2u IPv4 12595 0t0 TCP *:shell (LISTEN)
rsyslogd 1446 root 3u IPv4 12589 0t0 UDP *:syslog
rsyslogd 1446 root 4u IPv6 12590 0t0 UDP *:syslog
rsyslogd 1446 root 6u IPv6 12596 0t0 TCP *:shell (LISTEN)
3.关闭防火墙和selinux
[root@localhost httpd]# iptables -F
[root@localhost httpd]# getenforce
Enforcing
[root@localhost httpd]# setenforce 0
[root@localhost httpd]# getenforce
Permissive
[root@log_server ~]# chkconfig iptables off 设置iptables服务开机不启动
=====修改客户端的配置
[root@station ~]# vim /etc/rsyslog.conf 编辑客户端日志配置文件,添加*.* @@10.0.0.137:514
意思是客户端的所有日志文件都会发送到服务器端相应的位置
添加下面参数:
*.* @@10.0.0.137:514

[root@station ~]#
service rsyslog restart ---刷新服务
===
主动记录日志文件---logger命令
----从命令行直接向系统日志文件写入一行信息
- i 记录进程号
-t 表示每个记录都加上后面的标签***
-p 表示记录的级别和设备
[root@vm ~]# ping 10.0.0.253|logger -it "xiaohei" -p cron.info
(设备类别.日志级别 )

-------在客服端做测试,在服务器端查看----------
1.在客户端做操作
[root@teacher httpd]# ping -c3 10.0.0.190 |logger -it "test" -p cron.info
2.在服务器看日志
[root@localhost httpd]# tail -f /var/log/messages
[root@localhost httpd]# netstat -ntplu|grep :514 查看打开514端口的进程id和进程号
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 31315/rsyslogd
tcp 0 0 :::514 :::* LISTEN 31315/rsyslogd
udp 0 0 0.0.0.0:514 0.0.0.0:* 31315/rsyslogd
udp 0 0 :::514 :::* 31315/rsyslogd
======
日志轮转 ----方便有效的管理日志,防止日志文件过大
主配置文件:/etc/logr
otate.conf(全局)
次要的轮转配置文件
/etc
/logrotate.d目录下(局部)
日志轮转的过程:
file:///tmp/ct_tmp/5.png
[root@teacher log]# cat /etc/logrotate.conf |grep -v ^#|grep -v ^$ -----查看主配置文件的内容
weekly 每周一次
rotate 4 保留4个备份的文件
create 创建新的空的日志文件
dateext 以日期做后缀
compress 对轮转文件进行压缩
include /etc/logrotate.d 次要配置文件都存放在次目录下(单独的配置的文件)
/var/log/wtmp {
monthly
create 0664 root utmp 创建文件的时候,指定权限和属组、属主
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
没有单独的日志文件,在轮转的时候,参考/etc/logrotate.conf里的配置
同时如果有单独的日志文件,但是里面有些配置没有,也会参考主配置文件里的内容。---》单独配置文件里没有的配置项,参考主配置文件
公共的配置项,建议写到主配置文件里,各个日志文件根据自身的特点,可以单独写一些配置。

0 0
原创粉丝点击