`
LIMIMGJIE
  • 浏览: 173708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过标准日志的状态,监控服务的整体稳定性,

阅读更多


通过标准日志的状态,监控服务的整体稳定性,
配置服务日志的标准格式:
nginx日志:
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $request_time';

记录的形式如下:
112.15.238.212 - - [25/Sep/2011:04:01:11 +0800] "GET /UserRecommend.php HTTP/1.1" 200 870 "http://moviebox.baofeng.net/newbox1.0/index.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)" 320


日志格式说明:
$remote_addr 远程请求使用的IP地址
$remote_user 远端登录名
$time_local 时间,用普通日志时间格式(标准英语格式)
$request 请求的第一行
$status 状态。
$body_bytes_sent 请求返回的字节数,包括请求头的数据
$http_referer 请求头Referer的内容
$http_user_agent 请求头User-Agent的内容
$request_time 处理完请求所花时间,以秒为单位

apache日志:
	LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T " combined
		CustomLog log/access_log combined


记录的形式如下:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"



日志格式说明:
%h 请求使用的IP地址
%l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为"On",否则将得到一个"-"。
%u 远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)
%t 时间,用普通日志时间格式(标准英语格式)
%r 请求的第一行
%s 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,---%>s则指的是最后请求的状态。
%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示'-'而不是0。
\"%{Referer}i\" 发送到服务器的请求头Referer的内容。
\"%{User-Agent}i\" 发送到服务器的请求头User-Agent的内容。
%T 处理完请求所花时间,以秒为单位。
%I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。
%O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。

日志定时切割的脚本:
/sh/log_apache.sh
	       # apache log backup
		#!/bin/bash

		# 获取昨天的日期
		logfilename=`date -d yesterday +%Y_%m_%d`
		today=`date +%Y.%m.%d`
		# 设置日志文件原始路径  
		logfilepath=/opt/modules/apache2/logs/
		# 设置日志备份文件路径
		backupfilepath=/opt/data/logs/apache/

		echo "get access log:"
		# 打包压缩访问日志文件
		cd ${logfilepath}
		tar zcvf ${backupfilepath}access/${logfilename}.tar.gz access_${logfilename}.log
		rm -rf access_${logfilename}.log

		echo "get error log:"
		# 打包压缩错误日志文件
		cd ${logfilepath}
		tar zcvf ${backupfilepath}error/${logfilename}.tar.gz error_${logfilename}.log
		rm -rf error_${logfilename}.log

		echo "done @"${today}


nginx日志的切割脚本:
		#nginxlog日志备份
		#!/bin/sh

		# 设置日志文件备份文件名  
		#logfilename=`date +%Y%m%d`
		logfilename=`date +\%Y\%m\%d -d "1 days ago"`
		# 设置日志文件原始路径  
		logfilepath=/opt/modules/nginx/logs/
		# 设置日志备份文件路径
		backupfilepath=/opt/data/logs/nginx/

		LOG_FILE='access error log_mm log_db'
		for j in $LOG_FILE
		do
				cd ${logfilepath}
				tar zcvf ${backupfilepath}$j/${logfilename}.tar.gz $j.log
				rm -rf $j.log
		done

		kill -USR1 `cat  /opt/modules/nginx/nginx.pid


日志定时清理的脚本:
		#!/bin/sh
		####################### clear logs #########################

		### nginx ###
		#clear nginx access log(by hour .log) 2 days ago 
		/usr/bin/find /opt/data/logs/nginx/access -mtime +2 -name "access.log*" -exec rm -rf {} \;

		#clear nginx (access,error,log_mm,log_db) log(by day tar.gz) 10 days ago
		NGINX='access error log_mm log_db'
		for i in $NGINX
		do
				/usr/bin/find /opt/data/logs/nginx/$i -mtime +10 -name "*tar.gz" -exec rm -rf {} \;
		done

		### apache ### 
		#clear apache (access,error) log(by day tar.gz) 10 days ago
		APACHE='access error'
		for j in $APACHE
		do
				/usr/bin/find /opt/data/logs/apache/$j -mtime +10 -name "*tar.gz" -exec rm -rf {} \;
		done

		### other log ###
		#clear (txt/mq,txt/auto,txt/man) log(by day .log) 10 days ago
		OTHER='txt/mq txt/auto txt/man'
		for k in $OTHER
		do
				/usr/bin/find /opt/data/logs/$k -mtime +10 -name "*log" -exec rm -rf {} \;
		done


日志常规分析脚本
1)日志的响应时间(分析响应时间超过2S的记录数量)
			#!/bin/sh

			DIR="/opt/data/logs/nginx/access"
			TIME=`date -d "1 hour ago" +%Y%m%d-%H`

			FILE=""
			if [ -z $1 ];then
				FILE="${FILE} ${DIR}/access.log${TIME}"
			else
			   if [ $1 = 'h' ];then
				FILE="${FILE} ${DIR}/access.log${2}"
			   else
				  for((i=0;i<24;i++))
				  do
					h=`printf "%02d" $i`
					FILE="${FILE} ${DIR}/access.log${2}-$h"
				  done
			   fi
			fi

			for f in ${FILE}
			do
			echo -n ${f}:
			grep -v 'proxy'  ${f}| awk -F, 'BEGIN{f0=0;f1=0;f2=0}{ if($NF<1)f0++;if($NF>=1 && $NF<2)f1++;if($NF>=2 && $NF < 10000) f2++}END{print f0, f1, f2}'
			done
			

2)日志的请求状态(分析各请求状态的记录数量)
1
0
分享到:
评论
1 楼 imcaptor 2011-10-04  
nginx的request_time包括了客户端数据传输的时间,apache的%D有可能仅仅是服务器处理并写到buffer里面的时间

1.限制带宽前,访问服务器
[root@gitserver ~]# ab -n 100 -c 10 http://xxx.xxx.com/img/test.gif

nginx访问日志
61.51.136.71 - - [04/Oct/2011:01:57:16 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 0.116 "-" "ApacheBench/2.0.40-dev"
61.51.136.71 - - [04/Oct/2011:01:57:16 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 0.126 "-" "ApacheBench/2.0.40-dev"

[root@gitserver ~]# ab -n 100 -c 10 http://wap111.wanbo123.com/img/test.gif

apache访问日志(倒数4列是执行时间)
61.51.136.71 - - [04/Oct/2011:02:34:59 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 466 "-" "ApacheBench/2.0.40-dev" 0
61.51.136.71 - - [04/Oct/2011:02:34:59 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 420 "-" "ApacheBench/2.0.40-dev" 0
61.51.136.71 - - [04/Oct/2011:02:34:59 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 401 "-" "ApacheBench/2.0.40-dev" 0


2.限制带宽后(限制到1k):
/sbin/tc qdisc add dev eth0 root tbf rate 1kbit latency 50ms burst 1000

root@gitserver ~]# ab -n 100 -c 10 http://iletou.com/img/test.gif


nginx服务器日志:
61.51.136.71 - - [04/Oct/2011:01:58:26 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 5.000 "-" "ApacheBench/2.0.40-dev"
61.51.136.71 - - [04/Oct/2011:01:58:35 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 5.000 "-" "ApacheBench/2.0.40-dev"
61.51.136.71 - - [04/Oct/2011:01:58:38 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 5.000 "-" "ApacheBench/2.0.40-dev"

apache访问日志(倒数4列是执行时间),虽然出来很慢,但是时间没有变化
ab -n 100 -c 10 http://wap111.wanbo123.com/img/test.gif
61.51.136.71 - - [04/Oct/2011:02:37:17 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 538 "-" "ApacheBench/2.0.40-dev" 0
61.51.136.71 - - [04/Oct/2011:02:37:18 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 540 "-" "ApacheBench/2.0.40-dev" 0
61.51.136.71 - - [04/Oct/2011:02:37:20 +0800] "GET /img/test.gif HTTP/1.0" 200 9976 493 "-" "ApacheBench/2.0.40-dev" 0


解除限制:
/sbin/tc qdisc del dev eth0 root tbf

--
结论:

两者是不同的参数,nginx的request_time包括了客户端数据传输的时间,apache的%D有可能仅仅是服务器处理并写到buffer里面的时间。

前者可以评估用户的体验,后者仅仅检测服务器的性能。

相关推荐

    统一监控平台方案(日志监控、方法监控、调用链路监控)

    - **全链路监控**:从整体视角出发,通过追踪跨应用的调用链路,度量整体和局部性能,快速定位故障源头。 - **Zipkin**:支持链路追踪,一条链路由多个span组成,通过trace ID关联起来。 - **Pinpoint**:专注于方法...

    日志服务器搭建.docx

    3. 在监控日志服务器时,建议使用专业的监控工具来实时监控服务器的状态。 4. 在处理日志数据时,建议使用数据索引和查询工具来提高数据处理效率。 四、Syslog 搭建日志服务器 Syslog 是一种广泛使用的日志协议,...

    EAS整体性能监控及平常日志收集

    在IT运维领域,确保系统的稳定性和高效运行是至关重要的。本文将详细介绍EAS(Enterprise Application Suite)的整体性能监控及平常日志收集的相关知识点,帮助IT人员更好地管理和优化系统性能。 #### 一、整体性能...

    服务器监控程序部署

    在企业环境中,服务器承载着核心业务,因此,对服务器的性能、安全及稳定性进行实时监控显得尤为重要。监控程序可以帮助管理员及时发现并解决问题,避免服务中断,提高整体系统效率。 一、服务器监控的重要性 1. ...

    服务器运行状态监控系统.docx

    该系统旨在提高网络管理效率,确保服务器的稳定运行,通过及时告警和自动化处理,减少了因服务器异常导致的服务中断,提升了整体IT环境的可靠性。通过细致的监控和数据分析,网络管理员可以更好地预防潜在问题,优化...

    统一监控平台方案(日志监控、方法监控、调用链路监控).rar

    在现代的IT系统中,监控是确保服务稳定性和性能的关键环节。一个完整的监控平台应该具备多种功能,包括日志监控、方法监控以及调用链路监控。这些组件相互配合,为企业提供了深入洞察系统运行状态的能力,及时发现并...

    检测Linux服务器稳定性.pdf

    除了内建的工具,还可以使用专用软件来更深入地检测硬件稳定性,如memtest86+用于内存测试,smartctl用于硬盘自我监测分析和报告工具(SMART),以及各种图形界面的硬件监控工具,如Gnome System Monitor、Conky等,...

    网络主机状态监控 完全说明 修正

    网络主机状态监控是确保IT基础设施稳定运行的关键环节。它涉及实时监测服务器、网络设备以及其他关键系统组件的状态,以便及时发现并解决潜在问题,避免服务中断和数据丢失。本完全说明将深入探讨网络主机状态监控的...

    Docker容器的性能监控和日志服务的设计与实现1

    8. 数据库分片副本:设计的数据库分片副本机制增加了系统的可用性和容错性,确保日志服务的稳定性。 9. 整体性管理:论文强调了在Docker环境中实现对整个容器集群的统一管理和监控的重要性。 10. 运维调优:完善的...

    网络游戏-对等网络节点服务状态监控方法.zip

    本篇文章将深入探讨对等网络节点服务状态监控的方法,旨在优化网络游戏的性能和用户体验。 一、对等网络基础 对等网络的基本概念是网络中的每个节点(用户计算机)都可以作为数据的提供者和请求者。在网络游戏场景...

    网络环境下的日志监控与安全审计系统设计与实现

    通过设计合理的架构和技术选型,可以有效地实现对网络系统中日志的实时监控、集中管理和智能审计,进而提高系统的整体安全性和稳定性。随着技术的发展,未来还可以进一步探索人工智能和机器学习技术在日志分析领域的...

    Nodejs心跳包(二)监控elasticsearch服务器状态

    在Node.js中实现心跳包(Heartbeat)是为了定期检查服务是否...心跳包的定期执行可以帮助我们及时发现并解决潜在问题,保持系统的稳定性和可靠性。同时,结合日志分析,我们可以对ES服务器进行更全面的监控和故障排查。

    网络游戏-网络状态监控方法、设备及系统.zip

    在网络游戏领域,网络状态监控是确保游戏体验流畅性与稳定性的重要环节。本资料"网络游戏-网络状态监控方法、设备及系统.zip"包含了关于这一主题的详细内容,主要聚焦于网络状态监控的方法、所使用的设备以及整体...

    服务器监控nagios配套软件

    Nagios是一款开源的、高度可定制的监控系统,它能够实时监控网络服务、主机状态以及各种基础设施设备,确保业务连续性和稳定性。在【描述】中提到的汉化版本,意味着这套软件已经过中文本地化处理,更适合中国用户...

    K8S监控模板,用于k8S集群Pod监控

    在容器化领域,Kubernetes...总结,K8S监控模板提供了全面了解和控制集群性能的能力,通过有效的监控策略,可以提高K8S环境的稳定性、可靠性和安全性。这些模板文件将有助于用户快速设置和定制适合自己需求的监控系统。

    jmeter服务器性能监控插件

    通过深入理解和有效利用JMeter服务器性能监控插件,测试人员和运维人员可以更好地理解系统在高负载下的表现,预测并解决潜在的性能问题,从而提高整体应用的稳定性和效率。在实际操作中,结合JMeter的脚本录制、压力...

    监控系统运行情况记录表.docx

    监控系统是IT基础设施的重要组成部分,它负责实时监测和记录网络、服务器、数据库、应用程序等的运行状态,确保系统的稳定性和安全性。"监控系统运行情况记录表"是一个文档,用于详细记录监控系统的各项关键数据和...

    服务器IIS6.0监控程序

    这款监控程序的主要功能在于确保IIS服务的稳定性。在Web服务器上,IIS6.0作为关键服务,如果意外停止或出现故障,可能会导致网站访问中断,影响业务运营。因此,该程序通过实时监测IIS的状态,一旦发现其停止运行,...

    监控程序运行进程及系统CPU运行状态异常重启

    监控程序的自动化响应能力能够显著减轻运维人员的工作负担,同时提高系统的响应速度和稳定性。 8. **日志分析**:在异常发生后,分析日志文件对于理解问题的原因至关重要。监控程序通常会记录系统事件和异常,帮助...

    c#实现服务器性能监控并发送邮件保存日志共12页.pdf

    在IT行业中,服务器性能监控是一项至关重要的任务,它有助于确保系统的稳定性和效率。C#作为.NET框架的主要编程语言,提供了丰富的API和库来实现这样的功能。这篇12页的PDF文档,"c#实现服务器性能监控并发送邮件...

Global site tag (gtag.js) - Google Analytics