AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 793604
Accepted
GetShifting
GetShifting
Asked: 2025-04-11 17:21:43 +0800 CST2025-04-11 17:21:43 +0800 CST 2025-04-11 17:21:43 +0800 CST

将所有日志消息记录到 AWS Cloudwatch

  • 772

我正在将我们现有的 Amazon Linux 2 服务器迁移到 Amazon Linux 2023。其中一项变化是 AL2023 现在使用 journald 进行日志记录。我要求将所有日志记录到 AWS Cloudwatch 中。

我已经启用了常规的 CloudWatch 代理来监控指标和一些日志文件。一切运行正常。

对于 journald,我测试了各种方案,最终决定实现journald-cloudwatch-logs,因为它看起来最有前景。我已经配置好了,但遇到了一个问题:

  • 服务启动成功,但我根本没在 cloudwatch 中看到任何日志。

这是配置:

aws_region = "eu-central-1"
ec2_instance_id = "i-xxxxxxxxxx"
log_group = "LogGroup"
log_stream = "server01-systemctl"
state_file = "/var/lib/journald-cloudwatch-logs/state"
log_priority = "INFO"

我检查了 journalctl,没有错误或任何其他异常迹象。此外,由于正常的 CloudWatch 代理能够成功记录到另一个日志流,因此我知道 IAM 权限没有问题。

我的问题:

  • 我怎样才能让 journald-cloudwatch-logs 真正记录到 cloudwatch 中?

非常感谢您的帮助。

编辑:我也愿意接受其他方法将日志消息记录到 cloudwatch

selinux
  • 2 2 个回答
  • 45 Views

2 个回答

  • Voted
  1. Best Answer
    GetShifting
    2025-04-18T15:56:51+08:002025-04-18T15:56:51+08:00

    我会回答我的问题,因为我也愿意接受其他解决方案。我发现最好的方法是使用Vector:

    1. 安装:
    bash -c "$(curl -L https://setup.vector.dev)"
    sudo dnf install vector
    
    1. 配置:
    sources:
      journald_source:
        type: "journald"
    
    sinks:
      cloudwatch_sink:
        type: "aws_cloudwatch_logs"
        inputs: 
          - "journald_source"
        compression: "gzip"
        encoding:
          codec: "json"
        region: "eu-central-1"
        group_name: "LogGroup"
        stream_name: "server01-systemctl"
    
    1. 重启

    sudo systemctl restart vector

    • 1
  2. 3aska
    2025-04-14T20:52:07+08:002025-04-14T20:52:07+08:00

    首先,让我们排除一下 journald-cloudwatch-logs 设置故障:

    检查服务是否正常运行:

    sudo systemctl status journald-cloudwatch-logs
    

    尝试在您的配置中启用调试模式:

    aws_region = "eu-central-1"
    ec2_instance_id = "i-xxxxxxxxxx"
    log_group = "LogGroup"
    log_stream = "server01-systemctl"
    state_file = "/var/lib/journald-cloudwatch-logs/state"
    log_priority = "INFO"
    debug = true
    enter code here
    

    然后检查日志:

    journalctl -u journald-cloudwatch-logs
    

    还要验证权限:

    ls -la /var/lib/journald-cloudwatch-logs/
    

    或者,您可能会发现使用 CloudWatch 代理内置的 journald 支持更简单。由于您已经让代理处理指标,因此只需更新代理配置即可:

    {
      "logs": {
        "logs_collected": {
          "journald": {
            "name_1": {
              "log_group_name": "journald_logs",
              "log_stream_name": "{instance_id}-journald-{unit}"
            }
          }
        }
      }
    }
    

    然后重新启动:

    sudo systemctl restart amazon-cloudwatch-agent
    

    如果您想限制记录哪些服务:

    "journald": {
      "name_1": {
        "log_group_name": "journald_logs",
        "log_stream_name": "{instance_id}-journald-{unit}",
        "units": ["sshd.service", "important-app.service"]
      }
    }
    

    希望这对您的迁移有所帮助。

    • 0

相关问题

  • 什么是 SELinux 上下文中的映射访问

  • file_contexts 中的“--”、“-d”等是什么意思?

  • MariaDB 从服务器应连接到 127.0.0.1:3307 以到达主服务器。SELinux 说不。做什么?

  • 如何查看 SELinux 配置文件

  • 如何安装 SELinux 策略手册页?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve