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_USERNAME
和GREPTIME_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_USERNAME
和GREPTIME_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_USERNAME
和GREPTIME_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 的官方文档以获取最新信息。
有关示例代码的更多信息,请参阅你首选编程语言的官方文档。