中心机房部署架构
[color=var(--docs-v2-text)]

[color=var(--docs-v2-text)]首先上图中间的飞鸟代表夜莺的核心进程 n9e (下文以 n9e 代替),它的集群方式非常简单只需部署多节点即可实现。
[color=var(--docs-v2-text)]对于 n9e 来说,它本身依赖的存储有两个
- [color=var(--docs-v2-accent-strong)]Mysql : 存放配置类别信息,如用户,监控大盘,告警规则等
- [color=var(--docs-v2-accent-strong)]Redis : 存放访问令牌(JWT Token),心跳信息,如机器列表中CPU、内存、时间偏移、核数、操作系统、CPU架构等
[color=var(--docs-v2-text)]从 v6 版本开始,夜莺尝试转型为统一可观测性平台,n9e 不再仅支持接入时序数据源([color=var(--docs-v2-accent-strong)]
Prometheus、[color=var(--docs-v2-accent-strong)]
Victoriametrics、M3DB、Thanos),也可以接入日志类数据源([color=var(--docs-v2-accent-strong)]
Elasticsearch,[color=var(--docs-v2-accent-strong)]
Loki【预】),链路追踪数据源([color=var(--docs-v2-accent-strong)]
Jaeger)。
[color=var(--docs-v2-text)]左侧就是 n9e 的数据来源,n9e 可以支持多种采集器 agent,比如 [color=var(--docs-v2-accent-strong)]
Datadog-Agent,[color=var(--docs-v2-accent-strong)]
Telegraf,[color=var(--docs-v2-accent-strong)]
Grafana-Agent,OpenTSDB agent,[color=var(--docs-v2-accent-strong)]
Node-Exporter,vmagent 都可以对接,不过最推荐的还是 [color=var(--docs-v2-accent-strong)]
Categraf。比如在 n9e 中机器列表页面的心跳信息都是 [color=var(--docs-v2-accent-strong)]
Categraf 才会去采集并上报的,所以为了更丝滑使用更推荐使用 [color=var(--docs-v2-accent-strong)]
Categraf,并且 Categraf 采用 All-In-One 的设计,采集日志,指标,链路追踪,所有的采集工作使用一个 agent 来解决。
[color=var(--docs-v2-text)]介绍完中心部署架构,我们再来描述一下它的数据流:假设是时序指标数据的采集,agent 把采集到的数据推送给 n9e (端口:17000),然后经由 n9e 加工(自动添加附加标签)转发给对应的时序数据库保存。另外在 n9e 把数据的转发给时序数据库之前,会先从监控数据中提取出 ident 标签写入 [color=var(--docs-v2-accent-strong)]
mysql 的 target 表(机器列表)中,同时如果 agent 用的是 Categraf 并且配置了心跳(heartbeat=true),则会把心跳上报的 metadata 存入 [color=var(--docs-v2-accent-strong)]
Redis(就是那些核数、操作系统、CPU架构等)。
[color=var(--docs-v2-text)]具体在生产环境部署的话,建议在 n9e 前面架设负载均衡,可以是 4 层的,也可以是 7 层的。让 agent 通过负载均衡上报监控数据,上层访问 n9e 也通过负载均衡,这样 n9e 任何一个实例挂掉,不会影响到整个服务可用性,从而做到高可用。而且集群中多个 n9e 实例会均分告警规则,分片处理,从而可以处理更大量的告警规则。
[color=var(--docs-v2-text)]那么在多机房的场景下推荐的架构是怎么样的?简单来说,在边缘机房在和中心机房网络连接比较好的情况下,目标机器只需部署 Categraf,直连中心机房即可(公网一定要注意添加好安全相关配置)。
[color=var(--docs-v2-text)]可是当边缘机房和中心机房网络链路不是很好的情况下,除了目标机器部署 Categraf 外,还推荐把告警引擎(n9e-alert)和时序数据库一起下沉部署。n9e-alert 是 n9e 的一个只保留告警引擎模块的独立可执行程序。
边缘下沉式混杂部署方案
[color=var(--docs-v2-text)]

[color=var(--docs-v2-text)]从 v6.0.0.ga.9 开始,合并了 n9e-alert、n9e-pushgw 模块为 n9e-edge,应对边缘机房的场景。n9e-edge 不依赖 [color=var(--docs-v2-accent-strong)]
mysql、[color=var(--docs-v2-accent-strong)]
redis,只依赖中心端的 n9e,所以 edge.toml 配置文件里,需要配置中心端 n9e 的地址。
复制[color=inherit !important][CenterApi]