我们有几个 LAMP 服务器,每个服务器运行一个我们编写的特殊脚本来报告各种系统指标。该报告每天运行,其想法是能够快速通过并发现系统上的任何潜在问题。
每台 LAMP 服务器运行 RedHat Enterprise 并托管 40-50 个(并且还在不断增长)面向公众的网站(HTML、自定义 PHP 和 Drupal 站点的混合)。
以下是脚本当前包含的内容:
- 服务器负载和用户登录
- 最近 10 次登录和次数
- 磁盘使用情况
- 各种日志的最后 10 行(qmail、mysql、secure、apache 错误、包)
- 每个帐户的用户名、端口和上次登录时间
- 顶部转储
报告已经很长了,所以我对尽可能简洁感兴趣。
您是否发现其他重要的指标可以包含在这样的脚本中?你会从这个列表中删除任何一个吗?
谢谢,团队。
j
我会测试以确保您的环境是健全的。测试 PHP 是否正常运行(编写一个简单的 PHP 脚本来回显某些内容,wget 它,确保您收到了预期的内容)、您的数据库(只需连接并确保您可以看到数据库)等。
此外,如果您正在对它们进行 SSL,请检查证书是否过期、意外更改等。
我建议使用自动收集工具,例如Cacti,它会随着时间的推移收集和报告各种指标。这将使您能够轻松地发现趋势并为未来做计划。John Allspaw 有一本很棒的书,名为The Art of Capacity Planning,它非常详细地介绍了这个主题。我强烈建议任何需要在服务器上跟踪指标的人使用它。
我的建议是不要定期报告这些事情。您将被信息淹没,而人性决定了当问题确实出现时,您可能确实会忽略它。
而是仅在其中一个变量异常时报告。也许在白天更频繁。您可以使用 Cacti 等监控和绘图系统,它会提醒您此类变化并保留历史数据以供将来参考。
对于您的脚本 - 对于性能检查,我将添加 mysql 慢查询日志的内容 [您需要在 mysql 的 my.cnf 中激活它]。如果您的查询时间超过几秒钟,则可能存在一些性能瓶颈。
在不应该修改的地方进行一些一致性检查 - tripwire - integrit 或其他东西 - [ /etc/ ? 二进制文件?]。可能会添加针对 geoip 的 ftp 日志检查 - 可能您不希望看到来自中国或前苏联的成功登录。
至少为传出连接设置iptables 日志记录,并包括所有出现在日志中的异常目标端口。您可能不希望传出 http 连接 - 也许除了 drupal 中的更新检查 - 这些可能是一些尝试下载潜在恶意负载的迹象。如果您发送一些邮件,甚至更好地丢弃所有传出流量并添加例外,例如传出 tcp/25。
添加图形趋势监控,例如使用munin。绘制带有负载、每秒请求数、内存和交换使用情况、每秒 mysql 查询、慢查询、总 eth 流量、邮件流量的图表。
正如 Dan C 所建议的那样 - 你会被记录在日志中并开始忽略它们。设置nagios或任何其他检查系统。当坏事发生时,它会向你报告。
你真的想要持续监控。我们使用 Nagios 每分钟检查我们的每个网络服务器几次,以确保它们仍在工作。我们还监控我们的数据库和我们能想到的任何其他东西。随着时间的推移,您会遇到中断并发现您应该监控的事情。
监控的另一面是某种图形。我们使用 Munin,但仙人掌或神经节是常见的解决方案。图表对于发现系统中的趋势非常宝贵。
我还建议使用脚本获取服务器状态页面并解析必要的值以获取运行时信息。
将此添加到您的 apache 配置中(大多数发行版中已经存在)
此处理程序由 mod_status 提供。您可以查看当前请求数、每秒请求数等。