2

我希望监视在服务器上运行的应用程序所必需的服务器场的某些方面。

基本上,我希望在每台机器上都有一个文件,当通过 http(在 vlan 上)使用 curl 访问该文件时,它将吐出我正在寻找的信息,我可以使用位于循环中的 dameon 登录数据库并一一检查所有服务器的健康状况。

我想要得到的信息是

<load>server load</load>
<free>md0 free space in MB</free>
<total>md0 total space in MB</total>
<processes># of nginx processes</processes>
<time>timestamp</time>

最好的方法是什么?

编辑:我们正在使用 cacti 和 opennms,但是我在这里寻找的是在这些服务器上运行的应用程序所必需的数据。我不想让它依赖任何 3rd 方软件来获取这些可以通过一些 linux 命令获得的基本数据来使其复杂化。

4

1 回答 1

2

创建一个 cron 条目:

  • 每隔几分钟(或您想要的任何频率)执行一个 shell 脚本
  • 将输出保存在 Web 服务器发布的目录中

假设您的文本确实是您想要的,这将使您达到 90% 的目标:

#!/usr/bin/env bash

LOAD=$(uptime | cut -d: -f5 | cut -d, -f1)
FREE=$(df -m / | tail -1 | awk '{ print $4 }')
TOTAL=$(df -m / | tail -1 | awk '{ print $2 }')
PROCESSES=$(ps aux | grep [n]ginx | wc -l)
TIME=$(date)

cat <<-EOF
<load>$LOAD</load>
<free>$FREE</free>
<total>$TOTAL</total>
<processes>$PROCESSES</processes>
<time>$TIME</time>
EOF

样本输出:

<load> 0.05</load>
<free>9988</free>
<total>13845</total>
<processes>6</processes>
<time>Wed Apr 18 22:14:35 CDT 2012</time>
于 2012-04-19T03:32:40.950 回答