向晚时光

云探针 - ServerStatus的生产与护理

笔记 ·

首先在文章的开头,我要向你介绍一遍ServerStatus是什么。对没错我就是不管你知不知道ServerStatus是什么也要假装你不知道ServerStatus是什么的样子介绍一遍。

难得水个文,凑字数容易嘛我

ServerStatus是个云探针。顾名思义它可以把你的多显示在一个公共的HTML页面上,这些基本信息包括但不限于:系统在线时间、当前负载情况、实时网络速率、服务器至开机使用的总流量、CPU实时使用率、内存实时使用率、硬盘实时使用率等。

虽然我的小鸡不多,但是我也有挂探针的习惯,因为可以显得好高大上啊咳咳。之前一直都都是用逗比大佬的ServerStatus一键脚本,整合了服务端客户端的配置,前端展示界面也更美观。但是最近我在配置一台小鸡的时候发现,貌似一键脚本的服务端配置在Debian8环境下和宝塔面板有iptables冲突,会导致机器连接不上,emmm或许只是个例吧。

后来就把手里的机器换回了手动配置的ServerStatus中文版,所以本文为个人配置记录,以防健忘~


环境配置

安装screen:

#CentOS
yum install -y screen

#Debian
apt-get install -y screen

安装Git:

#CentOS
yum install -y git-core

#Debian
apt-get install -y git

克隆ServerStatus项目到本地:

git clone https://github.com/tenyue/ServerStatus.git

服务端配置

首先宝塔、oneinstack等程序走一波,配置一个HTTP服务:lnmp、lamp什么鬼的都行。

安装ServerStatus:

cd ServerStatus/server
make

程序运行测试:

./sergate

没有错误提示如下图就OJBK,CTRL+C结束测试;如果有错误提示,自行放行35601端口,或者关闭防火墙。

编辑服务端的配置文件:

vi config.json

参考以下注释修改:

                {
                        "username": "s01", #客户端连接名,相当于登陆账号
                        "name": "node1",  #hmtl显示的主机名
                        "type": "xen",  #机器的虚拟方式,如:Xen、KVM、OpenVZ
                        "host": "host1",  #机器的名字,随意写
                        "location": "cn",  #机器的物理位置
                        "password": "USER_DEFAULT_PASSWORD"  #客户端连接密码,相当于登录密码
                },

复制ServerStatus的WEB目录到网站目录:

cd /root

#/www/wwwroot/status HTTP站点的绝对路径,自行修改
cp -r ServerStatus/web/* /www/wwwroot/status

将ServerStatus放在后台运行:

cd ServerStatus/server

#同上修改/www/wwwroot/status为HTTP站点的绝对路径
screen -dmS web ./sergate --config=config.json --web-dir=/www/wwwroot/status

添加新的监控机器
编辑服务端配置:

vi config.json

添加新的机器信息,然后重启sergate
查看sergate运行的进程ID:

ps -ef | grep web

如图,我的进程ID是9116、9117

将进程kill掉:

kill -9 9116
kill -9 9117

然后重新运行sergate:

screen -dmS web ./sergate --config=config.json --web-dir=/www/wwwroot/status

客户端配置

在已经安装了ServerStatus的前提下,也就是:

git clone https://github.com/tenyue/ServerStatus.git
cd ServerStatus/server
make

再进行操作:

cd ServerStatus/clients
vi client-linux.py

修改配置文件:

SERVER = "127.0.0.1"  #服务端的ip或域名
PORT = 35601  #连接端口,一般默认
USER = "s01"  #连接用户名,相当于登陆账号
PASSWORD = "USER_DEFAULT_PASSWORD"  #连接密码,相当于登陆密码
INTERVAL = 1 #更新间隔

修改完后,运行ServerStatus客户端(后台运行需要先安装screen):

#前台运行
python client-linux.py

#后台运行
screen -dmS jp python client-linux.py

开机自启

服务端

Debian:
1.进入init.d:

cd /etc/init.d

2.创建Shell脚本:

vi /etc/init.d/status-s

3.编写启动脚本:

#! /bin/sh
### BEGIN INIT INFO
# Provides: ServerStatus
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start ServerStatus
# Description: ServerStatus
### END INIT INFO
ServerStatus_DATA="/root/ServerStatus/server"
WEB_DATA="/www/wwwroot/status"

start()
{
    echo "Start ServerStatus"
    cd "$ServerStatus_DATA"
    screen -dmS web ./sergate --config=config.json --web-dir="$WEB_DATA"
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        #start
        ;;
    *)
        echo "Usage: /etc/init.d/status-s {start|stop|restart}"
        ;;
esac

注意修改WEB_DATA后的路径为HTTP站点的绝对路径

4.设置status-s为可执行脚本:

chmod 755 /etc/init.d/status-s

5.设置status-s开机自启:

update-rc.d status-s defaults

测试下脚本可用性:

/etc/init.d/status-s start

若不报错echo Start ServerStatus,则脚本可用:

重启测试:

reboot

若想取消开机自启:

update-rc.d -f status-s remove

CentOS:
前4步都和Debian一样,完成前4步后,编辑rc.local

vi /etc/rc.d/rc.local

在此文件末尾新开一行加上如下命令:

/etc/init.d/status-s start

给权限,重启测试:

chmod +x /etc/rc.d/rc.local
reboot

客户端

Debian
1.进入init.d:

cd /etc/init.d

2.创建Shell脚本:

vi /etc/init.d/status-c

3.编写启动脚本:

#! /bin/sh
### BEGIN INIT INFO
# Provides: Status Clients
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start ServerStatus Clients
# Description: Status Clients
### END INIT INFO
ServerStatusC_DATA="/root/ServerStatus/clients"
NAME_BIN="client-linux.py"

start()
{
    echo "Start ServerStatus Clients"
    cd "${ServerStatusC_DATA}"
    screen -dmS jp python "${NAME_BIN}"
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        #start
        ;;
    *)
        echo "Usage: /etc/init.d/status-c {start|stop|restart}"
        ;;
esac

4.设置status-c为可执行脚本:

chmod 755 /etc/init.d/status-c

5.设置status-c开机自启:

update-rc.d status-c defaults

测试下脚本可用性:

/etc/init.d/status-c start

若不报错echo Start ServerStatus Clients,则脚本可用:

重启测试:

reboot

若想取消开机自启:

update-rc.d -f status-c remove

CentOS:
前4步都和Debian一样,完成前4步后,编辑rc.local

vi /etc/rc.d/rc.local

在此文件末尾新开一行加上如下命令:

/etc/init.d/status-c start

给权限,重启测试:

chmod +x /etc/rc.d/rc.local
reboot


DEMO:node.bilibiu.cn

蜜汁标题,拟标题的时候我突然想到了老母猪的产后护理(雾

# note, serverstatus