哪吒监控(NeZha)是一种开源的分布式监控系统,用于收集和展示各种系统或应用程序的监控数据。它由京东开源,采用Java语言编写,旨在提供高性能、易扩展和易用性的监控解决方案。

github

https://github.com/naiba/nezha

获取 Github 的 Client ID 和密钥

首先我们需要新建一个验证应用,以 Github 为例,登录 Github 后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App” Application name - 随意填写 Homepage URL - 填写面板的访问域名,如:"http://nezha.example.com" Authorization callback URL - 填写回调地址,如:"http://nezha.example.com/oauth2/callback" 点击 “Register application” 保存页面中的 Client ID,然后点击 “Generate a new client secret“,创建一个新的 Client Secret,新建的密钥仅会显示一次,请妥善保存

安装 Dashboard

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

等待Docker安装完毕后,分别输入以下值: OAuth提供商 - Github,Gitlab,Jihulab,Gitee 中选择一个 Client ID - 之前保存的 Client ID Client Secret - 之前保存的密钥 用户名 - OAuth 提供商中的用户名 站点标题 - 自定义站点标题 访问端口 - 公开访问端口,可自定义,默认 8008 Agent的通信端口 - Agent与Dashboard的通信端口,默认 5555 修改配置文件/opt/nezha/dashboard/data/config.yaml

proxygrpcport: 443
tls: true

修改完成后,运行nezha.sh并选择5,重启面板。

Nginx代理设置

server {
        listen       443 ssl;
        server_name  nezha.example.com;
        ...
        #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/
    }

    server {
        listen 443 ssl http2;
        server_name grpc.example.com;
        ...
        underscores_in_headers on;
        location / {
            grpc_read_timeout 300s;
            grpc_send_timeout 300s;
            grpc_socket_keepalive on;
            grpc_pass grpc://grpcservers;
        }
    }

    upstream grpcservers {
        server 1127.0.0.1:5555;
        keepalive 1024;
    }

设置CF

在网络设置中,开启gRPC和WebSocket 在https://one.dash.cloudflare.com/页面中新建隧道 在Public Hostname新建 填入以下内容 同时Additional application settings 设置TLS Origin Server Name 输入域名 HTTP2 connection 选择开启 设置HTTP Settings HTTP Host Header 输入域名 在DNS在添加一条A记录,并开启小黄鱼 此时,我们完成了CF反代哪吒的设置,面板和GRPC服务的真实IP都被隐藏。

CF客户端支持http2

指定Cloudflare Tunnel的传输协议为http2 对于直接通过官网service install一键安装的用户,需要在systemd配置中增加 --protocol http2 参数,请在安装时修改。 修改文件 /etc/systemd/system/cloudflared.service

#找到并修改启动命令
ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --protocol http2 --token 你的Token

#完成修改后刷新配置并重启服务
systemctl daemon-reload
systemctl restart cloudflared

一键安装 Agent

目前哪吒监控已支持在 Windows 和 Linux上一键安装 Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作

你需要提前在管理面板中设置好通信域名,这里以前面提到过的示例通信域名 “grpc.example.com” 来做演示 进入后台管理面板,转到“设置”页,在“未接入 CDN 的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

在 Linux 中一键安装 (Ubuntu、Debian、CentOS)

首先在管理面板中添加一台服务器 点击新添加的服务器旁,绿色的 Linux 图标按钮,复制一键安装命令 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到 Dashboard 主页查看服务器是否上线

在 Windows 中一键安装

首先在管理面板中添加一台服务器 点击新添加的服务器旁,绿色的 Windows 图标按钮,复制一键安装命令 进入 Windows 服务器,运行 PowerShell,在 PowerShell 中运行复制的安装命令 如遇到确认「执行策略变更」请选择 Y 等待安装完成后返回 Dashboard 主页查看服务器是否上线