夜莺监控v5版本与VictoriaMetrics部署

本例子中以v5.8.0版本为例,中文手册地址:夜莺中文手册

基础环境:

1、下载v5.8.0,执行命令如下:

https://github.com/ccfos/nightingale/releases

2、执行如下命令创建目录并解压文件:

mkdir -p /usr/local/n9e
tar xf n9e-5.8.0.tar.gz -C /usr/local/n9e

3、导入初始化sql文件,执行如下命令:

mysql -u root -p < docker/initsql/a-n9e.sql

4、修改配置文件中redis、MySQL、Prometheus地址,如果都在本机就127.0.0.1,如图:

5、拷贝服务启动文件到启动目录下,并修改内部路径:

cp -a /usr/local/n9e/etc/service/{n9e-webapi.service,n9e-server.service} /lib/systemd/system

6、执行如下命令启动:

systemctl daemon-reload
systemctl enable n9e-server --now
systemctl enable n9e-webapi --now

7、浏览器访问webapi的端口(默认为18000),即可访问页面,如图:

注:账号密码为root root.2020

修改时序数据库为VictoriaMetrics

VictoriaMetrics 是一个快速、经济高效且可扩展的监控解决方案和时间序列数据库,基本支持Prometheus配置文件、PromQL、各类API、数据格式等

优点:

  • 远程存储:可作为单一或多个Prometheus的远程存储
  • 安装简单:单节点架构一条命令就可以部署完毕,集群稍微复杂
  • 兼容性:PromQL兼容和增强的MetricsQL
  • Grafana兼容:VM可替换Grafana的Prometheus数据源(线上数据源直接替换后100%兼容)
  • 低内存:更低的内存占用,官方对比Prometheus,可以释放7倍左右内存空间
  • 高压缩比:提供存储数据高压缩,官方说可以比Prometheus减少7倍的存储空间
  • 高性能:查询性能比Prometheus更快
  • 支持水平扩容&HA:基于VM集群版实现
  • 支持多租户:主要针对集群版

缺点:

  • 图形化做的不好,虽然有vmui,但功能很少
  • 告警功能需要单独配置vmalert,而且vmalert只有api管理和查看,暂时没用图形界面
  • 没有类似Prometheus的WAL日志,突然故障可能会丢失部分数据

单机版部署:

1、首先下载VM,下载地址:

https://github.com/VictoriaMetrics/VictoriaMetrics/

2、解压,将二进制包移动到合适位置,如下:

tar xf victoria-metrics-amd64-v1.77.2.tar.gz
mkdir -p /usr/local/victoria-metrics-prod
mv victoria-metrics-prod  /usr/local/victoria-metrics-prod

3、启动VictoriaMetrics,执行命令如下:

#可定义在脚本中
nohup /usr/local/victoria-metrics-prod/victoria-metrics-prod \
 -storageDataPath /usr/local/victoria-metrics-prod/vmstorage-data \
 -httpListenAddr :8428  \
 -search.maxSeries 100000 \
 -loggerTimezone Asia/Shanghai &> victoria-metrics.log &

参数说明:

  • -storageDataPath参数指定数据存储的目录。默认为victoria-metrics-data
  • -retentionPeriod参数指定数据保存的时长。默认为1 month
  • -httpListenAddr参数指定监听的 HTTP 套接字。默认为:8428
  • -loggerTimezon参数指定日志的时区,默认为UTC. 建议设置为Asia/Shanghai
  • -maxInsertRequestSize参数限制 Prometheus remote_write API 的请求大小。默认为33554432 byte. 支持可选的单位为KB, MB, GB, KiB, MiB, GiB
  • -promscrape.config参数指定 Prometheus 配置文件路径
  • -selfScrapeInstance参数设置抓取自身 metrics 时,instance标签的值。默认self
  • -selfScrapeInterval参数设置抓取自身 metrics 的时间间隔
  • -selfScrapeJob参数设置设置抓取自身 metrics 时,instance标签的值。默认victoria-metrics
  • -search.maxSeries:设置查询的metircs数,默认是10000,可手动设置为100000或者更多

4、修改n9e的server.conf文件,将读取和写入的时序数据库接口改为VM接口,如图:

5、修改webapi.conf,将读取时序数据库用于展示的接口修改为VM接口,如图:

注:上图中的Name的值要与server.conf中ClusterName配置的一样,默认为Default

6、停掉prometheus,重启n9e-server、n9e-webapi,查看监控指标,如图:

注:如果看不到监控指标,并且vm日志里提示如下内容:

error in "/api/v1/label/__name__/values?start=1654740213&end=1654743813&match%5B%5D=%7Bident%3D~%2210.9.2.247%22%7D": cannot obtain label values for "__name__", match[]=["{ident=~\"10.9.2.247\"}"], start=1654740213000, end=1654743813000: cannot fetch data for "MinTimestamp=2022-06-09 02:03:33 +0000 UTC, MaxTimestamp=2022-06-09 03:03:33 +0000 UTC, TagFilters=[\n{Key=\"ident\", Value=\"10.9.2.247\", IsNegative: false, IsRegexp: true}\n]": search error after reading 0 data blocks: error when searching for tagFilters=[{ident=~"10.9.2.247"}] on the time range [2022-06-09 02:03:33 +0000 UTC - 2022-06-09 03:03:33 +0000 UTC]: error when searching tsids: the number of matching timeseries exceeds 10000; either narrow down the search or increase -search.max* command-line flag values at vmselect

此日志说明VM返回的metircs数量已经超过默认设置的10000,此时需要修改数量,可在启动时候添加参数-search.maxSeries,并设置合理的值即可

更多参数可通过victoria-metrics-prod -h查看

标签