【技术种草】如何批量检测自己服务器状态?云探针面板搭建教程

作者:Mintimate

博客:https://www.mintimate.cn Mintimate's Blog,只为与你分享

封面不能少!!!

云探针

云探针是什么呢?云探针,其实就是用TCP,对服务器进行一次握手连接后,得到服务器的运行状态。

本次的云探针,使用哪吒面板,可以实现对自己(多台)服务器:

  • 支持系统状态
  • HTTP、TCP、Ping 监控报警
  • 计划任务
  • 在线终端
探针

推荐多服务器用户搭建,为了提升安全性,最好再准备

  • 域名:用于解析域名到哪吒面板(探针面板)API接口,同时可以编译面板迁移。
  • CDN:用户解析到面板监控地址,对面板IP进行防护,同时也方便迁移。

本次教程,使用的方案:域名+CDN+服务器

双十一买了那么多台服务器,终于可以批量监控了嗷~

可以批量监控自己服务器嗷

效果演示

其实腾讯云的控制台,信息很全,在控制台也可以看到当前的CPU和带宽等,一次看一台:

控制台

但是总是不直观,比如,我这样的个人开发者,有个几台服务器,就需要一个一个点开查看:

服务器多的情况下

探针功能

这个时候,我们的探针搭建好,就可以直观地查看了:

探针

这个时候是不是看到我两台服务器CPU爆满呢?

主要是,我在编译编译Android源码,所以CPU跑慢,这样探针,也方便我查看是否编译完成。

在线登录

在线登录功能,其实就是远程SSH。我知道有很多SSH的软件,比如:腾讯云的在线一键登录、Windows的Powershell和Linux/macOS的Terminal等等。

但是哪吒面板也提供了一键SSH登录,效果和腾讯云的在线一键登录类似:

一键登录

登录效果:

登录成功

当然,这样的登录,是免密的,使用前提:

  • 用户登录哪吒面板
  • 有Nginx反代环境支持

话不多说,下面我们就开始教程吧。

前置条件

首先是前置条件,基础要求简单:

  • 至少一台服务器
  • Github或Gitee账号

提升体验:

  • 两个域名(不用顶级域名,两个二级或三级域名即可)
  • CDN(推荐使用腾讯云CDN内容分发)

最近双十一,强烈推荐新用户服务器购买:https://curl.mintimate.cn/1jccDM8rK1S

双十一服务器推荐

这里假设我准备了域名:

  • ops.mintimate.cn:面板对外域名(可使用CDN)
  • nezha.mintimate.cn:探针连接域名(不可使用CDN)

为什么要这样呢?画了一个简单的图解:

为什么需要两个域名

也就是:

  • 面板对外域名(CDN)是用来公网访问的;
  • 探针连接域名(不可使用CDN),是用来接受探针数据,方便日后迁移面板。

CDN解析

考虑到用CDN的小伙伴,没有服务器人那么多,这里介绍如何使用腾讯云的CDN解析。首先是登录腾讯云的CDN后台:https://console.cloud.tencent.com/cdn

之后,在这里添加域名:

添加域名

记得配置Https,增加安全性:

配置Https

搭建面板

首先我们需要申请一个Oauth,之后才可以正式搭建面板,该服务器作为面板所在服务器并提供探针。

申请Oauth

申请Oauth,你可以使用GitHub,也可以使用Gitee的,二者取其一即可:

  • GitHub:https://github.com/settings/developers
  • Gitee: https://gitee.com/oauth/applications

本文介绍Gitee方法,GitHub其实也差不多。

权限默认即可:

默认权限

其中:

  • 应用名称:随意,只是代号。
  • 应用描述:同上面板对外域名,可以为IP,但是不安全。
  • 应用主页:同上面板对外域名加上回调地址,哪吒面板回调地址为:/oauth2/callback

创建应用后,得到:

  • Client ID:客户端ID,后文需要。
  • Client Secret:客户端密钥,后文需要。
    创建完成

远程连接

这里我们使用SSH远程连接我们的服务器:

远程连接成功

这里我服务器使用了oh-my-zsh,如果你也想使用,文章:Linux/Mac如何配置ZSH并使用Oh-my-zsh?让你的终端更加实用、美观

运行脚本

根据官网项目提示,我们可以使用一键安装脚本进行安装:

代码语言:txt
复制
curl -L https://cdn.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh
CN=true sudo ./nezha.sh

这里注意,我们最好在一个空文件夹内运行脚本,方便后续调出脚本控制界面,比如:

运行安装脚本

之后,会询问是否安装,我们选择1

选择1:安装面板

选择后,输入Gitee(如果前文你使用GitHub,就直接回车):

选择Gitee

最后,输入上文生成的客户端ID和密钥即可:

安装完成

到此,面板就安装完成了。其实,就可以放行8008端口后,浏览器访问了。但是我们为了访问方便、安全,使用Nginx进行反向代理。

注意,管理员账号是这个:

账号和这个一样

Nginx反向代理

Nginx反向代理过于简单,但是考虑很多用户使用宝塔面板,所以提供两个步骤演示:

  • 常规方法:使用编译、软件包管理器或Docker安装的Nginx,自己设置Nginx.conf。
  • 宝塔方法:使用宝塔安装的Nginx。

如果你不知道如何安装Ngixn,参考:一篇文章、三种方法在Debian上轻松安装Nginx

这里解析的域名为上文提到的面板对外域名(可使用CDN),也就是上文假设的ops.mintimate.cn。如果是腾讯云的CDN,可以到CDN控制台设置.

常规方法

常规方法,新建一个conf,在conf内添加反向代理:

代码语言:txt
复制
location /
{
	proxy_pass http://127.0.0.1:8008;
	proxy_set_header Host $host;
}
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 $host;
}
Nginx设置

其中:

代码语言:txt
复制
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 $host;
}

为远程terminal功能,需要Nginx安装正则规则,如果不需要远程登录功能,可以不写。

最后,保存重载Nginx配置即可。

宝塔方法

宝塔方法也很简单,添加网站后,选择反向代理:

反向代理

添加任意代理后,进行编辑:

编辑

粘贴内容:

代码语言:txt
复制
location /
{
	proxy_pass http://127.0.0.1:8008;
	proxy_set_header Host $host;
}
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 $host;
}
修改反向代理

其中:

代码语言:txt
复制
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 $host;
}

为远程terminal功能,需要Nginx安装正则规则,如果不需要远程登录功能,可以不写。

浏览器访问

这个时候,就可以浏览器访问了,如果开启CDN,可能会有缓存机制,记得清缓存。

浏览器访问成功

创建探针

现在,我们就可以创建探针了,首先是面板的初始化,然后是创建探针,最后是安放探针。

初始化面板

初始化面板,很简单。浏览器访问面板后,点击登录:

点击登录

之后,会使用Gitee/GitHub进行验证:

验证

验证后,我们的初始化就完成了。

初始化完成后,进入后台

添加密钥

之后,我们添加一个密钥,点击右上角的添加主机

添加服务器
添加后,得到密钥

这个密钥很重要,也就是下文的Agent密钥,用于绑定服务器的。

安插探针

之后,我们登录我们需要检测的服务器,运行上文的搭建面板-运行脚本内的一键脚本,也就是:

代码语言:txt
复制
curl -L https://cdn.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh
CN=true sudo ./nezha.sh

当然,如果之前已经运行过此脚本,可以直接运行脚本:

之前有安装脚本的话

这个时候,我们就不是选择安装面板端了,而是选择8(安装监控Agent):

安装监控(探针)
i安装过程

其中:

  • 不可前套CDN的域名,就是上文提到的“「nezha.mintimate.cn:探针连接域名(不可使用CDN)」”

这个时候,我们就可以在面板主页,看到我们的服务器了:

我们的服务器

注意事项

当然,你也可以添加更多的探针,但是需要注意:

  • 添加主机后,可能无法立刻显示密钥,这个时候是缓存的原因;如果你没有使用CDN,可以直接浏览器强制刷新,如果你使用CDN,可以到CDN控制台进行刷新预热。
  • 迁移面板很简单,数据储存在 /opt/nezha 文件夹中,迁移数据时打包这个文件夹,到新环境解压。然后执行一键脚本安装即可。

END

到此,我们的云探针面板就安装完成了嗷。很多人关心性能问题,其实不管是面板还是探针,对服务器的内存消耗都极低。

其中,面板功能,可在64M内存服务器上运行,探针的话,就更不用说了嗷。

真不错