常见的日志分析工具,功能太少,维度太少,无法定制,只能对一些特定格式的日志进行分析,效率低下,过大的日志需要很长时间或者根本无法分析。很多日志分析工具也只能一次性列出所有的数据,而不能看出一段时间内数据的变化情况,日志分析要自动化,学习shell的过程中,也考虑了一下使用shell自动化分析日志的问题。
详细的shell处理日志时的命令可以参考 使用shell进行日志分析
1.自动运行 shell脚本只需要把所有命令放到一个文本之中就可以了,windows和linux都是能够实现sh脚本的定时运行的(具体方法请自行搜索)
2.日志获取 2.1shell是可以登录ftp下载文件的,只需要将已下载的日志文件名存储到固定的文本之中,下载时比对已经存在的文件名,下载新的日志文件就行了。具体步骤就是 登陆ftp--->进入固定目录----->获取所有文件名----->对比出新文件名------>下载。
3.数据存储 把需要长期监控的数据放到csv文件中,每日一行,用excel打开或者另存为excel后可以很方便的生成图表。(当然也可以存数据库,推荐用csv,简单有效)
4.数据获取 比较简单的方法就是需要的每个数据写一条命令去获取,第一条数据直接存储(用>),后面的追加(用>>)到同一个文本文件中,然后再把每天的数据,添加到固定的csv文件末尾 (awk '{printf $0}' 可以直接把竖排数据变横排)
5.周报问题(如果和日报需要的数据不同) 单独新建一个7天和30天固定运行一次的脚本,自动分析前七天和前30天的所有日志。从2中存储的已下载日志文件名的文本中,可以提取最后7天或者30天的日志文件名,然后进行分。析(和每日的日志分析相比,就是多了提取前7天的日志文件名,然后由cat 1变成了cat 1,2,3,4,5,6,7) 以上在个人的windows系统上也是比较容易实现的,以后每天就可以很方便收集网站的运行数据了。
补充: Csv格式举例 日期 | Bd抓取数 | xx目录抓取数 | Spider 404 | Xxxx | date | 10000 | 1000 | 100 | 1024 | date | 11000 | 1100 | 2000 | 1024 |
在存储好数据之后,还可以用awk取数比对最后两天的变化比例,超过多少就执行xxxx方法,比如在桌面输出一个命名为“警告!dd号xxx数据波动”的文本文件 最好是直接把脚本放在服务器端执行,不同的数据可以制作多份csv文件,定时自动email给相关人员
缺点就是,中间很多过程可能很多数据需要存储到临时文件中,然后再用下一个命令读取,过程比较繁琐,重复的操作也比较多。还是推荐有能力强的会员用程序去实现,搞seo最主要的就是和程序员搞基,把正确的需求提出来,让程序员基友去实现才是王道。
|