当前位置: 首页 > news >正文

配置 GreptimeDB 作为夜莺监控数据源,无缝替代 Prometheus/VictoriaMetrics

夜莺监控 是优秀的国产开源监控软件,笔者在上一家创业公司也曾经使用过,整体体验非常优秀。夜莺监控集合了 Prometheus 和 Grafana 的优点,你可以在 UI 上管理和配置告警策略,也可以对分布在多个 Region 的指标、日志、链路追踪数据进行统一的可视化和分析。

夜莺监控的数据源支持 Prometheus 及兼容的服务,比如 Thanos、VictoriaMetrics 等等。GreptimeDB 作为一个云原生、可扩展的时序数据库,也高度兼容 Prometheus 及其查询语言 PromQL(请阅读《如何配置 GreptimeDB 作为 Prometheus 的长期存储》),因此也可以配置成夜莺的指标数据源。本文将以 docker compose 配置为例,来介绍如何将 GreptimeDB 作为夜莺监控的读写数据源。接入 GreptimeDB 后,除了高度的兼容性之外,你还可以获得极佳的水平扩展能力,以及基于 SQL 的数据分析和管理功能。

本文要求你在本机上安装 dockerdocker-compose 命令行。

配置步骤

首先,我们从夜莺 release 页面下载最新稳定版本的夜莺监控软件,本文撰写时候为 7.3.1 版本,可以手工下载,也可以用 curl 命令下载:

curl -fsSL -O https://github.com/ccfos/nightingale/releases/download/v7.3.1/n9e-v7.3.1-linux-arm64.tar.gz

解压缩:

tar zxvf n9e-v7.3.1-linux-arm64.tar.gz
x cli/cli.go
x cli/upgrade/config.go
x cli/upgrade/readme.md
x cli/upgrade/upgrade.go
x cli/upgrade/upgrade.sql
x docker/.dockerignore
x docker/Dockerfile.goreleaser
x docker/Dockerfile.goreleaser.arm64
....

我们进入其中的 docker 目录:

cd docker/compose-bridge

Docker compose 可以方便地测试夜莺监控,本文也采用这种方式,实际部署请参照**夜莺官方文档**。

为了使用 GreptimeDB,我们需要修改下默认的配置和镜像。

首先,修改 docker-compose.yaml,在 services 部分增加 greptimedb 镜像及容器:

  greptimedb:image: greptime/greptimedb:v0.9.2container_name: greptimedbhostname: greptimedbrestart: alwaysenvironment:TZ: Asia/Shanghaiports:- "4000:4000"- "4002:4002"networks:- nightingalecommand:- "standalone"- "start"- "--http-addr"- "0.0.0.0:4000"- "--mysql-addr"- "0.0.0.0:4002"

我们在这里使用了 GreptimeDB 最新稳定版本 v0.9.2,以 standalone 单机模式启动,并开放端口 4000 和 4002,分别是 HTTP 协议和 MySQL 协议端口,容器名为 greptimedb

第二步,修改夜莺配置文件,将 metric 数据写入 GreptimeDB,编辑文件 etc-nightingale/config.toml,找到 [[Pushgw.Writers]] 部分:

[[Pushgw.Writers]] 
Url = "http://greptimedb:4000/v1/prometheus/write"

接下来启动所有服务,执行命令:

docker-compose up

如果一切正常,打开浏览器访问夜莺的 web 页面,地址是 http://localhost:17000/

输入默认的用户名 root 和密码 root.2020 即可登录。

此时夜莺已经开始将 Categraf 采集的指标数据写入 GreptimeDB,不过我们还需要配置 GreptimeDB 数据源才能查询。

我们进入配置中心菜单,找到数据源,点击新建:


(图 1 :步骤展示 1)

选择 Prometheus like,并填写关键信息:


(图 2 :步骤展示 2)

  • 名称:GreptimeDB
  • HTTP 查询接口 URL:http://greptimedb:4000/v1/prometheus,GreptimeDB 原生支持了 Prometheus 的查询 API 及 PromQL。
  • 跳过 SSL 验证
  • Remote Write URL: http://greptimedb:4000/v1/prometheus/write

点击测试并保存即可。

最后一步,我们导入默认的内置 Linux 主机监控大盘来查询数据,进入监控仪表盘,选择 Default Busi Group 默认业务组:


(图 3 :步骤展示 3)

点击右上角导入菜单,选择 Linux 的 Linux Host by Categraf v2 大盘,点击导入即可:


(图 4 :步骤展示 4)


(图 5 :步骤展示 5)

打开该大盘,如果一切正常,应该会显示本机的监控数据:


(图 6 :结果显示)

使用 SQL 查看和管理指标数据

打开浏览器,访问 http://localhost:4000/dashboard/ 即可访问 GreptimeDB 内置的 dashboard 页面,在这里查看和管理所有的指标表以及数据:


(图 7 :GreptimeDB 内置的 dashboard 页面显示)

点击左侧加号,打开一个查询界面,可以在这里输入一些 SQL 查询并执行:


(图 8 :查询界面使用)

可以输入任意的 SQL 进行关联查询和分析,也可以执行管理操作,比如删除表、查看表定义之类。

默认 GreptimeDB 会为 Prometheus Remote Write 使用 metric 引擎,每个 Prometheus 指标对应一张逻辑表,所有的逻辑表会映射到物理大宽表,这张表默认是 greptime_physical_table,所有的指标数据都在这张表里,可以对这张宽表做各种分析和查询:

show create table greptime_physical_table;
CREATE TABLE IF NOT EXISTS `greptime_physical_table` (`greptime_timestamp` TIMESTAMP(3) NOT NULL,`greptime_value` DOUBLE NULL,`ident` STRING NULL,`interface` STRING NULL,`source` STRING NULL,`name` STRING NULL,`instance` STRING NULL,`code` STRING NULL,`method` STRING NULL,`path` STRING NULL,`service` STRING NULL,`version` STRING NULL,`quantile` STRING NULL,`le` STRING NULL,`url` STRING NULL,`cpu` STRING NULL,`channel` STRING NULL,`host_ident` STRING NULL,TIME INDEX (`greptime_timestamp`),PRIMARY KEY (`ident`, `interface`, `source`, `name`, `instance`, `code`, `method`, `path`, `service`, `version`, `quantile`, `le`, `url`, `cpu`, `channel`, `host_ident`)
)ENGINE=metric
WITH(physical_metric_table = 'true'
)

可以看到,这张大宽表包含了所有指标的 tag,以及共同的 value 列 greptime_value 和时间戳列 greptime_timestamp。更多关于 GreptimeDB 对于 Prometheus 的支持,请阅读文档。

总结

本文以 docker compose 为例,展示了如何将 GreptimeDB 配置为夜莺监控的 Prometheus 数据源,处理监控指标数据的读写请求。GreptimeDB 原生支持 PromQL ,兼容率达到 89%(第三方独立实现最高),并且具备极佳的扩展性,可以使用 SQL 来分析和管理 Prometheus 指标数据,为可观测领域带来新的可能。

关于 Greptime

Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。

欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~

Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb

官网:https://greptime.cn/

文档:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/


http://www.mrgr.cn/news/62436.html

相关文章:

  • 如何在Linux系统中使用LVM进行磁盘管理
  • 【JavaSE练习题】方法的创建和调用
  • 手动写一个new
  • vue3项目中引入阿里图标库
  • leetcode hot100【LeetCode 118. 杨辉三角】java实现
  • 算法题解记录32+++最长连续序列(百题筑基)
  • uni 自定义组件的生命周期(自用)
  • MySQL_客户端工具建库.
  • redis模板的应用:自定义redisTemplate序列化规则 (RedisTemplate和StringRedisTemplate)
  • 刘艳兵-DBA015-对于属于默认undo撤销表空间的数据文件的丢失,哪条语句是正确的?
  • 怎么选开放式耳机好?热门爆款开放式耳机推荐!
  • Unity XR Interaction Toolkit 开发教程(1):OpenXR 与 XRI 概述【3.0 以上版本】
  • 黑马软件测试第二篇_功能测试
  • 前端八股文第五篇
  • 进程、孤儿进程、僵尸进程、fork、wait简介
  • linux 网络包接收过程
  • 输出特殊图案,请在c环境中运行
  • 线程池面试点
  • Threejs后期处理Bloom发光效果
  • BERT在预训练阶段,需要如何处理数据集?
  • 多系统萎缩患者需要的维生素小贴士
  • redis 基础知识(三)
  • pcie5.0接口的主板--战未来
  • matlab对于不可逆的线性方程组求解
  • 基于GEE的非线性回归实现树木覆盖率预测
  • Qt 文件目录操作