Skip to content
Go back

【归档文章】CentOS7 下搭建哪吒监控面板(附带监控端的安装)

| 0 Views Edit page

关于搭建哪吒监控面板的教程。

注:这篇文章是从旧的博客系统中迁移过来的、我觉得还存在价值的文章。但是由于时间关系,可能已经不再是最佳实践,请仅作参考。

1. Zabbix 痛点和其他监控面板的选型

虽然已经搭建了 Zabbix 用以监控业务服务器的运行状况,不过其仍存在部分痛点:

  1. 繁琐的 agent 节点添加流程,注定了它不适用于生命周期较短的边缘服务器。
  2. 需要双向开放端口用以通信。国外不少小厂商的控制面板上并不支持安全组相关的操作,因此“允许某 IP 连接本服务器的某端口”只能通过 iptables 等进行实现,耗费时间。

于是乎重新挑选了一下轻量级的监控面板,发现全球主机交流论坛上比较火两款监控(探针面板)是 ServerStatusnezha(哪吒),稍稍做了下对比:

项目ServerStatusnezha(哪吒)
开源
语言Python2.7Go
前端面板
无需 agent 端开放端口
agent 对 server 的注册方式agent 端执行安装脚本时手动填写在前端面板上填写 agent 信息后,复制带参数的命令,去 agent 服务器上一键执行
前端面板主题切换上传并替换 server 端文件前端面板设置处切换

最终考虑哪吒监控面板添加 agent 节点更加简单,因此选用。

2. 哪吒监控面板的运作方式

不关注具体实现,简单来说哪吒监控主要做了 2 件事:

  1. agent 端将监控数据 Push 给 server 后端。
  2. server 后端处理和保存监控数据后,在前端需要时将其返回。

运作方式

3. 安装部署

3.1 安装前的准备工作

在进行哪吒监控的安装部署之前,还需要准备些东西:

  1. 两个域名,都解析到 server 端服务器的 IP 地址上。其中一个给前端面板用,另一个给 agent 端推送监控数据时用。我的是 nezha.ceshiku.cnnezha-api.ceshiku.cn。​需要注意的是nezha-api.ceshiku.cn 这种给 agent 端准备的域名,由于是用以解析 server 端服务器 IP 地址的,因此不能套 CDN!
  2. 在 GitHub 创建 OAuth App 后获取 Client IDClient secrets,并填写 server 前端面板域名的回调地址。

OAuth App 信息填写

关于如何创建 OAuth App 可以看官方的这篇文档:创建 OAuth 应用程序,记得在创建后保存 Client IDClient secrets

3.2 安装 server 端

官方文档:安装 Dashboard

  1. 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

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

curl -L https://jihulab.com/nezha/nezha/-/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
  1. 选择安装面板端:

安装面板端

  1. 安装完成后输入 GitHub OAuth App 的相关信息:

输入信息

  1. 配置成功后,前往你的地址查看,我这里端口用的默认,因此地址是:http://nezha.ceshiku.cn:8008

测试访问

  1. 安装 Nginx、修改配置使其支持只用域名访问:
# 安装 Nginx 并设置为开启自启动
yum -y install epel-release
yum -y install nginx
systemctl enable nginx
# 启动 Nginx
service nginx start
# 修改配置文件
vi /etc/nginx/nginx.conf

添加这么一段:

    server {
        listen       80;
        server_name  nezha.ceshiku.cn;

        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;
        }
    }

之后重启 Nginx:

nginx -s reload
service nginx restart

接着尝试用域名直接访问,可以发现成功了:
仅域名访问

  1. 打开 Cloudflare 的 SSL/TLS 加密模式使支持 HTTPS 访问:

打开小云朵
确保 SSL/TLS 加密模式为灵活

再访问以下发现有小锁了,成功:
SSL 生效

至此哪吒监控的 server 端就安装完成了。

3.3 安装 agent 端

官方文档:安装 Agent

  1. 配置 agent 访问 server 后端用的域名:

配置 agent 访问 server 后端用的域名

  1. 登陆 server 面板并添加一台需要监控的主机:

添加主机

  1. 复制 agent 一键安装命令并前往服务器执行:

复制 agent 一键安装命令
执行

之后回到面板,就能看到监控生效了:

监控生效

  1. 修改 agent 监控端的配置来关闭远程 SSH 功能或增大信息上报的间隔。
    找到并编辑配置文件:
vi /etc/systemd/system/nezha-agent.service

找到下面这一行:

ExecStart=/opt/nezha/agent/nezha-agent -s nezha-api.ceshiku.cn:5555 -p 0bcxxxxxxxxxxxf39 --disable-auto-update

我关闭了远程 SSH 功能并将上报间隔改为了 2 秒,以下是配置行可供参考:

ExecStart=/opt/nezha/agent/nezha-agent -s nezha-api.ceshiku.cn:5555 -p 0bcxxxxxxxxxxxf39 --disable-auto-update --disable-command-execute --report-delay=2

重启 nezha-agent 后生效:

systemctl daemon-reload
service nezha-agent start

完成的可配置项如下:

参数解释
—report-delay系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
—skip-conn不监控连接数,机场/连接密集型机器推荐设置,不然比较占 CPU(shirou/gopsutil/issues#220)
—skip-procs不监控进程数,也可以降低 agent 占用
—disable-auto-update禁止 Agent 自动更新(安全特性)
—disable-command-execute禁止在 Agent 机器上执行定时任务、打开在线终端(安全特性)

至此哪吒监控的 agent 端就安装完成了。

4. 后记

得益于开发者奶爸提供的一键脚本,哪吒监控的安装部署可以说是相当简单,其文档中记录的常见问题与解决方案更是全面,非常值得学习。


Edit page