我目前正在开发一个使用Linux,Apache,Django和MySql的小型Web应用程序。
作为一个对Linux / shell脚本/服务器监控知之甚less的开发人员,我不知道我想要做什么样的监控……但是,我喜欢做的一些事情是:
此外,我想知道是否有其他日志文件/服务,我应该保持我的眼睛?
服务器监视取决于哪些度量与服务器的目的有关。 作为一个Web应用程序,有相当多的领域可以覆盖。 有无数的指标你可以想到,但你通常会有这些最低限度:
除了观看现在之外,监视的另一部分是保留过去的logging。 这使您能够:
在接下来的两个月里,您的磁盘空间是否会有相同的增长? 您是否看到与新function部署alignment的CPU使用率增加? 为什么用户需要等待四秒才能查看一个页面?
我会涉及上述每个指标:
可用性
非常简单的可用性监控是通过ping命令,但是服务器ping并不意味着像Web服务器这样的服务可用,因为它可能已经崩溃了。 更复杂的监控将每小时在网站上进行testing交易,以确保用户可以购买产品。
磁盘空间和使用情况
空间指标是显而易见的,你应该提前知道你的应用程序停止工作之前。 使用部分有点复杂。 这些用法将是字节读/写,每秒input/输出操作等指标。这些可能是重要的,因为如果您看到与磁盘性能下降相关的站点延迟增加,您可能已经开发了一个坏的磁盘,需要多个寻求或阅读以满足要求。 不要忘记测量inode的用法,这是OpenVZ中几次我忘记的一个指标。
networking使用情况
打到你的networking带宽限制? 你看到相同的号码你的ISP正在看到?
内存使用情况
当系统开始用完内存时,它将开始交换。 这会影响性能。
CPU使用率
在高峰时段CPU是否达到100%? 也许你可以通过将服务器升级到更快的CPU或更多的CPU来改善用户体验。 性能是否会随着CPU不得不处理如此多的networking控制器中断而死亡? 也许有时间去投资一个TCP卸载卡。
日志文件
MySQL慢查询日志:查询运行速度低于您的阈值。 检查此文件并根据需要进行改进。 如果你不能改进它们,并且查询时间对应于繁重的系统负载,那么也许有时间升级。
应用程序的日志文件:正在使用什么导致所有沉重的系统负载? 他们中的大多数人正在查看特定的页面? 为什么今天只有一半的用户上传?
Apache日志文件:知道这些数字对于网站devise的有效性,可用性,广告活动的测量结果,损坏的页面或图像等是有用的。
系统的日志文件:黑客入侵,硬件错误,各种守护进程消息。
通常最好将系统日志发送到另一台服务器,以便跟踪不能被覆盖。
除此之外,还有很多可以监控的事情:每秒事务处理,服务器温度,硬盘温度和SMART,RAID状态,备份报告,批处理作业状态,
有相当多的工具来完成上述的一些。 其他更具体的指标将需要自编码,如果尚不可用(显示通过SNMP的qmail队列大小是我放在一起的一个这样的指标,因为有时qmail会中断,仍然接受新的电子邮件,但不发送)。
我使用的一些工具可以很容易地从头开始:
第一站可能是vmstat ,它会告诉你有关虚拟机的各种信息,而不是像vmware或VirtualPC等那样的虚拟机,而是监视内存和I / O系统的内核虚拟机。 您可以使用vmstat 1这样的更新周期来运行vmstat , vmstat 1将每秒钟报告虚拟机状态。