开源、轻量、易用的服务器监控,实战部署哪吒监控
小明同学爱动漫
2025年06月29日 00:02
收录于文集
共6篇

大家好,我是小明同学。

你是否也曾担心:

  • 服务器突然宕机,数据丢失?

  • 网站访问速度变慢,影响用户体验?

  • 对服务器状态一无所知,无法及时处理问题?

现在,有了 哪吒监控,这些问题统统可以解决! 哪吒监控是一款开源、轻量、易用的服务器监控工具,可以帮助你实时了解服务器状态,及时发现并解决问题。

项目地址:https://github.com/naiba/nezha

什么是哪吒监控?

哪吒监控是一款开源的服务器监控面板,它可以监控服务器的 CPU、内存、硬盘、网络等各项指标,并提供实时图表和告警功能。

哪吒监控的核心特点是:

  • 开源免费: 任何人都可以免费使用和贡献。

  • 轻量易用: 占用资源少,部署简单,操作方便。

  • 功能强大: 支持多种监控指标、告警方式、自定义面板等。

  • 跨平台支持: 支持 Linux、Windows、macOS 等多种操作系统。

为什么需要服务器监控?

服务器是互联网服务的基石,其稳定运行至关重要。然而,服务器在运行过程中难免会遇到各种问题,例如:

  • 资源瓶颈: CPU 占用过高、内存不足、硬盘空间不足等。

  • 网络异常: 网络延迟、丢包、连接超时等。

  • 服务故障: 服务崩溃、进程退出等。

如何部署哪吒监控?

哪吒监控的部署非常简单,这里以 Docker 部署为例:

准备工作

搭建哪吒监控的 Dashboard,你需要:

  • 1.一台可以连接公网的服务器。防火墙和安全策略需放行 8008 端口,否则无法访问或接收数据。单核 512MB 内存的服务器即可满足大多数使用场景。

  • 2.一个已设置好 A 记录,指向 Dashboard 服务器 IP 的域名。

如果你想使用 CDN,请准备两个域名:

  • 一个配置好 CDN,用作公开访问,CDN 需支持 WebSocket 协议;

  • 另一个域名不使用 CDN,用作 Agent 与 Dashboard 的通信。

尽管 V1 版本不再区分访问端口和通信端口,但由于不同厂商的 CDN 配置可能导致通信异常,仅建议按上述方式准备域名(非强制要求)。

我已经在cloudflare配置好了,关掉小黄云就是不是用CDN。

部署面板

1.安装 Docker: 确保你的服务器上已经安装了 Docker和Docker Compose。

参考我之前的文章一步到位!Docker全家桶一键安装,省时省力,马上上手 原创

2. 在服务器中安装 Dashboard。

在面板服务器中,运行以下安装脚本:

代码块
JavaScript
自动换行
复制代码
curl-L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh &&chmod +x nezha.sh &&sudo ./nezha.sh  
复制成功

如果你的服务器位于中国大陆,可以使用镜像:

代码块
JavaScript
自动换行
复制代码
curl-L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh &&chmod +x nezha.sh &&sudoCN=true ./nezha.sh  
复制成功

以 Docker 安装为例,安装完成后按提示输入以下信息:

  • 请输入站点标题: - 自定义站点标题。

  • 请输入暴露端口: - 公开访问端口(默认 8008,可自定义)。

  • 请指定安装命令中预设的 nezha-agent 连接地址。:

  • 是否希望通过 TLS 连接 Agent。

  • 请指定后台语言: - 选择语言偏好。

3.访问 Web 界面: 在浏览器中输入 http://your_server_ip:8008 访问哪吒监控的 Web 界面。

首次登录的默认用户名和密码均为 

建议安装后立即进入管理页面:点击头像 → “个人信息” → “更新个人资料”修改密码。

4.配置反向代理

Nginx 配置示例

以下是使用 Nginx 配置反向代理的示例:

代码块
JavaScript
自动换行
复制代码
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    # http2 on; # Nginx > 1.25.1,请注释上面两行,启用此行

    server_name dashboard.example.com; # 替换为你的域名
    ssl_certificate          /data/letsencrypt/fullchain.pem; # 域名证书路径
    ssl_certificate_key      /data/letsencrypt/key.pem;       # 域名私钥路径
    ssl_stapling on;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m; # 如果与其他配置冲突,请注释此项
    ssl_protocols TLSv1.2 TLSv1.3;

    underscores_in_headers on;
    set_real_ip_from 0.0.0.0/0; # 替换为你的 CDN 回源 IP 地址段
    real_ip_header CF-Connecting-IP; # 替换为你的 CDN 提供的私有 header,此处为 CloudFlare 默认
    # 如果你使用nginx作为最外层,把上面两行注释掉

    # grpc 相关    
    location ^~ /proto.NezhaService/ {
        grpc_set_header Host $host;
        grpc_set_header nz-realip $http_CF_Connecting_IP; # 替换为你的 CDN 提供的私有 header,此处为 CloudFlare 默认
        # grpc_set_header nz-realip $remote_addr; # 如果你使用nginx作为最外层,就把上面一行注释掉,启用此行
        grpc_read_timeout 600s;
        grpc_send_timeout 600s;
        grpc_socket_keepalive on;
        client_max_body_size 10m;
        grpc_buffer_size 4m;
        grpc_pass grpc://dashboard;
    }
    # websocket 相关
    location ~* ^/api/v1/ws/(server|terminal|file)(.*)$ {
        proxy_set_header Host $host;
        proxy_set_header nz-realip $http_cf_connecting_ip; # 替换为你的 CDN 提供的私有 header,此处为 CloudFlare 默认
        # proxy_set_header nz-realip $remote_addr; # 如果你使用nginx作为最外层,就把上面一行注释掉,启用此行
        proxy_set_header Origin https://$host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_pass http://127.0.0.1:8008;
    }
    # web
    location / {
        proxy_set_header Host $host;
        proxy_set_header nz-realip $http_cf_connecting_ip; # 替换为你的 CDN 提供的私有 header,此处为 CloudFlare 默认
        # proxy_set_header nz-realip $remote_addr; # 如果你使用nginx作为最外层,就把上面一行注释掉,启用此行
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_buffer_size 128k;
        proxy_buffers 4 256k;
        proxy_busy_buffers_size 256k;
        proxy_max_temp_file_size 0;
        # proxy_set_header X-Forwarded-Proto $scheme; # 如果你使用nginx作为最外层,就启用此行避免无法正确读取访问的协议
        proxy_pass http://127.0.0.1:8008;
    }
}

upstream dashboard {
    server 127.0.0.1:8008;
    keepalive 512;
}
复制成功

Caddy 配置示例

以下是使用 Caddy 配置反向代理的示例:

代码块
JavaScript
自动换行
复制代码
dashboard.example.com {
    @grpcProto {
        path /proto.NezhaService/*
    }

    reverse_proxy @grpcProto {
        header_up Host {host}
        header_up nz-realip {http.CF-Connecting-IP} # 替换为你的 CDN 提供的私有 header,此处为 CloudFlare 默认
        # header_up nz-realip {remote_host} # 如果你使用caddy作为最外层,就把上面一行注释掉,启用此行
        transport http {
            versions h2c
            read_buffer 4096
        }
        to localhost:8008
    }

    reverse_proxy {
        header_up Host {host}
        header_up Origin https://{host}
        header_up nz-realip {http.CF-Connecting-IP} # 替换为你的 CDN 提供的私有 header,此处为 CloudFlare 默认
        # header_up nz-realip {remote_host} # 如果你使用caddy作为最外层,就把上面一行注释掉,启用此行
        transport http {
            read_buffer 16384
        }
        to localhost:8008
    }
}
复制成功

配置注意事项

  • 1.调整 Header 根据您使用的 CDN 服务商,替换 CF-Connecting-IP 和相关配置为您的 CDN 提供的私有 header。

  • 2.HTTPS 配置 确保 SSL 证书路径正确,并已正确配置域名解析。

  • 3.负载调整 根据服务器性能和访问需求,可调整 keepalive 和 buffer 设置。

管理面板配置

1.服务器 进入管理面板,服务器页面中点击图标

复制生成的安装命令并在对应服务器上运行完成安装。

服务器页面展示

前台页面展示

2.服务 进入管理面板, 转到 服务 页,点击 + 按钮添加新的服务监控。

  • 名称:为此服务自定义一个名称。

  • 目标:根据监控类型设置目标:

  • HTTP GET:输入完整 URL(需包含 http:// 或 https://),例如:https://example.com 注意:如果目标 URL 使用 https://,哪吒监控将同时监控该 URL 的 SSL 证书(如证书到期或变更将触发通知)。

  • ICMP Ping:输入域名或 IP 地址(不含端口号),例如:1.1.1.1 或 example.com

  • TCPing:输入域名或 IP 地址并添加端口号,例如:1.1.1.1:80 或 example.com:22

  • 类型:选择监控类型(HTTP GETICMP Ping 或 TCPing)。

  • 服务中显示:选择是否向游客显示此监控(隐私性选项)。

  • 间隔:设置监控间隔时间(单位:秒)。

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

  • 特定服务器:指定覆盖范围内需要使用的 Agent。

  • 通知组 ID:选择已在 通知 页中配置的通知方式,详见 通知方式配置。

  • 启用失败通知:可选择在目标故障时接收通知(默认为不启用)。

服务页面展示

前台页面展示(需要开启服务中显示)

3.任务 进入任务页面,在管理面板中进入 任务 页,点击 + 按钮新增任务

添加任务时需要配置以下参数:

  • 名称:为任务自定义一个名称,便于管理和识别。

  • 任务类型

  • 计划任务:按设置的计划时间周期性执行任务。

  • 触发任务:任务仅通过 API 或通知规则触发,每次触发执行一次。

  • 计划:任务执行的时间计划(仅计划任务生效),格式为:秒 分 时 天 月 星期 详情参考 计划表达式格式。 示例:0 0 3 * * * 表示每天凌晨 3 点执行。

  • 命令:需要执行的命令。

  • 命令格式与 Shell/Bat 脚本相同,多个命令可用 &&(Linux)或 &(Windows)连接。

  • 示例:重启服务器输入 reboot

  • 覆盖范围 和 特定服务器:指定哪些 Agent 执行任务:

  • 可选择规则覆盖范围或特定服务器。

  • 对于触发任务,可选择“在触发通知的服务器上执行”。

  • 通知方式组:选择已在 通知 页配置的通知方式,详见 通知方式配置

任务页面展示

4.通知 进入任务页面,在管理面板中进入 通知 页,点击 + 按钮新增通知方式

Server 酱示例

  • 简单示例:

  • 名称:Server 酱

  • URLhttps://sc.ftqq.com/SCUrandomkeys.send?title=哪吒通知信息&desp=#NEZHA#​

  • 请求方式GET

  • 请求类型:默认

  • Body:空

  • 进阶示例:

  • 名称:Server 酱

  • URLhttps://sc.ftqq.com/SCUrandomkeys.send

  • 请求方式POST

  • 请求类型FORM

  • Body

代码块
JavaScript
自动换行
复制代码
{
  "title": "#SERVER.NAME#",
  "desp": "**#NEZHA#\n\n平均负载: \"#SERVER.LOAD1#\",\"#SERVER.LOAD5#\",\"#SERVER.LOAD15#\"\n\n## [点击访问面板](https://你的面板域名)\n\n![logo](https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg)"
}
复制成功

通知效果预览:

后面的功能请查看官方文档,这里就不详细说明了 官方文档:https://nezha.wiki/

谁适合使用哪吒监控?

  • 个人开发者: 监控自己的服务器,保障个人网站或应用的稳定运行。

  • 小型团队: 监控团队的服务器,及时发现并解决问题。

  • 运维人员: 实时掌握服务器的运行状态,保障系统稳定运行。

  • 所有需要监控服务器的人: 简单易用,功能强大,满足各种监控需求。

总结

哪吒监控 是一款开源、轻量、易用的服务器监控工具,它可以帮助你实时掌握服务器的运行状态,及时发现并解决问题,让你的服务稳如泰山。如果你正在寻找一款优秀的服务器监控工具,那么哪吒监控绝对值得你尝试!

立即行动,在你的 服务器上部署哪吒监控,告别服务器宕机焦虑!

好了,以上就是今天给大家分享的内容,我是爱分享的小明同学,如果今天的内容对你有帮助请记得收藏,顺便点点关注,咱们下期再见!谢谢大家~

📚 往期推荐

  • NAS导航面板进阶:Lucky动态域名反向代理+HTTPS访问 原创

  • 告别信息焦虑!NewsNow:打造你的专属新闻聚合中心 原创

  • 告别简陋!打造高颜值 NAS 导航面板:Sun-Panel 实战教程 原创

  • 在 Obsidian 中高效整合 DeepSeek 的完整指南:Smart Composer 助你笔记起飞! 原创

  • Obsidian+公众号完美联动,技术文档一键式发布方案 原创

  • AlgerMusicPlayer:让音乐回归纯粹的开源播放器 原创

  • it-tools:程序员的瑞士军刀,你的在线工具箱! 原创

  • 三行代码搞定HTTPS!acme.sh保姆级教程,永久免费自动续期! 原创

  • WeWe RSS:更优雅的微信公众号订阅方式,告别信息焦虑! 原创

  • 连续登顶 GitHub 的信息聚合神器:Follow,让你不再错过任何重要信息! 原创