向晚时光

云探针 - 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.timelate.com

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

# serverstatus

添加新评论

已有 2 条评论

返回顶部 ↑