博客/工程

如何通过使用Fluent Forward和Filelog接收器的OpenTelemetry Collector将日志发送到Grafana Loki

2022年6月23日4分钟

在本指南中,我们将设置一个OpenTelemetry Collector,它收集日志并将它们发送到Grafana洛基运行在Grafana云

我们将考虑两个通过OpenTelemetry Collector向Loki发送日志的示例。第一个示例展示了如何使用Forward接收器.第二个示例展示了如何使用Filelog接收机

先决条件

在我们开始之前,我们得让格拉夫娜·洛基和格拉夫娜运转起来。您可以下载并运行洛基而且Grafana你自己,或者你可以用Grafana云,它有一个慷慨的免费永远层,以及计划的每个用例bob体育手机二维码,你可以报名今天的。在本指南中,我们将使用Grafana Cloud。

建立一个Grafana Cloud帐户

登录到您的Grafana Cloud帐户,如果您已经有一个,或者注册一个免费账户

开放//www.tubolov.com/然后点击我的账户.向下滚动到管理您的Grafana云堆栈部分。找到洛基块并单击发送日志按钮。

Grafana云设置UI。

向下滚动到该部分从独立主机发送日志.单击现在生成链接生成你的API密钥。

在Grafana Cloud中创建一个API密钥。

你会看到一个弹出创建API密钥的形式。输入密钥名称并选择指标的出版商选择框中的角色。生成API Key后,配置示例中的客户端URL将被修改。适当的API Key将替代 字符串。复制urlhttps:// <用户名>:< API Key > @logs -促使欧盟-西方- 0. grafana.net/loki/api/v1/push.我们稍后将在OpenTelemetry Collector配置文件中使用它。

下载最新版本的OpenTelemetry Collector

您可以下载用于大多数体系结构/操作系统的二进制文件GitHub对于v0.49.0或更高版本(如果有的话)。

在本指南中,我以Mac OS为例:

$ wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.49.0/otelcol-contrib_0.49.0_darwin_amd64.tar.gz $ gunzip -c otelcol-contrib_0.49.0_darwin_amd64.tar.gz | tar xopf -

Forward接收器

该接收器运行一个TCP服务器,该服务器通过流畅的Forward协议.在本例中,我们将从Docker容器中收集日志并将它们发送到Grafana Loki。

准备OpenTelemetry Collector配置文件

创建文件config.yaml:

receiver: fluentforward: endpoint: 127.0.0.1:24224 processors: batch: exporters: logging: logLevel: debug loki: endpoint: "https://:@logs-prod-eu-west-0.grafana.net/loki/api/v1/push" tenant_id: "example1" labels: attributes: container_name: "" container_id: "" service: pipeline: logs: receivers: [fluentforward] processors: [batch] exporters: [logging, loki]

属性container_name而且container_id是有效的Loki标签,这就是为什么不需要映射,我们可以留下空字符串。然后运行:

$ ./otelcol-contrib——config. /config.yaml

现在OpenTelemetry Collector正在运行。

设置Docker容器发送日志到Grafana Loki

让我们在Docker容器中运行Ubuntu映像,它将每秒生成标准输出日志。

Mac OS和Windows:

$ docker run——rm——log-driver=fluentd——log-opt fluentd-address=host.docker.internal:24224 ubuntu sh -c "while true;Hi Loki \$(date);睡眠1;完成”

现在你可以在Grafana Cloud中打开Grafana,去探索,选择Loki,并看到日志:

使用OpenTelemetry Collector在Grafana Cloud中转发日志

Filelog接收机

Filelog接收端跟踪并解析来自文件的日志。在本例中,我们将跟踪系统日志并将它们发送到Grafana Loki。

准备OpenTelemetry Collector配置文件

创建文件config.yaml:

receiver: filelog: include: [/var/log/*.log] processors: batch: exporters: logging: logLevel: debug loki: endpoint: "https://:@logs-prod-eu-west-0.grafana.net/loki/api/v1/push" tenant_id: "example2" labels: attributes: log.file.name: "filename" service: pipes: logs: receivers: [filelog] processors: [batch] exporters: [logging, loki]

我们在这里指定了属性映射log.file.name:“文件名”.因为洛基只接受匹配的标签^ \ [a-zA-Z_] * $,我们需要提供从记录属性名称到Loki标签的映射。它可以是与正则表达式匹配的任何字符串。我选择了“文件名”

然后运行:

$ ./otelcol-contrib——config. /config.yaml

现在你可以在Grafana Cloud中打开Grafana,去探索,选择Loki,并看到日志:

Filelog接收器通过OpenTelemetry Collector在Grafana Cloud中发送日志。

使用Fluent Forward和Filelog接收器

OpenTelemetry Collector可以使用多个接收器。两个接收器的配置将看起来像:

receiver: filelog: include: [/var/log/*.log] fluentforward: endpoint: 127.0.0.1:24224 processors: batch: exporters: logging: logLevel: debug loki: endpoint: "https://:@logs-prod-eu-west-0.grafana.net/loki/api/v1/push" tenant_id: "example2" labels: attributes: log.file.name: "filename" container_id: "", container_name: "" service: pipeline: logs: servers: [filelog, fluentforward] processors: [batch] exporters: [logging, loki]

然后运行:

$ ./otelcol-contrib——config. /config.yaml

现在您可以在Cloud中打开Grafana,转到Explore,选择Loki,并看到来自Fluent Forward和Filelog接收器的日志。

总结

在本指南中,我们提供了配置OpenTelemetry Collector所需的所有步骤,以使用Fluent Forward和Filelog接收器收集容器日志和系统日志,并将它们发送到Grafana Cloud中的Grafana Loki。

这应该是采用OpenTelemetry Collector收集日志的良好开端。OpenTelemetry Collector还可以用于分布式跟踪Grafana节奏收集度量标准为了完善你的可观察性故事。

如果您还没有使用Grafana Cloud—开始可观察性最简单的方法—现在就注册,免费试用Grafana Cloud Pro 14天,具有无限的度量、日志、跟踪和用户、长期留存和访问一个Enterprise插件。