AWS Cloudwatch 日志状态显示正在运行,但日志在 AWS 控制台中不可用

Posted

技术标签:

【中文标题】AWS Cloudwatch 日志状态显示正在运行,但日志在 AWS 控制台中不可用【英文标题】:AWS Cloudwatch logs status shows running but logs are not available in AWS console 【发布时间】:2021-06-22 01:02:58 【问题描述】:

我是 aws 新手,我必须将应用程序服务日志发布到云手表。我尝试了 AWS 文档中提到的步骤及其工作。我通过詹金斯管道配置了相同的步骤。在这里我面临一个问题。日志未发布,即我无法从 AWS 控制台看到日志。我登录到 ec2 实例并检查 cloudwatch 服务状态,它显示


  "status": "running",
  "starttime": "2021-03-25T07:40:21+0000",
  "configstatus": "configured",
  "cwoc_status": "stopped",
  "cwoc_starttime": "",
  "cwoc_configstatus": "not configured",
  "version": "1.247347.3b250378"

不明白这里有什么问题:(。

任何帮助都会有所帮助。

提前致谢。

【问题讨论】:

您绑定到 EC2 的 IAM 角色是否有权写入 CloudWatch? 是的,绑定到 EC2 的 IAM 角色有权写入 CloudWatch 您能分享更多您遵循哪个文档进行设置的信息。我关注了这个Quick Start: Install and Configure the CloudWatch Logs Agent on a Running EC2 Linux Instance,它没有任何问题。 @samtoddler 我已经按照这里提到的步骤link 【参考方案1】:

我点击了你提到的链接Installing and Running the CloudWatch Agent on Your Servers。

以下是我用于推送日志和其他一些指标的配置,由该命令生成

Run the CloudWatch Agent Configuration Wizard

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

        "agent": 
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        ,
        "logs": 
                "logs_collected": 
                        "files": 
                                "collect_list": [
                                        
                                                "file_path": "/var/log/messages",
                                                "log_group_name": "messages",
                                                "log_stream_name": "instance_id"
                                        
                                ]
                        
                
        ,
        "metrics": 
... # metrics configuration here
        


按照文档中的说明启动客户端

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a \
fetch-config -m ec2 -s -c file:///opt/aws/amazon-cloudwatch-agent/bin/config.json

Start the CloudWatch Agent Using the Command Line

# /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status

  "status": "running",
  "starttime": "2021-03-26T11:46:14+0000",
  "version": "1.247345.35"

如果有问题可以在logs目录里面找

[root@ip-xx amazon-cloudwatch-agent]# ls
amazon-cloudwatch-agent.log  configuration-validation.log  state
[root@ip-xx amazon-cloudwatch-agent]# pwd
/var/log/amazon/amazon-cloudwatch-agent

附带说明,如果我只想将日志推送到 cloudwatch,我会使用这个

Quick Start: Install and Configure the CloudWatch Logs Agent on a Running EC2 Linux Instance

【讨论】:

我的配置和步骤都是一样的。我能看到的唯一区别是用户。 “run_as_user”:“cwagent” 会是这个原因吗?? @Priyanka 是的,如果用户 cwagent 没有读取您尝试推送的日志的权限,那么这会造成麻烦。 Running the CloudWatch Agent as a Different User。尝试将用户更改为root。如果没有,应该可以工作,您可以按照链接的指南以不同的用户身份运行代理。 那是问题.. run_as_user : cwagent 没有权限。将其更改为 root .. 现在它工作正常.. 谢谢 :)

以上是关于AWS Cloudwatch 日志状态显示正在运行,但日志在 AWS 控制台中不可用的主要内容,如果未能解决你的问题,请参考以下文章

如何匹配 aws cloudwatch 日志中的多个模式以触发 lambda

AWS Elastic Beanstalk PHP 日志不在 CloudWatch 中

使用 Terraform 将 AWS Lambda 日志写入 CloudWatch 日志组

AWS Elastic Beanstalk:将容器日志流式传输到 CloudWatch 问题

AWS CloudWatch 中的指标、日志和事件之间有啥区别? [关闭]

AWS EB Node.JS 日志到 CloudWatch