好介绍服务器监控?

我目前正在开发一个使用Linux,Apache,Django和MySql的小型Web应用程序。

作为一个对Linux / shell脚本/服务器监控知之甚less的开发人员,我不知道我想要做什么样的监控……但是,我喜欢做的一些事情是:

  • 轻松访问时间序列的CPU /内存使用情况。
  • 每当服务器资源过度使用时,都会发送警报。
  • 轻松访问Apache日志文件,并能够与他们运行快速分析。

此外,我想知道是否有其他日志文件/服务,我应该保持我的眼睛?

服务器监视取决于哪些度量与服务器的目的有关。 作为一个Web应用程序,有相当多的领域可以覆盖。 有无数的指标你可以想到,但你通常会有这些最低限度:

  • 服务器和服务的可用性
  • 磁盘空间和使用情况
  • networking使用
  • 内存使用情况
  • CPU使用率
  • 日志文件

除了观看现在之外,监视的另一部分是保留过去的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会中断,仍然接受新的电子邮件,但不发送)。

我使用的一些工具可以很容易地从头开始:

  • Nagios或Icinga – 最stream行的* nix监控工具之一。 相当多的监控工具,如mysql从属监控。 我通常专门用于所有服务的可用性监视。 设置发送电子邮件到电话的电子邮件到文本地址的警报。 Icinga是Nagios的一个分支。 浏览器通过“命令”,看看你可以使用哪些。
  • 穆宁或收集 – 这给你的图表。 轻松在CentOS上设置。 设置MySQL监控插件以获取数据库见解,如缓冲区使用情况。
  • WebSitePulse – 请注意,可用性监控只有在远程完成时才是最好的。 我使用他们的POP3监控来validationNagios是否仍然通过我制作的脚本运行。
  • AWStats – 将Apache日志文件处理成报告。
  • Google Analytics(分析) – 更多的客户端详细信息不在常见的Apache日志中,如屏幕分辨率和颜色深度。

第一站可能是vmstat ,它会告诉你有关虚拟机的各种信息,而不是像vmware或VirtualPC等那样的虚拟机,而是监视内存和I / O系统的内核虚拟机。 您可以使用vmstat 1这样的更新周期来运行vmstatvmstat 1将每秒钟报告虚拟机状态。