云探针 - 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:status.catker.cn

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

本文根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License 进行授权。
本文链接:https://sumrday.net/exp/ServerStatus.html

    c0sMx
    c0sMx  2018-04-30, 17:53

    云探针:我只是个探针qaq

      Lvv
      Lvv  2018-05-02, 18:38

      233还可以点亮新的技能树:装X