夜莺

企业级监控解决方案,当前版本v5.

两个核心模块server和webapi

  1. webapi - 无状态,放到中心端,承接前端需求,将用户配置写入数据库.

  2. server - 告警引擎和数据转发模块,一个时序库对应一套server.

使用victoriametrics作为时序库

当每秒数据写入点数小于100万,推荐使用单机版,可通过增加CPU核数,增加内存,增加IOPS获得线性的性能提升.

以下是集群示例

夜莺使用victoriametrics架构图

vmstorage,vminsert,vmselect组合构成VM集群功能,三者都可以通过启动多个实例来分担承载流量。

vmstorage是数据存储模块:

  1. vmstorage是有状态模块,删除storage node会丢失1/N历史数据(N为集群中node的数量).增加需要同步修改vminsert和vmselect启动参数.

  2. vmstorage启动后,监听3个端口.

-httpListenAddr :8482 vmstorage自身提供的http api接口。

-vminsertAddr :8400 负责接受来自vminsert的写入请求。

-vmselectAddr :8401 负责接受来自vmselect的数据查询请求。

vminsert接收来自客户端的数据写入请求,并负责转发到选定的vmstorage:

  1. vminsert收到数据写入请求后,通过jump consistent hash算法,将数据转发到选定的某个vmstorage node上。vminsert是无状态模块,删除或增加一个或多个实例,不会造成数据丢失。通过启动时的参数,感知整个vmstorage集群的完成node地址列表。

  2. 启动后监听8480端口。

-httpListenAddr :8480 实现了prometheus remote_write等协议,可以接受和解析remote_write写入的数据。

vmselect接收来集客户端的数据查询请求,并负责转发到所有的vmstorage查询结果并合并:

  1. 启动后监听8481端口

-httpListenAddr :8481 实现了prometheus remote_query协议,可以接收和解析remote_query协议的查询.

VM集群版架构

Last updated