登录
|
注册
|
QQ账号登录
|
常见问题
联系我们:
我要上传
首页
浏览
幼儿/小学教育
中学教育
高等教育
研究生考试
外语学习
资格/认证考试
论文
IT计算机
经济/贸易/财会
管理/人力资源
建筑/环境
汽车/机械/制造
研究报告
办公文档
生活休闲
金融/股票/期货
法律/法学
通信/电子
医学/心理学
行业资料
文学/艺术/军事/历史
我的淘豆
我要上传
帮助中心
复制
下载此文档
2025年多服务器的日志合并统计(共8篇).docx
文档分类:
IT计算机
|
页数:约30页
举报非法文档有奖
分享到:
1
/
30
下载此文档
搜索
下载此文档
关闭预览
下载提示
1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
2.下载该文档所得收入归上传者、原创者。
3.下载的文档,不会出现我们的网址水印。
同意并开始全文预览
(约 1-6 秒)
下载文档到电脑,查找使用更方便
下 载
还剩?页未读,
继续阅读
分享到:
1
/
30
下载此文档
文档列表
文档介绍
2025年多服务器的日志合并统计(共8篇).docx
该【2025年多服务器的日志合并统计(共8篇) 】是由【mama】上传分享,文档一共【30】页,该文档可以免费在线阅读,需要了解更多关于【2025年多服务器的日志合并统计(共8篇) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。2025年多服务器的日志合并统计(共8篇)
篇1:多服务器的日志合并统计
作者:snail
内容摘要:你完全不必耐心地看完下面的所有内容,因为结论无非以下2点:
1 用 cronolog 干净,安全地轮循apache“日”志
2 用 sort -m 合并排序多个日志
根据个人的使用经历:
1 先介绍apache日志的合并方法;
2 然后根据由此引出的问题说明日志轮循的必要性和解决方法,介绍如何通过cronolog对apache日志进行轮循;
中间有很多在设计日志合并过程中一些相关工具的使用技巧和一些尝试的失败经历……
我相信解决以上问题的路径不止这一条途径,以下方案肯定不是最简便或者说成本最低的,希望能和大家有更多的交流,
{0} 多服务器日志合并统计的必要性:
越来越多大型的WEB服务使用DNS轮循来实现负载均衡:使用多个同样角色的服务器做前台的WEB服务,这大大方便了服务的分布规划和扩展性,但多个服务器的分布使得日志的分析统计也变得有些麻烦。如果使用webalizer等日志分析工具对每台机器分别做日志统计: 1 会对数据的汇总带来很多麻烦,比如:统计的总访问量需要将SERVER1 SERVER2...上指定月份的数字相加。 2 会大大影响统计结果中唯一访客数unique visits,唯一站点数unique sites的等指标的统计,因为这几个指标并非几台机器的代数相加。
统一日志统计所带来的好处是显而易见的,但如何把所有机器的统计合并到一个统计结果里呢?
首先也许会想:多个服务器能不能将日志记录到同一个远程文件里呢?我们不考虑使用远程文件系统记录日志的问题,因为带来的麻烦远比你获得的方便多的多……
因此,要统计的多个服务器的日志还是:分别记录=>并通过一定方式定期同步到后台=>合并=>后用日志分析工具来进行分析。
首先,要说明为什么要合并日志:因为webalizer没有将同一天的多个日志合并的功能
先后运行
webalizer log1
webalizer log2
webalizer log3
这样最后的结果是:只有log3的结果。
能不能将log1s %b
具体的例子:
- - [03/Apr/:10:30:17 +0800]
“GET / HTTP/” 200 419
最简单的想法是将日志一一读出来,然后按日志中的时间字段排序
cat log1 log2 log3 |sort -k 4 -t “ ”
注释:
-t “ ”: 日志字段分割符号是空格
-k 4: 按第4个字段排序,也就是:
[03/Apr/2025:10:30:17 +0800] 这个字段
-o log_all: 输出到log_all这个文件中
但这样的效率比较低,要知道。如果一个服务已经需要使用负载均衡,其服务的单机日志条数往往都超过了千万级,大小在几百M,这样要同时对多个几百M的日志进行排序,机器的负载可想而之……
其实有一个优化的途径,要知道:即使单个日志本身已经是一个“已经按照时间排好序“的文件了,而sort对于这种文件的排序合并提供了一个优化合并算法:使用 -m merge合并选项,
因此:合并这样格式的3个日志文件log1 log2 log3并输出到log_all中比较好方法是:
sort -m -t “ ” -k 4 -o log_all log1 log2 log3
注释:
-m: 使用 merge优化算法
注意:合并后的日志输出最好压缩以后再发给webalizer处理
有的系统能处理2G的文件,有的不能。有的程序能处理大于2G的文件,有的不能。尽量避免大于2G的文件,除非确认所有参与处理的程序和操作系统都能处理这样的文件。所以输出后的文件如果大于2G,最好将日志gzip后再发给webalizer处理:大于2G的文件分析过程中文件系统出错的可能性比较大,并且gzip后也能大大降低分析期间的I/O操作。
日志的按时间排序合并就是这样实现的。
{2} 日志的轮循机制:
让我们关心一下数据源问题:webalizer其实是一个按月统计的工具,支持增量统计:因此对于大型的服务,我可以按天将apache的日志合并后送给webalizer统计。WEB日志是如何按天(比如每天子夜00:00:00)截断呢?
如果你每天使用crontab:每天0点准时将日志备份成accesserials_log_yesterday
mv /path/to/apache/log/accesserials_log
/path/to/apache/log/accesserials_log_yesterday
的话:你还需要:马上运行一下:apache restart 否则:apache会因为的日志文件句柄丢失不知道将日志记录到哪里去了。这样归档每天子夜重启apache服务会受到影响。
比较简便不影响服务的方法是:先复制,后清空
cp /path/to/apache/log/accesserials_log /path/to/apache/log/accesserials_log_yesterday
echo >/path/to/apache/log/accesserials_log
严肃的分析员会这样做发现一个问题:
但cp不可能严格保证严格的0点截断。加入复制过程用了6秒,截断的accesserials_log_yesterday日志中会出现复制过程到00:00:06期间的日志。对于单个日志统计这些每天多出来几百行日志是没有问题的。但对于多个日志在跨月的1天会有一个合并的排序问题:
[31/Mar/2025:59:59:59 +0800]
[31/Mar/2025:23:59:59 +0800]
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
要知道[01/Apr/2025:00:00:00 这个字段是不可以进行“跨天排序”的。因为日期中使用了dd/mm/yyyy,月份还是英文名,如果按照字母排序,很有可能是这样的结果:排序导致了日志的错误
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
[01/Apr/2025:00:00:00 +0800]
[31/Mar/2025:59:59:59 +0800]
[31/Mar/2025:59:59:59 +0800]
[31/Mar/2025:23:59:59 +0800]
[31/Mar/2025:59:59:59 +0800]
[31/Mar/2025:23:59:59 +0800]
这些跨天过程中的非正常数据对于webalizer等分析工具来说简直就好像是吃了一个臭虫一样,运行的结果是:它可能会把前一个月所有的数据都丢失!因此这样的数据会有很多风险出现在处理上月最后一天的数据的过程中。
问题的解决有几个思路:
1 事后处理:
所以一个事后的处理的方法是:用grep命令在每月第1天将日志跨月的日志去掉,比如:
grep -v “01/Apr” accesserials_log_04_01 >accesserials_log_new
修改SORT后的日志:所有跨天的数据去掉,
也许对日志的事后处理是一个途径,虽然sort命令中有对日期排序的特殊选项 -M(注意是:大写M),可以让指定字段按照英文月份排序而非字母顺序,但对于apache日志来说,用SORT命令切分出月份字段很麻烦。(我尝试过用 “/”做分割符,并且使用“月份” “年:时间”这两个字段排序)。虽然用一些PERL的脚本肯定可以实现,但最终我还是放弃了。这不符合系统管理员的设计原则:通用性。 并且你需要一直问自己:有没有更简单的方法呢?还有就是将日志格式改成用TIMESTAMP(象SQUID的日志就没有这个问题,它的日志本身就是使用TIMESTAMP做时间时间戳的),但我无法保证所有的日志工具都能识别你在日期这个字段使用了特别的格式。
2 优化数据源:
最好的办法还是优化数据源。将数据源保证按天轮循,同一天的日志中的数据都在同一天内。这样以后你无论使用什么工具(商业的,免费的)来分析日志,都不会因为日志复杂的预处理机制受到影响。
首先可能会想到的是控制截取日志的时间:比如严格从0点开始截取日志,但在子夜前1分钟还是后一分钟开始截取是没有区别的,你仍然无法控制一个日志中有跨2天记录的问题,而且你也无法预测日志归档过程使用的时间。
因此必须要好好考虑一下使用日志轮循工具的问题,这些日志轮循工具要符合:
1 不中断WEB服务:不能停apache=>移动日志=>重启apache
2 保证同一天日志能够按天轮循:每天一个日志00:00:00-23:59:59
3 不受apache重启的影响:如果apache每次重启都会生成一个新的日志是不符合要求的
4 安装配置简单
首先考虑了apache/bin目录下自带的一个轮循工具:rotatelogs 这个工具基本是用来按时间或按大小控制日志的,无法控制何时截断和如何按天归档。
然后考虑logrotate后台服务:logrotate是一个专门对各种系统日志(syslogd,mail)进行轮循的后台服务,比如SYSTEM LOG,但其配置比较复杂,放弃,实际上它也是对相应服务进程发出一个-HUP重启命令来实现日志的截断归档的。
在apache的FAQ中,推荐了经过近2年发展已经比较成熟的一个工具cronolog:安装很简单:
configure=>make=>make install
他的一个配置的例子会让你了解它有多么适合日志按天轮循::
TransferLog “|/usr/sbin/cronolog /web/logs/%Y/%m/%d/”
ErrorLog “|/usr/sbin/cronolog /web/logs/%Y/%m/%d/”
然后:日志将写入
/web/logs/2025/12/31/
/web/logs/2025/12/31/
午夜过后:日志将写入
/web/logs//01/01/
/web/logs/2025/01/01/
而2025 2025/01 和 2025/01/01 如果不存在的话,将自动创建
所以,只要你不在0点调整系统时间之类的话,日志应该是完全按天存放的(00:00:00-23:59:59),后面日志分析中:[31/Mar/2025:15:44:59这个字段就和日期无关了,只和时间有关。
测试:考虑到系统硬盘容量,决定按星期轮循日志
apache配置中加入:
#%w weekday
TransferLog “|/usr/sbin/cronolog /path/to/apache/logs/%w/accesserials_log”
重启apache后,除了原来的CustomLog /path/to/apche/logs/accesserials_log继续增长外,系统log目录下新建立了 3/目录(测试是在周3),过了一会儿,我忽然发现2个日志的增长速度居然不一样!
分别tail了2个日志才发现:
我设置CustomLog使用的是combined格式,就是包含(扩展信息的),而TransferLog使用的是缺省日志格式,看了apache的手册才知道,TransferLog是用配置文件中离它自己最近的一个格式作为日志格式的。:
LogFormat ..... combined
LogFormat ... common
...
CustomLog ... combined
TransferLog ...
所以TrasferLog日志用的是缺省格式,手册里说要让TRANSFER日志使用指定的格式需要:
LogFormat “%h %l %u %t ”%r“ %>s %b ”%{Referer}i“ ”%{User-Agent}i“”
TransferLog “|/usr/local/sbin/cronolog /path/to/apache/logs/%w/accesserials_log”
重启,OK,日志格式一样了。
这样的设置结果其实是同时在logs目录下分别记录2个日志accesserials_log和%w/accesserials_log,能不能只记录%w/下的日志那?
2025年多服务器的日志合并统计(共8篇) 来自淘豆网m.daumloan.com转载请标明出处.
猜你喜欢
FTY720靶向鞘氨醇-1-磷酸干预STAT3通路抑制肝..
2页
D服装加工贸易企业竞争战略研究
2页
Creloxp重组系统介导转基因绒山羊标记基因删除..
2页
BTEX隆解菌分离纯化鉴定及其固定化载体的研制..
2页
AtPAP1基因在烟草中的过表达及花青素合成调控..
2页
60米半滑行船舶最佳纵倾角研究
2页
泥工施工工艺程序、工艺规范
51页
沪科版八年级物理《密度》PPT课件
17页
小学的作文(实用3篇)
6页
汽车风险评估
11页
开业优惠活动方案(4篇)
14页
我国失信惩戒机制的构建思路
8页
捐款感谢信范文锦集(6篇)
8页
江南春绝句(杜牧)
20页
水文学与生态环境
22页
相关文档
更多>>
非法内容举报中心
文档信息
页数
:
30
收藏数
:
0
收藏
顶次数
:
0
顶
上传人
:
mama
文件大小
:
28 KB
时间
:
2025-01-22
相关标签
服务器合同
兽药管理制度
定额管理制度
餐饮制度管理制度
园林绿化管理制度
安全卫生管理制度
公司消防管理制度
食堂制度管理制度
发货管理制度
退货管理制度
计算机原理
PHP资料
linux/Unix相关
C/C++资料
Java
.NET
开发文档
管理信息系统
软件工程
网络信息安全
网络与通信
图形图像
行业软件
人工智能
计算机辅助设计
多媒体
软件测试
计算机硬件与维护
网站策划/UE
网页设计/UI
网吧管理
电子支付
搜索引擎优化
服务器
电子商务
Visual Basic
数据挖掘与模式识别
数据库
Web服务
网络资源
Delphi/Perl
Python
CSS/Script
Flash/Flex
手机开发
UML理论/建模
并行计算/云计算
嵌入式开发
计算机应用/办公自动化
数据结构与算法
SEO
最近更新
2025年感谢发言稿(共14篇)
2025年感谢你那些花儿小学作文(共22篇)
2025年感悟美丽瞬间作文(共14篇)
2025年感悟平凡(精选10篇)
2025年感悟一生心情语录(通用12篇)
2025年感恩节给亲朋好友的短信贺词(锦集15..
九年级数学上册2.3用计算器求锐角三角比全国..
中考语文散文阅读复习——语言品析省公开课..
中考语文专题一文言文阅读本土名师复习计划..
粮油产品销售居间合同范本3篇
空运货物承运合同标准范本3篇
租赁遗赠协议3篇
租赁合同范本含宠物友好政策3篇
租赁协议医疗用房租赁3篇
科研用品购销合同样本3篇
科研合作合同合规要点3篇
科技研发入股分红协议书3篇
双声源热声系统中回热器声场与热场耦合特性..
参附注射液对脓毒症心肌损伤的临床疗效观察..
去骨瓣减压术治疗大面积大脑梗死的预后与分..
原发性胆汁性肝硬化模型鼠调节性T细胞的系统..
卵裂球丢失对冻融胚胎移植结局的影响及子代..
博士研究生培养过程调查研究——基于5所甘肃..
保洁公司派遣劳动合同
临时季节工劳动协议
《荷叶圆圆》教案
单载波通信系统中判决反馈均衡技术的研究综..
协作MIMO系统的预编码技术和频谱有效性研究..
2025年山东圣翰财贸职业学院单招职业适应性..
2025年山东英才学院单招职业技能测试题库及..
在线
客服
微信
客服
意见
反馈
手机
查看
返回
顶部