Linux日志管理和查找

linux 日志和目录简介

日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。
在Linux系统中,有三个主要的日志子系统:
连接时间日志–由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和 utmp文件,使系统管理员能够跟踪谁在何时登录到系统。进程统计–由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志–由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。 常用的日志文件如下:
access-log 纪录HTTP/web的传输
acct/pacct 纪录用户命令
aculog 纪录MODEM的活动
btmp 纪录失败的纪录
lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录
messages 从syslog中记录信息(有的链接到syslog文件)
sudolog 纪录使用sudo发出的命令
sulog 纪录使用su命令的使用
syslog 从syslog中记录信息(通常链接到messages文件)
utmp 纪录当前登录的每个用户
wtmp 一个用户每次登录进入和退出时间的永久纪录
xferlog 纪录FTP会话
utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键–保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp. 7。
每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。
下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。
2. 具体命令
wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。
who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示

日志查找和统计

nginx日志输出如果有关键字total avg=number 我们可以统计 sum(number) 怎么统计

#修改Nginx  request_time 秒为单位
http {
log_format  main_log  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent $request_time "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
     
access_log  logs/access.log  main_log;    

cat obs-tool.log |grep ‘total avg’|awk ‘{print $18}’ 统计出 673 然后相除
cat obs-tool.log |grep ‘total avg’|awk ‘{print $12}’ 统计出 3926736
cat obs-tool.log |grep ‘total avg’|awk ‘{a+=$18;b+=$12} END {print b/1024/1024/a*1000}’

OK! 写出脚本:
val=cat obs-tool.log |grep 'total avg'|awk '{a+=$18;b+=$12} END {print b/1024/1024/a*1000}' uni=" MB/S" echo valvalvaluni

2 求平均值: 755.1935483870968 列相加 求平均
cat obs-tool.log |grep ‘total avg’|awk ‘{a+=$22} END{print a/NR}’
用 grep ‘total avg’|awk ‘{a+=$22} END{print a/NR}’ ./obs-tool.log 也是可以的。

cat access.log |grep ‘200’|awk ‘{if ($10>2000)print $7,$10}’

#打印多个 
cat access.log |grep '200'|awk '{print $7,$10}' 
cat error.log  |grep 'timed out'|awk '{if (2>1)++sum} END {print sum} '

--统计时间大于2秒
cat access.log  |grep '200'|awk '{if ($11>2)print $7,$10}' 
cat access.log  |grep '200'|awk '{if ($11>2 )print $7,$10}' 

--按模块
cat access.log  |grep 'fws-papercirc'|awk '{if ($11>2)print $7,$10}' 
--按模块
cat access.log  |grep 'fws-bd'|awk '{if ($11>2)print $7,$10}' 

--按模块
cat access.log  |grep 'fws-upc'|awk '{if ($11>2)print $7,$10}' 
cat access.log  |grep 'fws-billing'|awk '{if ($11>2)print $7,$10}' 
cat access.log  |grep 'fws-file'|awk '{if ($11>2)print $7,$10}'

--统计次数
cat access.log  |grep 'fws-papercirc'|awk '{if ($11>2) ++sum} END {print sum}'
cat access.log  |grep 'fws-bd'|awk '{if ($11>2) ++sum} END {print sum}'
cat access.log  |grep 'fws-upc'|awk '{if ($11>2) ++sum} END {print sum}'
cat access.log  |grep 'fws-billing'|awk '{if ($11>2) ++sum} END {print sum}'

nginx日志保留10天配置

logrotate 是一个 Linux 下的日志文件管理工具,它可以自动旋转、压缩和删除日志文件。你可以通过配置一个适当的 logrotate 脚本来管理 Nginx 的日志文件。

sudo apt-get install logrotate  # Debian/Ubuntu   一般都是已经安装了的
sudo yum install logrotate      # CentOS/RHEL
#创建一个新的配置文件 (如果已存在,则编辑该文件)
/etc/logrotate.d/nginx

/var/log/nginx/*log {
    daily
    rotate 30
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

#rotate 30 表示保留30个日志文件
#-f选项来强制执行 logrotate
修改配置后执行 logrotate -f /etc/logrotate.d/nginx   

mysql日志分析

mysqldumpslow
该工具是慢查询自带的分析慢查询工具,一般只要安装了mysql,就会有该工具;

mysqldumpslow /usr/app/mysqld-app-slow.log 
指令用法:
mysqldumpslow -help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
  --verbose    verbose
  --debug      debug
  --help       write this text to standard output
  -v           verbose
  -d           debug
  -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default
                al: average lock time
                ar: average rows sent
                at: average query time
                 c: count
                 l: lock time
                 r: rows sent
                 t: query time  
  -r           reverse the sort order (largest last instead of first)
  -t NUM       just show the top n queries
  -a           don't abstract all numbers to N and strings to 'S'
  -n NUM       abstract numbers with at least n digits within names
  -g PATTERN   grep: only consider stmts that include this string
  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
               default is '*', i.e. match all
  -i NAME      name of server instance (if using mysql.server startup script)
  -l           don't subtract lock time from total time

常见用法

mysqldumpslow -s c -t 10 /var/run/mysqld/mysqld-slow.log # 取出使用最多的10条慢查询
mysqldumpslow -s t -t 3 /var/run/mysqld/mysqld-slow.log # 取出查询时间最慢的3条慢查询
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log # 得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s r -t 10 -g 'left join' /var/run/mysqld/mysqld-slow.log # 按照扫描行数最多的
注意: 使用mysqldumpslow的分析结果不会显示具体完整的sql语句,只会显示sql的组成结构;
假如: SELECT * FROM sms_send WHERE service_id=10 GROUP BY content LIMIT 0, 1000;
mysqldumpslow来显示
Count: 1  Time=1.91s (1s)  Lock=0.00s (0s)  Rows=1000.0 (1000), vgos_dba[vgos_dba]@[10.130.229.196]SELECT * FROM sms_send WHERE service_id=N GROUP BY content LIMIT N, N
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芳心村

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值