写点什么

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

  • 2024-10-31
  • 本文字数:2894 字

    阅读完需:约 9 分钟

配置 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.gox cli/upgrade/config.gox cli/upgrade/readme.mdx cli/upgrade/upgrade.gox cli/upgrade/upgrade.sqlx docker/.dockerignorex docker/Dockerfile.goreleaserx docker/Dockerfile.goreleaser.arm64....
复制代码


我们进入其中的 docker 目录:


cd docker/compose-bridge
复制代码


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


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


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


  greptimedb:    image: greptime/greptimedb:v0.9.2    container_name: greptimedb    hostname: greptimedb    restart: always    environment:      TZ: Asia/Shanghai    ports:      - "4000:4000"      - "4002:4002"    networks:      - nightingale    command:      - "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=metricWITH( 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/

用户头像

专注于 Infra 技术分享 2022-09-23 加入

分布式、高性能、存储计算分离的开源云原生时序数据库

评论

发布
暂无评论
配置 GreptimeDB 作为夜莺监控数据源,无缝替代 Prometheus/VictoriaMetrics_Prometheus_Greptime 格睿科技_InfoQ写作社区