又是一款系统探针程序.用了一段时间了.感觉很不错!

演示地址:哪吒面板 (naibahq.com)

naiba/nezha: 「哪吒面板」便携探针 (github.com)

服务期状态监控,被动接收(非 node-exporter 那种主动拉取的方式。)

系统设计

C/S 采用 gRPC 通信,客户端通过添加主机生成的单独 Token 上报监控信息。因为不会做成多用户的,上报信息会储存到内存中,暂不提供历史数据统计。

  • 首次连接:上报基本信息(系统、CPU基本信息),后面管理员可从客户端主动拉取更新。
  • 监控上报:每隔 3s 向服务器上报系统信息

目前可以使用作者提供的docker模式一键搭建,也可以go编译后直接运行主程序.这里我选用了编译的

安装编译所需依赖:

Centos7

yum -y install wget git gcc make

安装go编译环境:

wget https://golang.org/dl/go1.15.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz
echo “export PATH=$PATH:/usr/local/go/bin” >>/etc/profile
source /etc/profile

获取github源码

cd ~
git clone https://github.com/p14yground/nezha.git

探针分为dashboard面板和agent客户端,只需要简单编译即可获得。

编译

编译dashboard:

cd nezha
go mod tidy -v
go build cmd/dashboard/main.go

然后主目录会生成一个main的可执行文件,在/root下创建两个目录用于存放编译好的dashboard和agent,并把编译好的dashboard移动到对应目录。

mkdir -p /root/{dashboard,agent}
mv main /root/dashboard/

编译agent,一句话就好了,生成的二进制文件也移动到agent目录方便以后直接用:

go build cmd/agent/main.go
mv main /root/agent/agent

编写dashboard配置文件:

# 首先复制源码里的页面源码到dashboard目录下,复制后可以修改dashboard里的页面内容与logo
cp -ra resource /root/dashboard/

写入配置文件,请将对应的内容修改为你的信息在粘贴到ssh,可能需要删除掉注释

# 创建配置文件目录
mkdir /root/dashboard/data/
# 写入
cat > /root/dashboard/data/config.yaml<<-EOF
debug: true
httpport: 80 #前端访问端口
github:
  admin: # 多管理员
    - 11111 # 管理员1的 GitHub ID,复制自己GitHub头像图片地址,/[ID].png
  clientid: xxxxxxxxxx # 在 https://github.com/settings/developers 创建,无需审核 Callback 填 http(s)://域名或IP/oauth2/callback
  clientsecret: xxxxxxxxxxxxxxxxx
 # github上创建OAuth Apps获取
site:
  brand: 探针站点名
  cookiename: n4BMzCKdc44duTMtSJv3 # 随机Cookie
EOF

举个例子

cat > /root/dashboard/data/config.yaml<<-EOF
debug: false
httpport: 80
github:
  admin: # 2个管理员的ID
    - 12345678
    - 45678912
  clientid: s2AS3eBq2jtzTQNegF4x
  clientsecret: s2AS3eBq2jtzTQNegF4xs2AS3eBq2jtzTQNegF4x
site:
  brand: 哪吒探针
  cookiename: n4BMzCKdc44duTMtSJv3 # 随机Cookie
EOF

其中github id、clientid和clientsecret需要在GitHub获取,具体方法如下:

在设置中找到oauth apps创建一个新的应用:

填写站点名称和URL信息:

然后在github右上角,右键复制头像地址,在地址中获取你的github的id,格式为:/[ID].png

复制client id和client secret:

配置完毕后,启动监控面板。

cd /root/dashboard/
./main

启动后访问自己配置的域名和httpport端口,登录github账号然后添加需要监控的服务器,这里我们就以监控本机为例:

记录下面板生成的ID和密钥:

然后我们运行agent,-i参数接面板上生成的id,-p参数接密钥即可:

# 注意,监控端口为5555
cd /root/agent/
./agent -i 1 -s localhost:5555 -p 12a1c9abbc -d

这个探针没有复杂的配置,要监控其他小鸡直接把编译好的agent文件复制过去运行就行了。

一键配置后端脚本

cd ~ && wget https://dl.wxlost.com/tools/nezha/nezha.sh -O ~/nezha.sh
bash tz.sh

你也可以将脚本里agent的下载地址改成自己编译的