- 依赖清单
node: v16.x <= v16.15.0
npm: 8.x <= 8.5.5
Linux: centos 7.9
wget https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.xz
tar xf node-v16.15.0-linux-x64.tar.xz -C /iflytek/server
cat << EOF >> ~/.bashrc
export PATH=$PATH:/iflytek/server/node-v16.15.0-linux-x64/bin
EOF
source ~/.bashrc
node -v
npm -v
# 部署依赖
# set npm registry
npm config set registry https://registry.npmmirror.com
npm cache clean --force
npm config get registry
npm install
# 若遇到npm镜像源认证错误,需要删除package-lock.json文件后再执行
#1、前端的vite.config.ts的proxy中/api/n9e的地址配置为:target: 'http://127.0.0.1:17000/',
#2、运行webapi: ./n9e webapi -c etc/config.toml
#3、启动本地前端项目:
npm run dev
#4、此时前端项目正常运行了
- 发布编译包
npm run build
- 依赖清单
system: CentOS 7.9
go: v1.16.x +
cmake: v3.21.3 +
mysql: v5.7 +
redis: v6.2 +
docker: v1.19.x +
- 部署依赖
# install basic dev dependency
yum -y install gcc gcc-c++ make automake autoconf libtool
# install go
wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar xvf go1.22.1.linux-amd64.tar.gz -C /iflytek/server
export PATH=$PATH:/iflytek/server/go/bin && go version
# config global varibale gopath by editing /etc/profile
cat << EOF >> /etc/profile
# go path begin
export GOROOT=/fun/server/go #go root path
export GOPATH=/fun/server/gopkg #go package path
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY='https://goproxy.cn,direct' #go proxy
# go path end
EOF
source /etc/profile # load the global variable
go env
# 部署mysql redis存储
yum install mysql-server redis -y
systemctl start mysql
systemctl start redis
systemctl enable mysql
systemctl enable redis
mysql -uroot -p < n9e.sql
# docker部署依赖
docker run --name mysql-8 -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d docker.kxdigit.com/n9e/mysql:8
docker run --name redis-6.2 -p 6379:6379 -d docker.kxdigit.com/n9e/redis:6.2
# go下载安装依赖
go mod tidy
# 注入编译好的前端包
cp -r pub .
# 检查配置参数
vim ./etc/config.toml
# 本地编译并运行
make
make run
- 前端文件注入
# 注入编译好的前端包
cp -r pub .
# 检查配置参数
vim ./etc/config.toml
# 本地编译并运行
make
make run
- 版本包发布
# 二进制发布
go install github.com/goreleaser/goreleaser@latest
make release
# docker发布
vim build.sh # 修改打包的镜像标签
sh build.sh <tag> # 制作镜像
- 验证
ss -tlnp|grep 17000 # Check whether sparrow.log has exception logs and whether the port is listening. Normally, the port is listening at 17000
访问方式:http://localhost:17000
or http://<server-ip>:17000
用户名密码: root
root.2020
Stellar基于夜莺开源版,作为一款 Go 写的监控系统,不仅部署方便,而且整体设计上非常开放和灵活,可以和开源生态上其他软件组合使用,适用于已有监控系统升级或从零搭建监控平台等场景。
- 采集器:可对接 telegraf、categraf、grafana-agent、datadog-agent、以及各类 exporter;
- 存储:可对接 prometheus、thanos、m3、victoriametrics 等。
-
stellar:平台本体,包含前后端主应用程序
-
mysql:存放配置类别信息,如用户,监控大盘,告警规则等
-
redis:存放访问令牌(JWT Token),心跳信息,如机器列表中CPU、内存、时间偏移、核数、操作系统、CPU架构等
-
nginx:作为反向代理服务器,响应服务静态资源的请求
-
prometheus:作为时序库接收夜莺 remote write 协议的数据
-
categraf:可以采集 OS、MySQL、Redis、Oracle 等常见的监控对象,也准备提供日志采集能力和 trace 接收能力
-
ibex:告警自愈功能依赖的模块,提供一个批量执行命令的通道,可以做到在告警的时候自动去目标机器执行脚本。
➜ # 夜莺的目录结构介绍
./
├── LICENSE //开源协议
├── Makefile //构建脚本
├── README.md
├── README_en.md
├── alert/ //告警引擎相关逻辑,对 Prometheus、Loki、TDEngine 等数据源做异常数据判断并产生告警事件。
├── center/ //中心端(节点)管理相关,Web 后端的逻辑
├── cli/ //命令行工具,用于 v5 版本升级 v6 版本时的数据迁移
├── cmd/ //项目的可执行文件,即入口包,所有的二进制的 main 函数入口都在这里。
├── conf/ //解析配置文件,配置文件在内存里映射的数据结构
├── doc/ //文档相关
├── docker/ //容器相关的文件,包括 Dockerfile 和 docker-compose 等,数据库的建表 SQL 也在这里。
├── etc/ //配置文件目录,重点关注 config.toml,如果使用了边缘机房的部署方案,还需要关注 edge.toml。
├── fe.sh*
├── go.mod //项目版本依赖包
├── go.sum
├── integrations/ //集成目录,包含比如 MySQL、Redis、Elasticsearch 等各个监控目标的内置仪表盘、告警规则等。
├── memsto/ //猜测是memory storage,缓存相关
├── models/ //模型定义,数据库操作相关的代码。
├── pkg/ //公开的库代码,可被外部应用程序依赖使用
├── prom/ //Prometheus 相关的代码,对PromQL的支持相关,包括 remote write 写数据以及查询接口的封装。
├── pushgw/ //Pushgateway转发网关 相关的代码,用于接收 remote write 数据、opentsdb 格式的数据、datadog 格式的数据、open-falcon 格式的数据,然后统一做格式转换写入后端存储。
└── storage/ //存储模块,MySQL 和 Redis 的初始化连接相关的代码。
# 四大模块
cli //升级用和主业务无关,先不了解
center //中心节点也就是n9e的完整版包含各种管理和配置,会调用alert和pushgw模块
alert //告警引擎,告警功能的各种代码
pushgw //转发网关,接收各种采集器的数据转发给时序库
- case
npm run build
> n9e-fe@v6.7.1 build
> tsc && cross-env NODE_OPTIONS=--max-old-space-size=6096 vite build
src/components/PromQueryBuilder/Operations/Operation.tsx:84:22 - error TS2345: Argument of type 'number | null' is not assignable to parameter of type 'VisualQueryOperationParamValue'.
Type 'null' is not assignable to type 'VisualQueryOperationParamValue'.
84 onChange(val);
~~~
src/pages/traceCpt/Search.tsx:326:72 - error TS2322: Type 'number | null' is not assignable to type 'number | undefined'.
Type 'null' is not assignable to type 'number | undefined'.
326 onChange={(num_traces) => setSearch({ ...search, num_traces })}
~~~~~~~~~~
Found 2 errors in 2 files.
Errors Files
1 src/components/PromQueryBuilder/Operations/Operation.tsx:84
1 src/pages/traceCpt/Search.tsx:326
这两个错误都是由于尝试将 null 分配给不接受 null 的类型引起的。在 TypeScript 中,null 和 undefined 是不同的类型,不能互相赋值。
对于第一个错误,你可以通过检查 val 是否为 null 来解决。如果 val 为 null,则不调用 onChange 函数。
对于第二个错误,你可以在设置 num_traces 时检查其是否为 null。如果是 null,则将其设置为 undefined。 以下是修复这两个错误的代码:
// src/components/PromQueryBuilder/Operations/Operation.tsx
if (val !== null) {
onChange(val);
}
// src/pages/traceCpt/Search.tsx
onChange={(num_traces) => setSearch({ ...search, num_traces: num_traces === null ? undefined : num_traces })}
这类接口其实又分成 2 小类:
- 给 agent 使用,用于 agent 上报心跳信息或者接收监控数据,通常用于内网不加密钥认证
- 给第三方调用的接口,通常会走密钥认证 这 2 类接口都是走的 BasicAuth 认证,通过配置文件里下面的部分来控制:
[HTTP.APIForAgent]
Enable = true
# [HTTP.APIForAgent.BasicAuth]
# user001 = "ccc26da7b9aba533cbb263a36c07dcc5"
[HTTP.APIForService]
Enable = true
[HTTP.APIForService.BasicAuth]
user001 = "ccc26da7b9aba533cbb263a36c07dcc5"
- 中心端 n9e 接收心跳的接口是 /v1/n9e/heartbeat n9e-edge 接收心跳的接口是
/v1/n9e/edge/heartbeat
- 接收数据的接口参考:router.go
- 第三方调用的接口参考:router.go
- alert_rule 是夜莺平台告警规则的记录表,根据配置中的 PromQL 去查询时序数据库,通过多种条件过滤,最终条件符合后生成告警事件 alert_cur_evernt,参考:table_schema
- feat:支持三平台监控指标统一采集、告警数据统一接入。
- feat:支持helm chart容器化部署,重新封装ibex模块资源,内置了面板、告警规则、脚本的sql初始化数据库文件
- feat:支持ansible 自动下发categraf二进制采集器,实现三平台的统一资产管理。
- feat:支持用户在PC桌面端,利用告警浮窗工具,实时同步对三平台活跃告警进行跟踪、管理。
- fix:三平台Grafana原生的监控面板格式转换,适配星相Stellar平台。
- fix:三平台Alertmanger告警规则格式转换,适配星相Stellar平台。
- fix:更换标题和logo为Stellar,修改登陆界面。
- fix:去除界面右上角版本号,去除文档入口。
[master 462b662] upgrad version v1.0
108 files changed, 16072 insertions(+), 17232 deletions(-)
create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml
create mode 100644 .github/ISSUE_TEMPLATE/config.yml
create mode 100644 .github/ISSUE_TEMPLATE/enhancement.md
create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
rename .github/workflows/{stellar.yml => n9e.yml} (100%)
create mode 100644 README_en.md
create mode 100644 center/sso/sync.go
delete mode 100644 docker/Dockerfile
mode change 100644 => 100755 docker/build.sh
delete mode 100644 docker/compose-bridge/etc-ibex/server.conf
mode change 100644 => 100755 docker/compose-bridge/etc-nightingale/script/notify.py
delete mode 100644 docker/compose-host-network-metric-log/etc-ibex/server.conf
delete mode 100644 docker/compose-host-network/etc-ibex/server.conf
mode change 100644 => 100755 docker/compose-host-network/etc-nightingale/script/notify.py
delete mode 100644 docker/compose-postgres/ibexetc_pg/server.conf
delete mode 100644 docker/compose-postgres/n9eetc_pg/ops.yaml
delete mode 100644 docker/initsql/b-ibex.sql
mode change 100644 => 100755 etc/script/notify.py
mode change 100644 => 100755 fe.sh
create mode 100644 memsto/task_tpl_cache.go
create mode 100644 pkg/ldapx/user_sync.go