欢迎参与 8 月 1 日中午 11 点的线上分享,了解 GreptimeDB 联合处理指标和日志的最新方案! 👉🏻 点击加入

Skip to content
On this page
教程
2024-9-4

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

本文将以 docker compose 配置为例,来介绍如何将 GreptimeDB 作为夜莺监控的读写数据源。

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

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

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

配置步骤

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

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

解压缩:

bash
tar zxvf n9e-v7.3.1-linux-arm64.tar.gz
bash
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 目录:

bash
cd docker/compose-bridge

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

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

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

yaml
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]] 部分:

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

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

bash
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

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

结果显示
结果显示

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

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

GreptimeDB 内置的 dashboard 页面显示
GreptimeDB 内置的 dashboard 页面显示

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

查询界面使用
查询界面使用

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

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

sql
show create table greptime_physical_table;
sql
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/

使用指南
Prometheus
VictoriaMetrics

加入我们的社区

获取 Greptime 最新更新,并与其他用户讨论。