【问题标题】:having trouble installing awslogs agent安装 awslogs 代理时遇到问题
【发布时间】:2017-02-01 23:38:26
【问题描述】:

我在尝试在我的 ec2 节点上安装 awslogs 代理时遇到问题。当我运行这个命令时:

sudo python ./awslogs-agent-setup.py --region us-east-1

第 2 步似乎失败了,如下所示:

Launching interactive setup of CloudWatch Logs agent ... 

Step 1 of 5: Installing pip ...DONE

Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... 
Traceback (most recent call last):
  File "./awslogs-agent-setup.py", line 1144, in <module>
    main()
  File "./awslogs-agent-setup.py", line 1140, in main
    setup.setup_artifacts()
  File "./awslogs-agent-setup.py", line 696, in setup_artifacts
    self.install_awslogs_cli()
  File "./awslogs-agent-setup.py", line 523, in install_awslogs_cli
    subprocess.call([AWSCLI_CMD, 'configure', 'set', 'plugins.cwlogs', 'cwlogs'], env=DEFAULT_ENV)
  File "/usr/lib64/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

缺少什么目录或文件?

【问题讨论】:

  • 您在哪个平台(操作系统/版本)上运行它? Afaik,安装脚本不会安装所有平台。
  • 我正在使用 RHEL7
  • 好吧,第 523 行是 subprocess.call([AWSCLI_CMD, 'configure', 'set', 'plugins.cwlogs', 'cwlogs'], env=DEFAULT_ENV) 并且 AWSCLI_CMD 是 /var/awslogs/bin/aws 。你能确认它是否存在吗?
  • 我遇到了这个问题,可以确认 /var/awslogs/bin/aws 是丢失的文件。
  • 这似乎是由检测 /var/awslogs/bin/activate 存在的脚本引起的 - 所以它没有为 awslogs 创建虚拟环境,我相信这是安装 / var/awslogs/bin/aws 文件。

标签: python amazon-web-services


【解决方案1】:

亚马逊 Linux 2

awslogs 代理现在以 yum 包的形式提供 https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

sudo yum install -y awslogs
sudo systemctl start awslogsd
sudo systemctl enable awslogsd.service

确保按照文档中的说明更改 AWS 区域

【讨论】:

    【解决方案2】:

    我通过传递要使用的 python 解释器解决了这个问题:

    sudo python ./awslogs-agent-setup.py --region us-east-1 --python=/usr/bin/python3.5
    

    【讨论】:

      【解决方案3】:

      我在尝试在 centos docker 上安装时遇到了同样的问题。事实证明,安装这些软件包后我可以不更新 python

      python-devel libpython-dev which initscripts cronie
      

      【讨论】:

      • python-devel 为我做了。
      【解决方案4】:

      虽然这个问题有点老了,但我想添加一个答案,因为我最近遇到了同样的问题,但设法找到了解决方法。我试图在运行 CentOS 7 的实例中安装它。

      当我第一次运行安装命令时,我得到了与@user2061886 报告的完全相同的错误日志。安装程序记录到具有以下路径的文件:/var/log/awslogs-agent-setup.log。我跟踪了文件,发现安装程序内部抱怨找不到文件“Python.h”:

          creating build/temp.linux-x86_64-2.7
          checking if libyaml is compilable
          gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-
      D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-
      size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/check_libyaml.c -o build/temp.linux-x86_64-2.7/check_libyaml.o
      checking if libyaml is linkable
      gcc -pthread build/temp.linux-x86_64-2.7/check_libyaml.o -L/usr/lib64 -lyaml -o build/temp.linux-x86_64-2.7/check_libyaml
      building '_yaml' extension
      creating build/temp.linux-x86_64-2.7/ext
      gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c ext/_yaml.c -o build/temp.linux-x86_64-2.7/ext/_yaml.o
      ext/_yaml.c:4:20: fatal error: Python.h: No such file or directory
       #include "Python.h"
                          ^
          compilation terminated.
          error: command 'gcc' failed with exit status 1
      

      我无法让它与 Python 2.7 一起使用,所以我切换到 Python 3.5。在 CentOS 7 中安装 Python 3.5:

      yum -y udpate
      
      yum install -y epel-release
      
      yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-
      release-1.0-13.ius.centos7.noarch.rpm
      
      yum -y update
      
      yum install -y python35u*
      

      我再次运行安装程序命令并通过了@user2061886 报告的错误。我可以安装和配置 CloudWatch Logs 代理。然而,在我启动服务(sudo service awslogs start)后不久,我遇到了第二个问题。这次我不得不跟踪以下文件来发现问题:/var/log/awslogs.log。 cloudwatch 日志代理基本上是在抱怨找不到 cwlogs 包:

      Traceback (most recent call last):
        File "/var/awslogs/bin/aws", line 27, in <module>
          sys.exit(main())
        File "/var/awslogs/bin/aws", line 23, in main
          return awscli.clidriver.main()
        File "/usr/lib/python3.5/site-packages/awscli/clidriver.py", line 55, in main
          driver = create_clidriver()
        File "/usr/lib/python3.5/site-packages/awscli/clidriver.py", line 64, in create_clidriver
          event_hooks=emitter)
        File "/usr/lib/python3.5/site-packages/awscli/plugin.py", line 44, in load_plugins
          modules = _import_plugins(plugin_mapping)
        File "/usr/lib/python3.5/site-packages/awscli/plugin.py", line 58, in _import_plugins
          plugins.append(__import__(path))
      ImportError: No module named 'cwlogs'
      

      我通过使用 pip 手动安装软件包解决了这个问题:

      pip3.5 install awscli-cwlogs. 
      

      这解决了问题!

      【讨论】:

        【解决方案5】:

        ^^是的.. 我修复了一个类似的问题,即 /var/log/awslogs.log 中指出的一些缺少的依赖项


        apt-get update && apt-get install -y python-pip libpython-dev

        【讨论】:

          【解决方案6】:

          所以伙计们刚刚想通了!!

          文件“./awslogs-agent-setup.py”,第 520 行,在 install_awslogs_cli 中 venv_in_path = (subprocess.call(["which", "virtualenv"], stderr=self.log_file, stdout=self.log_file) == 0)

          在上述错误中,您可以使用“which”命令,不幸的是“which”没有安装。 安装后一切都开始工作了。

          干杯!!如果它帮助任何人。

          【讨论】:

            【解决方案7】:

            我知道我迟到了 2 年多,但我无法找到答案。

            我遇到了同样的问题,这是因为磁盘的 inode 用完了(我认为磁盘空间不足会导致同样的问题),我通过运行 sudo apt-get autoremove 解决了它

            您可以使用df -i检查您的inode

            我希望这可以帮助任何遇到此问题的人。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-09-11
              • 2013-12-24
              • 2020-02-27
              • 2018-02-25
              • 2011-06-06
              • 2021-04-14
              • 2016-03-23
              • 2018-09-25
              相关资源
              最近更新 更多