将日志从 Azure Blob 存储提取到 Loki

问题描述 投票:0回答:2

与之前与从 Fluentd/Fluentbit 的 Azure 存储帐户读取日志相关的问题类似,我正在寻找一种更直接的方法将日志从 Azure 存储帐户读取到 Loki。

在搜索时,我发现了适用于 Fleuntd/bit 和 Logstash 的 Amazon S3 插件,但没有找到适用于 Azure 存储帐户的插件。只有 Sumo Logic 似乎支持来自 azure 存储帐户的流日志。

这里似乎可以从 Azure 事件中心

将 Azure 日志读取到 Loki 中

我已经实现了 Java Azure 函数,当 Azure 存储帐户的容器上触发存储事件时,会触发该函数。然后,我将处理日志文件(Json 格式)中的日志,并通过其 API 将日志推送到 Loki,或者使用 Java 客户端帮助我将日志行推送到 Loki。

我的问题是是否有人有更好的想法,例如拥有类似于 Fluentbit/Fluentd 或 Logstash 为 Amazon S3 提供的插件。如果可能,我想避免使用 Azure Functions for Java。

此外,(使用 Loki 时)将日志发送到 Azure 事件中心而不是存储帐户会更好吗?成本因素对我来说至关重要,因此我首先选择使用存储帐户而不是事件中心。

azure azure-functions azure-eventhub grafana-loki azure-storage-account
2个回答
0
投票

将日志从 Azure Blob 存储提取到 Loki 的步骤

  • 创建事件中心命名空间和事件中心 在 Azure 门户中,转到 Azure Blob 存储并选择左侧菜单上的 Events,然后选择工具栏上的 + Event Subscription

  • 输入事件订阅的名称

  • 输入系统主题的名称。系统主题为发送者提供发送事件的端点。更多信息请参阅系统主题

  • 选择终点类型作为事件中心

enter image description here

  • 事件订阅在发生操作(例如涉及 blob、文件共享、队列、表以及任何与其各自 blob 相关的操作)时触发,并将它们发送到事件中心。

enter image description here

请参阅此链接,将 Azure 事件中心连接至 Lokilink1,将日志从 Azure 存储帐户读取到 Loki。

将集线器连接到loki的步骤:

  • 转到事件中心,然后决定您将使用的身份验证方法:OAuth 或连接字符串。如果使用 OAuth,请确保您已设置所需的凭据。如果使用连接字符串,请从 Azure 获取。

  • 在 Loki 配置文件中,设置

    loki.source.azure_event_hubs
    组件。指定事件中心的命名空间,列出您要使用的事件中心,并定义日志将转发到的位置。

  • 使用您选择的方法和凭据配置身份验证块。您还可以自定义其他设置,例如组 ID、重新标记规则以及是否使用传入时间戳。

  • 确保

    forward_to
    中指定的目标已正确配置为接收日志。该目的地可以是
    LogsReceiver
    的实例。


0
投票

按照 Naveen 的建议,我首先使用事件订阅和系统主题(Azure 事件网格)在 Blob 文件添加到存储帐户时接收事件。

按照上面配置“azure_event_hubs”允许 Promtail 在 blob 事件触发时将日志转发给 Loki,但这意味着我没有获得存储容器上以 JSON 文件形式存储的日志内容。

为了获取 Azure 诊断日志条目,我在 Azure 诊断设置中选择了“流式传输到事件中心”选项: eh as destination for diagnostic logs

然后我将Promtail配置调整如下:

- job_name: azure_event_hubs
azure_event_hubs:
  fully_qualified_namespace: ehns.servicebus.windows.net:9093
  connection_string: connection-string
  event_hubs: eh-name
  labels:
    job: azure_event_hub
relabel_configs:
  - action: replace
    source_labels:
      - __azure_event_hubs_category
    target_label: category

promtail配置

我不需要forward_to属性,因为我不使用Grafana流。

我现在可以直接从 Loki 中的 Azure 接收 Azure 诊断日志,并可以在 Grafana 中查询它们。

唯一的缺点是无法使用基本定价计划 Azure 事件中心,而是使用标准定价及以上定价。

虽然这种方法确实解决了我的问题,但我仍然想尽量减少成本。因此,我将搜索是否可以将 Azure Even Hub(作为 azure 诊断日志的目标)替换为: 1- 一个 Kafka 实例。 2-或者通过在存储帐户中存档(最具成本效益的方法)并找到一种方法从那里提取日志条目并将其摄取到 Loki。

Azure 诊断设置允许发送到合作伙伴解决方案,但我还没有尝试过。

© www.soinside.com 2019 - 2024. All rights reserved.