Docker建站(十八)哪吒面板:开源轻量的云探针

1、什么是探针

云探针可以监测服务器运行状态的,主要用途就是 监控服务器状态,在服务运行不正常时及时告警,以便尽快进行维护。

2、安装

提示:
如果你想使用 CDN,请准备两个域名,一个配置好 CDN 用作公开访问,CDN 需要支持WebSocket 协议;另一个域名不要使用 CDN,用作 Agent 端与 Dashboard 的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

2.1、准备 OAuth 应用

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

GitHub 创建流程:

新建一个验证应用(以 Github 为例):

登录 Github 后,打开

https://github.com/settings/developers

依次选择“OAuth Apps” - “New OAuth App”
配置项如下:

  • Application name - 随意填写
  • Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
  • Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"

注册 GitHub 应用

填好之后,点击 “Register application”
保存页面中的 Client ID,然后点击 “Generate a new client secret“,创建一个新的 Client Secret。

注意:
新建的密钥仅会显示一次,请及时保存。

Gitee 创建流程:

打开:

https://gitee.com/oauth/applications/new

和 GitHub 应用类似:

注册 Gitee 第三方应用

其他平台:

如果是 JihuLab ,应用创建入口为:

https://jihulab.com/-/profile/applications

Redirect URL 中应填入回调地址,在下方范围中勾选 read_userread_api,创建完成后,保存好应用程序 ID 和密码。

2.2、安装面板端

注意:
面板端只需要在一台服务器上安装,用于监控,建议配置高一点(10 台以内,1核1G 足够),不然机器一多可能承受不了。

如果在境外,执行:

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

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

Bash
1
curl -L https://cdn.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh

清北科技 CDN同样支持前端、GitHub资源等加速,说明文档参考:

清北科技 CDN
https://cdn.tsinbei.com

如果没有 Docker 环境,将会安装;等待Docker安装完毕后,分别输入以下值:

  • `OAuth提供商| - Github,Gitlab,Jihulab,Gitee 中选择一个
  • Client ID : 之前保存的 Client ID
  • Client Secret : 之前保存的密钥
  • 用户名 : OAuth 提供商中的用户名
  • 站点标题 : 自定义站点标题
  • 访问端口 : 公开访问端口,可自定义,默认 8008
  • Agent的通信端口 : Agent与Dashboard的通信端口,默认 5555

输入完成后,等待拉取镜像;
安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板。

面板端如果需要 HTTPS 或者使用标准端口,可以反向代理,不再赘述。

2.3、安装 Agent

参考文档:

一键安装 Agent
https://nezha.wiki/guide/agent.html

注意:如果你的系统是稀奇古怪的的非主流 Linux 发行版,例如 TencentOS 或它的新名字 OpenCloudOS,一键安装时下载 Agent 端会报错退出,这时只需要自行编写 Systemd 文件:

/usr/lib/systemd/system/nezha-agent.service
Text
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]

Description=Nezha Agent Service

[Service]

ExecStart=/opt/nezha/agent/nezha-agent -s <面板IP>:<面板端口> -p <Agent密钥>

Restart=always

[Install]

WantedBy=multi-user.target

替换信息后保存即可。

指令:

Bash
1
2
systemctl start nezha-agent #启动
systemctl stop nezha-agent #停止

启动后可能需要等待几分钟才能在面板端看到Agent上线。

用这种方式启动的服务无法通过systemctl enable开机自启动,不过可以:

Bash
1
echo 'systemctl start nezha-agent' >> /etc/rc.d/rc.local

把启动命令放到自启动脚本列表里。

3、接入 CDN

如果面板机只有 IPv4/IPv6,而 Agent 机器只有 IPv6/IPv4,通过<面板IP>:<面板端口>无法连接,需要通过 CDN。

以接入 Cloudflare CDN 为例,首先需要在控制台中打开 gRPC:

网络 - gRPC 设置

Cloudflare gRPC 代理要求源站有 HTTPS,示例 Nginx 配置文件:

Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server
{
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name <CDN 域名>;
    underscores_in_headers on;

    location / {
        grpc_read_timeout 300s;
        grpc_send_timeout 300s;
        grpc_socket_keepalive on;
        grpc_pass grpc://nezhagrpcservers;
    }
    
    ...
    SSL 证书等设置,此处省略
    ...
}

upstream nezhagrpcservers {
    server localhost:<面板 gRPC 端口>;
    keepalive 1024;
}

然后将 CDN 域名解析到此服务器即可。

如果监听端口不为80443,修改listen两行后添加 Origin Rules:

回源规则

另外,似乎 Nginx 仅一个网站监听在非标准端口时,不验证主机名。

Docker建站(十八)哪吒面板:开源轻量的云探针

https://blog.tsinbei.com/tw/archives/1164/

文章作者
Hsukqi Lee
发布于

2023-02-18

修改于

2024-05-08

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
1 条

JamYido

JamYido

怎么反向代理gRPC端口呢,看官方文档没看懂

  回复

Hsukqi Lee

Hsukqi Lee 作者

这两天刚刚搞定了一个,IPv6服务器没办法访问IPv4主控的gRPC端口,用Cloudflare解决了,我有空更新下这篇文章

  回复