跳到主要内容
版本:nightly

Grafana Alloy

Grafana Alloy 是一个用于 OpenTelemetry (OTel)、Prometheus、Pyroscope、Loki 等其他指标、日志、追踪和分析工具的可观测性数据管道。 你可以将 GreptimeDB 集成为 Alloy 的数据接收端。

Prometheus Remote Write

将 GreptimeDB 配置为远程写入目标:

prometheus.remote_write "greptimedb" {
endpoint {
url = "${GREPTIME_SCHEME:=http}://${GREPTIME_HOST:=greptimedb}:${GREPTIME_PORT:=4000}/v1/prometheus/write?db=${GREPTIME_DB:=public}"

basic_auth {
username = "${GREPTIME_USERNAME}"
password = "${GREPTIME_PASSWORD}"
}
}
}
  • GREPTIME_HOST: GreptimeDB 主机地址,例如 localhost
  • GREPTIME_DB: GreptimeDB 数据库名称,默认是 public
  • GREPTIME_USERNAMEGREPTIME_PASSWORD: GreptimeDB的鉴权认证信息

有关从 Prometheus 到 GreptimeDB 的数据模型转换的详细信息,请参阅 Prometheus Remote Write 指南中的数据模型部分。

OpenTelemetry

GreptimeDB 也可以配置为 OpenTelemetry Collector 的目标。

指标

otelcol.exporter.otlphttp "greptimedb" {
client {
endpoint = "${GREPTIME_SCHEME:=http}://${GREPTIME_HOST:=greptimedb}:${GREPTIME_PORT:=4000}/v1/otlp/"
headers = {
"X-Greptime-DB-Name" = "${GREPTIME_DB:=public}",
}
auth = otelcol.auth.basic.credentials.handler
}
}

otelcol.auth.basic "credentials" {
username = "${GREPTIME_USERNAME}"
password = "${GREPTIME_PASSWORD}"
}
  • GREPTIME_HOST: GreptimeDB 主机地址,例如 localhost
  • GREPTIME_DB: GreptimeDB 数据库名称,默认是 public
  • GREPTIME_USERNAMEGREPTIME_PASSWORD: GreptimeDB 的鉴权认证信息

有关从 OpenTelemetry 到 GreptimeDB 的指标数据模型转换的详细信息,请参阅 OpenTelemetry 指南中的数据模型部分。

日志

以下示例设置了一个使用 Loki 和 OpenTelemetry Collector (otelcol) 的日志管道,将日志转发到 GreptimeDB:

loki.source.file "greptime" {
targets = [
{__path__ = "/tmp/foo.txt"},
]
forward_to = [otelcol.receiver.loki.greptime.receiver]
}

otelcol.receiver.loki "greptime" {
output {
logs = [otelcol.exporter.otlphttp.greptimedb_logs.input]
}
}

otelcol.auth.basic "credentials" {
username = "${GREPTIME_USERNAME}"
password = "${GREPTIME_PASSWORD}"
}

otelcol.exporter.otlphttp "greptimedb_logs" {
client {
endpoint = "${GREPTIME_SCHEME:=http}://${GREPTIME_HOST:=greptimedb}:${GREPTIME_PORT:=4000}/v1/otlp/"
headers = {
"X-Greptime-DB-Name" = "${GREPTIME_DB:=public}",
"X-Greptime-Log-Table-Name" = "${LOG_TABLE_NAME}",
"X-Greptime-Gog-Extract-Keys" = "${EXTRACT_KEYS}",
}
auth = otelcol.auth.basic.credentials.handler
}
}
  • Loki source 配置
    • loki.source.file "greptime" 块定义了 source,用于 Loki 从位于 /tmp/foo.txt 的文件中读取日志。
    • forward_to 数组指示从该文件读取的日志应转发到 otelcol.receiver.loki.greptime.receiver
  • OpenTelemetry Collector Receiver 配置:
    • otelcol.receiver.loki "greptime" 在 OpenTelemetry Collector 中设置了一个 receiver,以接收来自 Loki 的日志。
    • output 指定接收到的日志应转发到 otelcol.exporter.otlphttp.greptimedb_logs.input
  • OpenTelemetry Collector Exporter 配置:
    • otelcol.exporter.otlphttp "greptimedb_logs" 块配置了一个 HTTP Exporter,将日志发送到 GreptimeDB。
    • GREPTIME_HOST: GreptimeDB 主机地址,例如 localhost
    • GREPTIME_DB: GreptimeDB 数据库名称,默认是 public
    • GREPTIME_USERNAMEGREPTIME_PASSWORD: GreptimeDB 的鉴权认证信息
    • LOG_TABLE_NAME: 存储日志的表名,默认表名为 opentelemetry_logs
    • EXTRACT_KEYS: 从属性中提取对应 key 的值到表的顶级字段,用逗号分隔,例如 filename,log.file.name,loki.attribute.labels,详情请看 HTTP API 文档

有关从 OpenTelemetry 到 GreptimeDB 的日志数据模型转换的详细信息,请参阅 OpenTelemetry 指南中的数据模型部分。

提示

上述示例代码可能会过时,请参考 OpenTelemetry 和 Grafana Alloy 的官方文档以获取最新信息。

有关示例代码的更多信息,请参阅你首选编程语言的官方文档。