我正在尝试创建一个简单的 shell 脚本来监控我的服务器。我计划设置一个 CRON 作业,每五或十分钟运行一次。
其工作原理如下:
- 运行一些 Linux 命令,例如 iostat、mpstat、top 等,并将结果输出到文本文件
- 通过 CURL 将文本文件发送到将接收文本文件并处理数据的 URL,然后将重要指标发布到数据库
我计划使用这些数据来确定何时需要升级我的服务器。
但是,我对服务器监控没有太多经验,所以我不知道应该注意什么样的阈值。例如,当我运行类似 的程序时mpstat -P ALL
,什么样的数字会困扰我?或者iostat
?
我只是希望能够有某种参考点来了解我的服务器何时处于良好状态(即合理负载)或处于不良状态(即超载),并需要升级或负载平衡。
提前致谢。
答案1
我想说的是免费监控是一个更合适的工具,用于测试你正在寻找的阈值,并提供一个简单的概览视图您的系统健康状况。
开箱即用,您可以设置一些基本检查。语法非常人性化,因此,检查系统负载、内存使用情况、交换利用率、CPU 使用率和各种挂载点的磁盘空间并可以发送电子邮件的基本设置如下所示:
if loadavg (1min) > 6 then alert
if loadavg (5min) > 5 then alert
if memory usage > 90% then alert
if swap usage > 20% then alert
if cpu usage (user) > 90% then alert
if cpu usage (system) > 75% then alert
if cpu usage (wait) > 75% then alert
check device root with path /
if SPACE usage > 80% then alert
check device var with path /var
if SPACE usage > 80% then alert
check device usr with path /usr
if SPACE usage > 80% then alert
check device tmp with path /tmp
if SPACE usage > 80% then alert
答案2
奥比·希尔:好吧,你确实在重新发明轮子。收集所有数据、解析和分析数据是一个已解决的问题,你不应该再重写一遍。
SNMP 是一种非常方便的收集系统信息以供进一步处理(例如,绘制趋势图或MRTG
将数据传递给Nagios
类似的监控程序)的方法。
Cacti
或之类的程序也Munin
可以为您完成所有这些操作。
答案3
您有多少台服务器?
也许您应该看看 Puppet、RunDesk 或 ControlTier。