无法安装awslogs代理

lig*_*ght 11 python amazon-web-services

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

sudo python ./awslogs-agent-setup.py --region us-east-1
Run Code Online (Sandbox Code Playgroud)

它似乎在第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
Run Code Online (Sandbox Code Playgroud)

缺少什么目录或文件?

Mil*_*mak 5

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

sudo python ./awslogs-agent-setup.py --region us-east-1 --python=/usr/bin/python3.5
Run Code Online (Sandbox Code Playgroud)


Cyr*_*ris 5

亚马逊 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
Run Code Online (Sandbox Code Playgroud)

确保更改文档中提到的 AWS 区域


Jos*_*lta 2

虽然这个问题有点老了,但我想添加一个答案,因为我最近遇到了同样的问题,但设法找到了解决方法。我试图在运行 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
Run Code Online (Sandbox Code Playgroud)

我无法让它与 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*
Run Code Online (Sandbox Code Playgroud)

我再次运行安装程序命令并通过了@user2061886 报告的错误。我可以安装和配置 CloudWatch Logs Agent。然而,在我启动服务(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'
Run Code Online (Sandbox Code Playgroud)

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

pip3.5 install awscli-cwlogs. 
Run Code Online (Sandbox Code Playgroud)

这样问题就解决了!