暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

服务器状态监控

生有可恋 2022-04-28
1760

推荐一款C/S架构的服务器监控软件,可以对多台服务器以列表形式展示基本状态。演示地址为:https://tz.cloudcpp.com/

项目名称为:ServerStatus中文版

项目 Github 地址为:

  • https://github.com/cppla/ServerStatus

监控系统由三部分组成

  • 服务器端,用于接受监控数据,并将数据写至 web 目录

  • 客户端,用来发送系统运行状态的数据,会连接至服务器端

  • Web 展示目录,需要系统提供web服务用于显示静态页面

服务器端运行过程:

    $ git clone https://github.com/cppla/ServerStatus.git
    $ cd ServerStatus/server
    $ make
    $ ./sergate --config=config.json \
      --web-dir=/ServerStatus/web/

    代码是用 c++ 写的,使用 make 编译时会调用 g++ 

    Server 端运行后会监听 35601 端口,等待 Client 端连接。

    其中 config.json 中提供了用户名和密码,不同的客户端使用不同的密码。在配置文件中可以对节点信息进行描述。

      {"servers":
      [
      {
      "username": "s01",
      "name": "vps-1",
      "type": "kvm",
      "host": "chengdu",
      "location": "🇨🇳",
      "password": "USER_DEFAULT_PASSWORD",
      "monthstart": 1
      },
      ]
      }

      其中 username 和 password 主要用于 35601 端口提供的服务器认证,当认证失败时,client IP 的连接会被禁用1分钟。

      客户端运行只需要安装 python3 以及 psutil 即可

        pip3 install psutil

        将 ServerStatus/client 下的 client-psutil.py 拷贝至客户端,修改 client-psutil.py 中的服务器IP,使用 config.json 中指定的用户名、密码,运行即可。

          #!/usr/bin/env python3
          # coding: utf-8
          # Update by : https://github.com/cppla/ServerStatus, Update date: 20220323
          # 依赖于psutil跨平台库
          # 版本:1.0.3, 支持Python版本:2.7 to 3.9
          # 支持操作系统:Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD and NetBSD, both 32-bit and 64-bit architectures
          # 说明: 默认情况下修改server和user就可以了。丢包率监测方向可以自定义,例如:CU = "www.facebook.com"。

          SERVER = "127.0.0.1"
          USER = "s01"
          PASSWORD = "USER_DEFAULT_PASSWORD"

          修改 SERVER 为服务器的IP,使用 config.json 中为节点指定的用户名密码,调用 python3 运行  client-psutil.py 脚本:

            $ python3 client-psutil.py

            连接成功会提示 Access granted,当服务器端断开,客户端会不停地重连。

            当客户端和服务端正常通讯,此时系统监控数据会上传至 ServerStatus/web/ 目录,项目作者推荐将 web 目录拷贝至 apache 或 其它 http 服务的根目录。我们这里使用 python 的 http.server 模块搭建一个预览版:

              $ cd ServerStatus/web/
              $ python3 -m http.server 3000

              通过浏览器访问 web 服务的端口即可查看监控页面:

              页面是动态刷新的,点击节点,可以看到详细信息

              除了网页版,项目还提供了一个命令行版,供内部调试用。

              脚本位于:ServerStatus/web/ssview.py,使用的是 web目录下的json/stats.json 作为数据源,需要在代码中将 demo 数据换成服务器数据。

                if __name__ == '__main__':
                #default = 'https://tz.cloudcpp.com/json/stats.json'
                default = 'http://192.168.1.1:3000/json/stats.json'
                ads = sys.argv[1] if len(sys.argv) == 2 else default
                sscmd(ads)

                在命令行通过 python 调用 ssview.py,需要提前安装 PrettyTable 模块

                  $ pip install PrettyTable
                  $ python3 web/ssview.py

                  此项目常用搭建“机场”节点监控,方便对挂掉的主机进行快速定位。C/S架构方便快速搭建,并且客户端依赖只需要安装 python 环境即可,一个脚本即解决客户端数据收集的问题,方便扩展。

                  文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论