Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

回声

一、功能简述

  • 轻量级服务器状态播报、服务器状态获取探针、服务器自动监控告警工具。
  • 一切信息完全由启动参数控制,如需重新更改模式,必须关闭进程之后重新使用新的参数启动。

二、部署方式

  • 编译部署后运行
    如果没有对应平台的包的话,可以直接自己用代码编译一下二进制可执行程序,本程序不依赖于CGO库,直接build之后运行即可
    
  • 直接运行二进制可执行程序或创建系统守护进程运行程序
    如果需要创建Linux系统守护进程的话,可以先进入/etc/systemd/system文件夹下,新建一个echoes.service文件,并写入下面内容:
    
    [Unit]
    Description=Echoes service
    
    [Service]
    Type=forking
    ExecStart=/bin/bash -c "{你的回声程序所在路径} [启动参数] &"
    KillMode=process
    Restart=on-failure
    RestartSec=3s
    
    [Install]
    WantedBy=multi-user.target
    
    之后执行systemctl start echoes即可
    

三、使用教程

  • 启动参数

    参数名称                     含义
    -help                       是否帮助模式(0/1)
    -server_name                服务器名称
    -daily_time                 每天自动通知的时间(24小时制)
    -interval_time              每次自检的时间间隔(秒)
    -loadavg_max_percent        负载率告警阈值最(百分比)
    -mem_used_percent           内存告警阈值(百分比)
    -cpu_used_percent           CPU使用率告警阈值(百分比)
    -pin_enable                 探针模式是否开启(1/0)
    -port                       主动服务的端口
    -notice_mod                 通知方式(dingbot/mail/jiang)
    -token                      通知dingbot的群钉钉机器人token / mail的smtp地址(host:port) / jiang的SendKey
    -secret0                    通知dingbot的群钉钉机器人secret / mail的发件密码(或授权码)
    -smtp_user                  mail通知的发件账号(仅mail模式需要)
    -smtp_from                  mail通知的发件来源邮箱(仅mail模式需要)
    -smtp_to                    mail通知的收件邮箱(仅mail模式需要)
    -cache_ttl                  /info 接口缓存有效期(秒),0 表示与 interval_time 一致
    
  • 参数默认值

    参数名称                     默认值
    -help                       0
    -server_name                echoes_server_{启动时间}
    -daily_time                 09:30
    -interval_time              30
    -loadavg_max_percent        70
    -mem_used_percent           90
    -cpu_used_percent           90
    -pin_enable                 1
    -port                       9966
    -notice_mod                 
    -token                
    -secret0                
    -smtp_user
    -smtp_from
    -smtp_to
    -cache_ttl                  0
    
  • 注意

    若启动时未开启探针模式也未指定通知模式,则程序会直接退出
    若启用帮助模式,则作用仅限为查看帮助,程序会直接退出
    dingbot 模式:token=access_token、secret0=secret
    mail 模式:token=host:port(如 smtp.qq.com:465)、secret0=发件密码/授权码、smtp_user/smtp_from/smtp_to 必填
    jiang 模式:token=Server 酱 SendKey(https://sct.ftqq.com/ 获取)
    mail 会根据端口自动选择 SSL(465)/ 明文(25/587)发送
    
  • 演示参数

    dingbot 模式
    ./echoes -server_name echoes_server -daily_time 09:30 -interval_time 30 -loadavg_max_percent 70 -mem_used_percent 90 -cpu_used_percent 90 -pin_enable 1 -port 9966 -notice_mod dingbot -token xxxx -secret0 xxxx
    
    mail 模式(QQ 邮箱 SSL 示例)
    ./echoes -server_name echoes_server -daily_time 09:30 -interval_time 30 -loadavg_max_percent 70 -mem_used_percent 90 -cpu_used_percent 90 -pin_enable 1 -port 9966 -notice_mod mail -token smtp.qq.com:465 -secret0 授权码 -smtp_user 123456@qq.com -smtp_from 123456@qq.com -smtp_to admin@example.com
    
    Server 酱模式
    ./echoes -server_name echoes_server -daily_time 09:30 -interval_time 30 -loadavg_max_percent 70 -mem_used_percent 90 -cpu_used_percent 90 -pin_enable 1 -port 9966 -notice_mod jiang -token SCTxxxxxx
    
  • 通知形式

四、接口文档

  1. PING - /ping
    • 说明:检查服务器监控是否存活
    • 请求方式:任意
    • 返回示例:
      {
          "code": 0,
          "msg": "pong"
      }
  2. 服务器信息 - /info
    • 说明:获取当前服务器信息。接口内部对状态采集结果做了内存缓存(默认 TTL = -interval_time 秒,可用 -cache_ttl 覆盖),缓存窗口内的并发请求直接返回同一份快照,避免 CPU 采样、磁盘 IO 等重型调用把机器打垮;缓存由后台 goroutine 周期预热,单次响应延迟在毫秒级。
    • 请求方式:任意
    • 返回示例:
      {
      "code": 0,
      "data": {
          "disk": {
          "path": "/",
          "fstype": "xfs",
          "total": 53660876800,
          "free": 42608521216,
          "used": 11052355584,
          "usedPercent": 20.596673485588664,
          "inodesTotal": 26214400,
          "inodesUsed": 385915,
          "inodesFree": 25828485,
          "inodesUsedPercent": 1.4721488952636719
          },
          "system": {
          "MemAll": 3743,
          "MemFree": 2086,
          "MemUsed": 1657,
          "MemUsedPercent": 44.27110833773341,
          "Days": 31,
          "Hours": 13,
          "Minutes": 57,
          "Seconds": 55,
          "CpuUsedPercent": 15.000000020372681,
          "OS": "linux",
          "Arch": "386",
          "CpuCores": 2
          }
      },
      "msg": "success"
      }

五、专注的点

  • 全平台设备探针和告警支持。
  • 无需安装任何依赖,直接运行即可。
  • 运行后无需任何操作,自动监控服务器状态。
  • 探针、告警、通知一体,简单部署即可使用。
  • /info 接口内置状态快照缓存,可承受高并发探针请求。

六、开发进度

  • 检查服务器是否存活(PING)
  • 内存使用情况监控/告警
  • CUP使用情况监控/告警
  • 硬盘使用情况监控
  • 操作系统信息获取
  • 负载率过高告警
  • 作为探针主动获得服务器状态
  • 钉钉机器人群通知
  • 邮箱通知
  • Server酱通知
  • 缓存信息以支持高并发请求

七、历史版本

Releases

Packages

Used by

Contributors

Languages