Linux 日志分析脚本
查看 apache 进程
ps aux | grep httpd | grep -v grep | wc -l
查看 80 端口的 tcp 连接
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
用 tcpdump 嗅探 80 端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
查看某一时间段的 ip 连接
grep "2014:0[7-8]" www20110519.log | awk '{print $2}' | sort | uniq -c | sort -nr | wc -l
当前 WEB 服务器中联接次数最多的 20 条 ip 地址
netstat -ntu | awk '{print $5}' | sort | uniq -c | sort -n -r | head -n 20
查看日志中访问次数最多的前 10 个 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
查看最近访问量最高的文件
cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
cat access.log | grep '2015' | awk '{print $7}'| sort | uniq -c | sort -nr | head -200
列出传输时间超过 30 秒的文件
cat access_log|awk '($NF> 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
列出最最耗时的页面 (超过 60 秒的) 的以及对应页面发生次数
cat access_log |awk '($NF> 60 && $7~//.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
查找请求数最多的 20 个 IP(常用于查找攻来源)
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
用 tcpdump 嗅探 80 端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
查找较多 time_wait 连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
找查较多的 SYN 连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
分析日志文件下 2012-05-04 访问页面最高的前20个URL并排序
cat access.log |grep '04/May/2012′| awk '{print $11}'|sort|uniq -c|sort -nr|head -20
查询受访问页面的 URL 地址中 含有 www.abc.com 网址的 IP 地址
cat access_log | awk '($11~/\www.abc.com/){print $1}'|sort|uniq -c|sort -nr
访问次数最多的文件或页面, 取前 20 及统计所有访问 IP
cat access.log|awk '{print $11}'|sort|uniq -c|sort -nr|head -20
awk '{print $1}' access.log |sort -n -r |uniq -c|wc -l
查询日志中时间段内的情况
cat wangsu.log | egrep '06/Sep/2012:14:35|06/Sep/2012:15:05′ |awk '{print $1}'|sort|uniq -c|sort -nr|head -10
列出传输最大的几个 exe 文件(分析下载站的时候常用)
cat access.log |awk '($7~/\.exe/){print $10" " $1 " " $4 " " $7}'|sort -nr|head -20
列出输出大于 200000byte(约 200kb) 的 exe 文件以及对应文件发生次数
cat access.log |awk '($10> 200000 && $7~/\.exe/){print $7}'|sort -n|uniq -c|sort -nr|head -100
如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log |awk '($7~/\.php/){print $NF" " $1 " " $4 " " $7}'|sort -nr|head -100
列出最最耗时的页面 (超过 60 秒的) 的以及对应页面发生次数
cat access.log |awk '($NF> 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
列出传输时间超过 30 秒的文件
cat access.log |awk '($NF> 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
统计网站流量(G)
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
统计 404 的连接
awk '($9 ~/404/)' access.log | awk '{print $9,$7}' | sort
统计 http status
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
每秒并发:(显示前十)
cat access.log | awk '{if($9~/200|206|404/)COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}'|sort -k 2 -nr|head -n 10
带宽统计
cat access.log |awk '{if($7~/GET/) count++}END{print"client_request="count}'
cat access.log |awk '{BYTE+=$11}END{print"client_kbyte_out="BYTE/1024"KB"}'
当天 ip 连接数最高的 ip 都在干些什么:
cat access.log | grep "10.0.21.17" | awk '{print $11}' | sort | uniq -c | sort -nr | head -n 10
查看 Apache 的并发请求数及其 TCP 连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
其他查看 tcp 连接状态:
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
sort
sort 命令将逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上。如果不指定文件或者使用 “一”
表示文件,则排序内容来自标准输入。排序比较是依据从输入文件的每一行中提取的一个或多个排序关键字进
行的。排序关键字定义了用来排序的最小的字符序列。
选项:
-nr 按照数字进行倒叙排序。
-m 对己经排好序的文件统一进行合并,但不做排序。
-c 检查给定的文件是否己排好序,若没有,则显示出错消息,不做排序。
-u 与 -c 选项一起用,严格地按顺序检查;否则,对排序后的重复行只输出第一行。
-o 文件名 将排序输出放到该文件名所指定的文件中。如果该文件不存在,则创建一个新文件。
改变排序规则的选项主要有:
-d 按字典顺序排序,比较时仅考虑空白符和字母数字符。
-f 忽略字母的大小写。
-i 忽略非打印字符。
-M 规定月份的比较次序是(未知)<”JAN”<”FEB”<…<”DEC”。
-r 按逆序排序。默认排序输出是按升序排序的。
-k n1[,n2] 指定从文本行的第 n1 字段开始至第 n2 字段(不包括第 n2 字段)中间的内容作为排序关键字。如果没有 n2,则关键字是从第 n1 个字段到行尾的所有字段。n1 和 n2 可以是小数形式。如 ”x.y”,x 表示第 x 字段,y 表示第 x 字段中的第 y 个字符。字段和字符的文职都是从 1 开始算起的。
-b 比较关键字时忽略前导的空白符(空格或制表符)。
-t 字符将指定的 “字符” 作为字段间的分隔符。
uniq[选项] 文件
说明:uniq 命令读取输入文件,并比较相邻的行,去掉重复的行一行。该命令加工后的结果写到输出文件中。
输入文件和输出文件必须不同。用 “一” 表示,则从标准输入上读取。
选项:
-c 显示输出时,在每行的行首加上该行在文件中出现的次数。合并重复的行,并记录重复次数。
-d 只显示重复行。
-f –skip-fields=N 忽略比较前 N 个字段。
-s –skip-chars=N 忽略比较前 N 个字段。
-u 只显示文件中不重复的行。

参考网页:http://www.uulucky.com/?p=10367
Linux 日志分析脚本的更多相关文章
- linux常用的日志分析脚本
linux实用的日志分析脚本 日志分析 随意的tail一个access_log文件,下面是一条经典的访问记录 /Dec/::: +] “GET /query/trendxml/district/tod ...
- linux系统web日志分析脚本
linux系统web日志分析这方面工具比较多,比如logwatch或awstats等使用perl语言开发,功能都非常强大.但这些软件都需要进行一些配置,很多朋友往往在技术方面没有投入太多力量,即便参照 ...
- linux实用的日志分析脚本
日志分析 随意的tail一个access_log文件,下面是一条经典的访问记录 218.19.140.242 – - [10/Dec/2010:09:31:17 +0800] “GET /query/ ...
- 《Unix/Linux日志分析与流量监控》书稿完成
<Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...
- 有关linux日志分析的详细介绍
linux的日志文件可以帮助我们了解系统所处的状态,比如查出哪些用户有登入,及其它安全相关的一些问题. linux下的日志分析. 以下内容,部分参考了:探讨 linux 日志分析 这篇文章. 1.了解 ...
- Linux 日志分析工具(logwatch)安装及使用
Linux 日志分析工具(logwatch)安装及使用 日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态.但是日志管理又是一项非常枯燥的工作,如果需要管理 ...
- MySQL 数据库慢查询日志分析脚本
这个脚本是基于pt-query-digest做的日志分析脚本,变成可视化的格式. 目录结构是 ./mysql_data/log./mysql_data/log/tmp./slow_query # co ...
- Nginx日志分析脚本
目录 一.简介 二.脚本 一.简介 运维工作是一个比较复杂的工作,有时候面对上万条的日志,如何作分析?难道一条条的分析? 这估计看两眼就要打哈欠了吧?聪明的人会选择脚本,这就是为什么现在提倡自动化运维 ...
- Linux 日志分析工具之awstats
一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...
随机推荐
- c++入门之 再话类
对于类,其结构并不难,但要理解其设计思想也并不容易,在此,我们可以通过下面的代码进一步理解和使用类: # ifndef VECTOR_H_ # define VECTOR_H_ # include & ...
- java中的代码块是什么意思,怎么用
代码块是一种常见的代码形式.他用大括号“{}”将多行代码封装在一起,形成一个独立的代码区,这就构成了代码块.代码块的格式如下: 方法/步骤 普通代码块:是最常见的代码块,在方法里用一对“{ ...
- Windows Docker 安装
win7.win8 .win10等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolb ...
- Mac 在terminal 上用命令打开sublime
Step1. 安装Sublime Text编辑器 可直接到以下网址下载dmg安装文件: Sublime Text 3 Step2. 添加命令行别名 打开用户配置文件 vim ~/.bash_profi ...
- MySQL 的两个特殊属性 unsigned与 zerofill
1 unsigned unsigned 就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32.看起来unsigned ...
- Windows 机器上面同时安装mysql5.6 和 mysql5.7 的方法
1. 自己遇到的两个坑: . mysql 登录的时候 需要使用-P 来指定端口号 不然默认走 呢 . mysql 5.6 和 mysql 5.7 更改用户密码的命令不一样.. 我这边浪费了很长时间: ...
- restful 规范(建议)
需求:开发cmdb,对用户进行管理. 做前后端分离,后端写api(URL),对用户表进行增删改查,应该写四个URL(还要给文档(返回值,返回,请求成功,干嘛,失败,干嘛)),然后分别写视图函数. ht ...
- 【转】Java基础——容器分类
Java容器可以说是增强程序员编程能力的基本工具,本系列将带您深入理解容器类. 容器的用途 如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构. 我们可以通过创建引用来持有对象,如 ...
- 用junit对java代码进行测试,需要注意
1.用@Test注解的方法必须没有返回值,返回值类型无:void 2.用@Test注解的方法必须没有参数.
- 读懂掌握 Python logging 模块源码 (附带一些 example)
搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...