菜单
开源

使用 Grafana Alloy 监控符合 RFC5424 规范的 syslog 消息

符合 RFC5424 规范的 syslog 消息遵循一套定义明确的标准化日志记录结构。这些日志包含优先级、时间戳、主机名、应用程序名称、进程 ID、消息 ID、结构化数据和实际消息等字段。借助 Alloy,您可以收集日志,将其转发到 Grafana 堆栈,并创建仪表盘来监控系统行为。

alloy-scenarios 存储库包含 Alloy 部署的完整示例。克隆存储库并使用示例来了解 Alloy 如何收集、处理和导出遥测信号。

在此示例场景中,Alloy 侦听通过 TCP 或 UDP 连接发送的 syslog 消息,并将其转发到 Loki 目标。

开始之前

确保您已具备以下条件

注意

您需要管理员权限才能运行 docker 命令。

克隆并部署示例

按照以下步骤克隆 scenarios 存储库并部署监控示例

  1. 克隆 Alloy scenarios 存储库。

    shell
    git clone https://github.com/grafana/alloy-scenarios.git
  2. 启动 Docker 以部署 Grafana 堆栈。

    shell
    cd alloy-scenarios/syslog
    docker compose up -d

    验证 Docker 容器的状态

    shell
    docker ps
  3. (可选) 停止 Docker 以在您完成此示例的探索后关闭 Grafana 堆栈。

    shell
    docker compose down

监控并可视化您的数据

使用 Grafana 监控您部署的健康状况并可视化您的数据。

监控 Alloy

要监控 Alloy 部署的健康状况,请打开浏览器并访问 https://:12345

有关 Alloy UI 的更多信息,请参阅调试 Grafana Alloy

可视化您的数据

要使用 Grafana Logs Drilldown,请打开浏览器并访问 https://:3000/a/grafana-lokiexplore-app

要创建仪表盘来可视化指标和日志,请打开浏览器并访问 https://:3000/dashboards

了解 Alloy 配置

此示例使用 config.alloy 文件来配置 Alloy 组件进行日志记录。您可以在克隆的存储库中的 alloy-scenarios/syslog/ 路径下找到 config.alloy 文件。

配置包含 livedebugging,用于将实时数据流式传输到 Alloy UI。

配置 livedebugging

实时调试将来自组件的实时数据直接流式传输到 Alloy UI。有关此功能的更多详细信息,请参阅故障排除文档

livedebugging

livedebugging 默认处于禁用状态。通过 livedebugging 配置块明确启用它,才能在 Alloy UI 中看到调试数据。

alloy
livedebugging {
  enabled = true
}

配置日志记录

本例中的日志记录配置需要两个组件

  • loki.source.syslog
  • loki.write

loki.source.syslog

loki.source.syslog 组件侦听通过 TCP 或 UDP 连接发送的 syslog 消息,并将它们转发到其他 Loki 组件。在此示例中,该组件需要以下参数

  • address:侦听 syslog 消息的主机和端口地址。
  • protocol:侦听 syslog 消息的协议。默认为 TCP。
  • labels:与每条收到的 syslog 记录关联的标签。
  • forward_to:发送日志条目的接收器列表。
alloy
loki.source.syslog "local" {
  listener {
    address  = "0.0.0.0:51893"
    labels   = { component = "loki.source.syslog", protocol = "tcp" }
  }

  listener {
    address  = "0.0.0.0:51898"
    protocol = "udp"
    labels   = { component = "loki.source.syslog", protocol = "udp" }
  }

  forward_to = [loki.write.local.receiver]
}

loki.write

loki.write 组件将日志写入 Loki 目标。在此示例中,该组件需要以下参数

  • url:定义发送日志到 Loki 的完整 URL 端点。
alloy
loki.write "local" {
  endpoint {
    url = "http://loki:3100/loki/api/v1/push"
  }
}