Grafana Alloy

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

Prometheus Remote Write

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

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

5. basic_auth {
6. username = "${GREPTIME_USERNAME}"
7. password = "${GREPTIME_PASSWORD}"
8. }
9. }
10. }
  • GREPTIME_HOST: GreptimeDB 主机地址,例如 localhost。
  • GREPTIME_DB: GreptimeDB 数据库名称,默认是 public。
  • GREPTIME_USERNAME 和 GREPTIME_PASSWORD: GreptimeDB的鉴权认证信息。

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

OpenTelemetry

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

指标

1. otelcol.exporter.otlphttp "greptimedb" {
2. client {
3. endpoint = "${GREPTIME_SCHEME:=http}://${GREPTIME_HOST:=greptimedb}:${GREPTIME_PORT:=4000}/v1/otlp/"
4. headers  = {
5. "X-Greptime-DB-Name" = "${GREPTIME_DB:=public}",
6. }
7. auth     = otelcol.auth.basic.credentials.handler
8. }
9. }

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

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

日志

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

1. loki.source.file "greptime" {
2. targets = [
3. {__path__ = "/tmp/foo.txt"},
4. ]
5. forward_to = [otelcol.receiver.loki.greptime.receiver]
6. }

8. otelcol.receiver.loki "greptime" {
9. output {
10. logs = [otelcol.exporter.otlphttp.greptimedb_logs.input]
11. }
12. }

14. otelcol.auth.basic "credentials" {
15. username = "${GREPTIME_USERNAME}"
16. password = "${GREPTIME_PASSWORD}"
17. }

19. otelcol.exporter.otlphttp "greptimedb_logs" {
20. client {
21. endpoint = "${GREPTIME_SCHEME:=http}://${GREPTIME_HOST:=greptimedb}:${GREPTIME_PORT:=4000}/v1/otlp/"
22. headers  = {
23. "X-Greptime-DB-Name" = "${GREPTIME_DB:=public}",
24. "X-Greptime-Log-Table-Name" = "${LOG_TABLE_NAME}",
25. "X-Greptime-Gog-Extract-Keys" = "${EXTRACT_KEYS}",
26. }
27. auth     = otelcol.auth.basic.credentials.handler
28. }
29. }
  • 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 指南中的数据模型部分。

Grafana Alloy - 图1提示

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

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