st-monitoring-nezha.md 14 KB


title: VPS监控:哪吒监控 date: 2024-04-23 14:25:00 categories:

  • 运维
  • Linux tags:
  • linux ---

目录

简介

  • 开源、轻量、易用的服务器监控、运维工具。
  • 一键安装:支持一键安装面板和监控服务,使用方便。主流系统包括Linux、Windows、MacOS、OpenWRT以及群晖均受支持。
  • 实时监控:支持同时监控多个服务器的状态,提供历史延迟图表,并可监控网页、端口可用性和SSL证书状态。支持故障和流量等状态告警,可通过Telegram、邮件、微信等多种通知方式进行提醒。
  • 轻松运维:可使用API获取服务器状态,支持WebSSH、DDNS和流量监控,可设置定时和触发任务并批量执行服务器任务。

安装

哪吒监控接入 Github、Gitlab、Gitee 作为后台管理员账号。

获取 Github 的 Client ID 和密钥

  1. 打开Developer Settings,依次选择OAuth Apps - New OAuth App 新建授权应用。
  2. 填写应用信息。
  3. Register application 注册应用。
  4. 保存页面中的 Client ID,然后点击 “Generate a new client secret“,创建一个新的 Client Secret,新建的密钥仅会显示一次,请妥善保存。

运行面板安装脚本

# GitHub 源
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
# Gitee 源
curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
  1. 填写相关信息
    • 请输入 OAuth2 提供商(github/gitlab/gitee,默认 github): - 直接回车,默认github。
    • 请输入 Oauth2 应用的 Client ID: - 之前保存的 Client ID。
    • 请输入 Oauth2 应用的 Client Secret: - 之前保存的密钥。
    • 请输入 GitHub/Gitee 登录名作为管理员,多个以逗号隔开: - 填写你的用户名,不是你登陆的账号或者自定义的别名。
    • 请输入站点标题: - 随意。
    • 输入站点访问端口: (默认 8008) - 服务面板的访问端口,可自定义。
    • 请输入用于 Agent 接入的 RPC 端口: (默认 5555) - 客户端和服务面板的通讯端口。
  2. 配置反向代理

    • 在宝塔面板中新建一个站点,域名填写公开访问域名,如 "monitor.lvzhiqiang.top"。
    • 然后点击"设置"进入站点设置选项,选择“反向代理” - "添加反向代理"。
    • 自定义一个代理名称,在下方"目标 URL"中填入 http://127.0.0.1 然后点击"保存"。
    • 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:

      #PROXY-START/
      location / {
       proxy_pass http://127.0.0.1:8008;
       proxy_set_header Host $http_host;
       proxy_set_header      Upgrade $http_upgrade;
      }
      location ~ ^/(ws|terminal/.+)$  {
       proxy_pass http://127.0.0.1:8008;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
      }
      #PROXY-END/
      
  3. 此时可以直接使用域名,如:"http://monitor.lvzhiqiang.top" 来访问面板。

  4. 将来如果需要再次运行脚本来打开管理脚本 ,可以运行:bash ./nezha.sh

管理面板配置

服务器

服务器区域负责管理 Agent,是哪吒探针中最基础的区域,也是其他功能的基础。

  1. 新增服务器
    • 第一步是新增服务器,可以自定义名称、分组、排序和备注。
    • 拥有相同分组的服务器会在受支持的主题中划分到一起进行显示,备注仅会在后台显示,无需担心泄露信息。
  2. 安装 Agent
    • 点击新添加的服务器旁,绿色的 Linux 图标按钮,复制一键安装命令。
    • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到 Dashboard 主页查看服务器是否上线。

服务

服务区域是设置 Agent 监控外部网站或服务器的功能设置区,设置好的服务监控可以在主页中的 "服务" 页查看过去 30 天的可用性监控结果。

  1. 添加监控

    • 名称 - 自定义一个名称,例如上海电信。
    • 类型 - 选择一个监控类型,目前哪吒监控支持三种监控类型,分别是 “HTTP-GET”、“ICMP-Ping” 和 “TCP-Ping”。
    • 目标 - 根据你选择的类型不同,目标的设置方法也不同

      HTTP-GET: 选择此类型,你应该输入一个URL作为目标,URL需添加 http:// 或 https:// 如果你的目标URL是 https:// ,将会同时监控该URL的SSL证书,当SSL证书到期或发生变更,会触发提醒。
      ICMP-Ping: 选择此类型时,你应该输入一个域名或IP,不含端口号,例如:1.1.1.1 或 example.com
      TCP-Ping: 选择此类型时,你应该输入一个域名或IP并包含端口号,例如:1.1.1.1:80 或 example.com:22
      
    • 请求间隔: 设定 Agent 每次请求目标的时间间隔,以秒为单位。

    • 覆盖范围: 选择一条规则来确定要使用哪些 Agent 来请求目标。

    • 特定服务器: 配合覆盖范围使用,选择规则内需要排除的 Agent。

    • 通知方式组: 选择你已经在 “告警” 页设置好的通知方式,点击这里了解详情。

    • 启用故障通知: 根据需要选择是否接收目标故障通知,默认为不勾选。

  2. 延迟监控

| 地区 | 电信 | 移动 | 联通 | 教育 | | ------ | --------------- | --------------- | --------------- | ------------- | | 上海 | 202.96.209.133 | 183.194.219.220 | 210.22.97.1 | 202.120.2.119 | | 北京 | 49.7.37.74 | 112.34.111.194 | 111.206.209.44 | 166.111.4.100 | | 广州 | 183.47.126.35 | 120.233.18.250 | 157.148.58.29 | 202.116.64.8 | | 河北 | 27.185.242.215 | 111.62.229.100 | 61.182.138.156 | | | 山西 | 1.71.157.41 | 183.201.244.91 | 60.221.18.41 | | | 辽宁 | 123.184.58.41 | 36.131.156.145 | 218.61.211.132 | | | 吉林 | 123.172.127.217 | 111.27.127.176 | 122.143.8.41 | | | 黑龙江 | 42.101.84.132 | 111.42.190.25 | 113.7.211.140 | | | 江苏 | 58.215.210.220 | 36.156.92.132 | 122.96.235.165 | | | 浙江 | 115.220.14.91 | 117.147.213.41 | 101.69.194.224 | | | 安徽 | 223.247.108.251 | 112.29.198.100 | 112.132.208.41 | | | 福建 | 106.126.10.28 | 112.50.96.88 | 36.248.48.139 | | | 江西 | 106.227.22.132 | 117.168.150.249 | 116.153.69.224 | | | 山东 | 144.123.160.140 | 120.220.145.91 | 112.240.56.143 | | | 河南 | 171.15.110.220 | 111.7.99.220 | 123.6.65.101 | | | 湖北 | 111.170.8.60 | 111.47.131.101 | 122.189.226.138 | | | 湖南 | 113.240.117.108 | 120.226.192.91 | 116.162.28.220 | | | 广东 | 183.36.23.111 | 183.240.65.191 | 112.90.211.100 | | | 海南 | 124.225.43.220 | 111.29.29.219 | 153.0.226.35 | | | 四川 | 118.123.218.220 | 183.220.151.41 | 101.206.163.49 | | | 贵州 | 58.42.61.132 | 61.243.18.220 | 117.187.254.132 | | | 云南 | 222.221.102.220 | 36.147.44.219 | 14.204.150.41 | | | 陕西 | 124.115.14.100 | 111.19.148.100 | 123.139.127.132 | | | 甘肃 | 118.182.228.91 | 117.157.16.41 | 59.81.94.53 | | | 青海 | 223.221.216.219 | 111.12.152.170 | 116.177.237.137 | | | 内蒙古 | 110.76.186.70 | 117.161.76.41 | 116.114.98.41 | | | 广西 | 222.217.93.55 | 36.136.112.41 | 171.39.5.51 | | | 西藏 | 113.62.176.89 | 117.180.234.41 | 43.242.165.35 | | | 宁夏 | 222.75.44.220 | 111.51.155.214 | 116.129.226.28 | | | 新疆 | 110.157.243.45 | 36.189.208.164 | 116.178.77.40 | | | 天津 | 42.81.98.35 | 111.31.236.35 | 116.78.119.56 | | | 重庆 | 119.84.131.101 | 221.178.81.101 | 113.207.69.190 | |

任务

  1. 在任务区域中,可以设置计划任务,触发任务,多服务器批量执行任务。
  2. 哪吒监控支持推送命令到 Agent 执行,因此此功能非常灵活,使用此功能可以定期结合 restic、rclone 给服务器备份,定期重启某项服务来重置网络连接。也可以配合告警通知,在触发告警时执行某项任务,如 CPU 在长时期处于高占用的情况下运行某个脚本。
  • 添加计划任务
    • 名称 - 自定义一个任务名称。
    • 任务类型 - 选择任务的类型。 计划任务 - 按下方设置的计划时间,周期性执行任务。 触发任务 - 仅被 API 或告警规则触发的任务,每次触发执行一次。
    • 计划 - (使用触发任务类型时不生效)设置计划时间,时间的格式为: * * * * * * 分别对应 秒 分 时 天 月 星期,详情见计划表达式格式。 如:0 0 3 * * * 对应为 每天3点。
    • 命令 - 你可以在这里设置需要执行的命令,就像写 Shell/Bat 脚本一样,但是不推荐换行,多个命令使用 &&/& 连接。 例如执行定期重启命令,可以在这里输入 reboot。
    • 覆盖范围 和 特定服务器 - 跟“服务”页中的设置类似,选择规则来确定哪些 Agent 执行计划任务。 使用触发任务类型时,可选择由触发的服务器执行。
    • 通知方式组 - 选择你已经在 “告警” 页设置好的通知方式。
    • 推送成功的消息 - 勾选此项,任务执行成功后会触发消息通知。

告警

哪吒监控支持对服务器的负载、CPU、内存、硬盘、流量、月流量、进程数、连接数进行监控,并在其中某项达到用户设定值时发送告警通知。

  • 基本规则

    - type:可选取一个或多个类型,如在一个规则中选择了多个类型,需要同时满足所有选择的类型才会触发通知(可参考后面的示例)
      - cpu、memory、swap、disk
      - net_in_speed 入站网速、net_out_speed 出站网速、net_all_speed 双向网速、transfer_in 入站流量、transfer_out 出站流量、transfer_all 双向流量
      - offline 离线监控
      - load1、load5、load15 负载
      - process_count 进程数 目前取线程数占用资源太多,暂时不支持
      - tcp_conn_count、udp_conn_count 连接数
    - duration:持续数秒,数秒内采样记录 30% 以上触发阈值才会报警(防数据插针)
    - min 或 max:
      - 流量、网速类数值 为字节(1KB=1024B,1MB = 1024*1024B)
      - 内存、硬盘、CPU 以占用百分比计数
      - 离线监控无需设置此项
    - cover:
      - 0 监控所有,通过 ignore 忽略特定服务器
      - 1 忽略所有,通过 ignore 监控特定服务器
      - 例如:[{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
    - ignore: 选择忽略特定服务器,搭配 cover 使用,内容为服务器 id 和布尔值,例如:{"1": true, "2":false}
    
  • 流量监控规则

    - type:
    - transfer_in_cycle 周期内的入站流量
    - transfer_out_cycle 周期内的出站流量
    - transfer_all_cycle 周期内双向流量和
    - cycle_start: 统计周期开始日期(可以是你机器计费周期的开始日期),时间格式为RFC3339,例如北京时间为2022-01-11T08:00:00.00+08:00
    - cycle_interval:每隔多少个周期单位(例如,周期单位为天,该值为 7,则代表每隔 7 天统计一次)
    - cycle_unit: 统计周期单位,默认hour,可选(hour, day, week, month, year)
    - min/max、cover、ignore 参考基本规则配置
    

  • 通知方式

    • API接口

      名称:企业微信-jav
      URL:https://jav.lvzhiqiang.top/coin/serverMonitorAlarm
      请求方式: POST
      请求类型: JSON
      Body: {"内容": "#NEZHA#"}
      
    • 企业微信

      名称:企业微信-群聊机器人
      URL:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx
      请求方式: POST
      请求类型: JSON
      Body: {"msgtype":"markdown","markdown":{"content":"# 哪吒通知消息\n\n\"#NEZHA#\""}}
      
  • 告警规则

    • 离线通知
    • [{"type":"offline","duration":10}]
    • 流量告警
    • [{"type":"transfer_all_cycle","max":1099511627776,"cycle_start":"2024-04-14T00:00:00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"1":true}}]
    • 网速报警
    • [{"type":"net_out_speed","max":5242880,"duration":10,"ignore":{"3":true}}]
    • CPU100%
    • [{"type":"cpu","max":98,"duration":10}]
    • CPU+内存
    • CPU 持续 10s 超过 50% 且 内存持续 20s 占用低于 20% 的报警
    • [{"type":"cpu","max":50,"duration":10},{"type":"memory","min":20,"duration":20}]

设置

  1. 未接入 CDN 的面板服务器域名/IP
    • 设置好通信域名,此域名不可以接入CDN,这里以示例通信域名 "monitor-data.lvzhiqiang.top" 来做演示。
    • 进入后台管理面板,转到“设置”页,在“未接入 CDN 的面板服务器域名/IP”项中填入通信域名,然后点击"保存"。
  2. 调整最大TCPPing值
    • 修改文件:/nezha/data/config.yaml,调整MaxTCPPingValue值。
  3. 隐藏服务中的状态文字

    <style>
    .service-status .delay-today-text{display: none;visibility: hidden;}
    </style>
    
  4. 设置页面宽度

    <style>
    .container {
    	width: 1540px;
    }
    </style>
    

参考链接

https://bigdata.icu/tools/soft/nezha.html https://nezha.wiki

结束语

  • 未完待续...