[产品]如何随时知道服务器的运行状况

你想随时知道你的服务器的运行状况吗? 比如CPU,内存,IO,网络的使用情况,该监听的端口是否正在监听,是否有进程占用了太多内存等等。 你是否想到了SNMP,Cacti,Nagios

有个更简单的办法就是写一个shell脚本来收集系统运行的信息,然后用crontab定时去执行,然后用nginx把收集的系统信息暴露出来,这样你就可以随时用手机查看你的服务器运行信息了。

这里有一个shell脚本,可以收集系统的常规的运行信息。

https://github.com/onlytiancai/codesnip/blob/master/shell/sysinfo.sh

运行它,它会输出类似下面的信息,你可以修改脚本添加你关心的信息,或者删除你看不懂或不关心的信息。

https://github.com/onlytiancai/codesnip/blob/master/shell/sysinfo.txt

假设我们要把该脚本下载到/opt/scripts目录下,执行如下命令

mkdir -p /opt/scripts
cd /opt/scripts
wget https://raw.github.com/onlytiancai/codesnip/master/shell/sysinfo.sh
mkdir -p /var/www/sysinfo/

运行crontab -e,增加如下定时任务,每5分钟收集系统信息并保存在/var/www/sysinfo目录下

*/5 * * * * /bin/sh /opt/scripts/sysinfo.sh >/var/www/sysinfo/sysinfo.txt 2>&1

修改nginx配置,把/var/www/sysinfo目录开放成可以通过web访问。

location /sysinfo {
        alias /var/www/sysinfo/;
}

这样,你就可以在你的手机上输入 http://yourdomain.com/sysinfo/sysinfo.txt 来随时查看你的服务器状态了。

提示:

  1. 如果你觉得系统信息里有敏感信息,比如ps命令的输出,可以修改脚本把敏感信息去掉。
  2. 为了防止别人知道你的系统信息url,你可以在nginx配置的location节设置一个比较长的随机的地址,然后在手机浏览器的收藏夹里把该网址收藏一下。