Не удалось обновить теги экземпляра EC2: SharedCredsLoad - PullRequest
1 голос
/ 30 октября 2019

Я изо всех сил пытался получить базовые метрики от агента CloudWatch. Я получаю эту ошибку, и я понятия не имею, что это значит, и я не могу найти в Интернете ресурсы, которые много говорят об этом

обновить теги экземпляра EC2 не удалось: SharedCredsLoad: не удалось получить профиль, показатели будутбыть сброшенным до тех пор, пока не будет исправлено

Я следовал инструкциям здесь и внимательно прочитал документацию. Опять же, цель состоит в том, чтобы просто прочитать некоторые основные метрики из моего экземпляра EC2 в CloudWatch. Вот шаги, которые я выполнил:

  • Выполненные инструкции здесь «Чтобы создать роль IAM, необходимую для запуска агента CloudWatch на экземплярах EC2», а затем назначить ее моему экземпляру.
  • wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
    • идентификатор ami равен ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20190628 (ami-0cfee17793b08a293)
  • Установите .deb с командой sudo dpkg --install --skip-same-version ./amazon-cloudwatch-agent.deb
    • note--install and --skip-same-version это просто -i -E, как это сделано в документации
  • сгенерировал config.json с помощью мастера, расположенного здесь /opt/aws/amazon-cloudwatch-agent/bin/config.json. Я вставил содержимое под сообщением об ошибке ниже.
  • измените файл /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml, чтобы он указывал на новые учетные данные cwagent (так как пользователь root не используется) со следующим:
root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/etc# tail -n 4 common-config.toml 
#### BEGIN ANSIBLE MANAGED BLOCK ####
[credentials]
shared_credential_file = "/home/cwagent/.aws/credentials"
#### END ANSIBLE MANAGED BLOCK ####
  • Извлеките конфигурацию и запустите агент с sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

Вот ошибка, которую я вижу в журналах сейчас, и я предполагаю, почему именно поэтому яне вижу никаких метрик

root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/logs# tail -n 20 amazon-cloudwatch-agent.log 
2019/10/29 22:41:08 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json ...
2019/10/29 22:41:08 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json ...
2019/10/29 22:41:08 I! Detected runAsUser: cwagent
2019/10/29 22:41:08 I! Change ownership to cwagent:cwagent
2019/10/29 22:41:08 I! Set HOME: /home/cwagent
2019-10-29T22:41:08Z I! will use file based credentials provider 
2019-10-29T22:41:08Z I! cloudwatch: get unique roll up list []
2019-10-29T22:41:08Z I! Starting AmazonCloudWatchAgent (version 1.230621.0)
2019-10-29T22:41:08Z I! Loaded outputs: cloudwatch
2019-10-29T22:41:08Z I! cloudwatch: publish with ForceFlushInterval: 1m0s, Publish Jitter: 37s
2019-10-29T22:41:08Z I! Loaded inputs: disk mem
2019-10-29T22:41:08Z I! Tags enabled: host=ip-172-31-71-5
2019-10-29T22:41:08Z I! Agent Config: Interval:10s, Quiet:false, Hostname:"ip-172-31-71-5", Flush Interval:1s 
2019-10-29T22:41:08Z I! will use file based credentials provider 
2019-10-29T22:41:08Z E! refresh EC2 Instance Tags failed: SharedCredsLoad: failed to get profile, metrics will be dropped until it got fixed
2019-10-29T22:42:37Z E! refresh EC2 Instance Tags failed: SharedCredsLoad: failed to get profile, metrics will be dropped until it got fixed
2019-10-29T22:43:37Z E! refresh EC2 Instance Tags failed: SharedCredsLoad: failed to get profile, metrics will be dropped until it got fixed
2019-10-29T22:46:37Z E! refresh EC2 Instance Tags failed: SharedCredsLoad: failed to get profile, metrics will be dropped until it got fixed
2019-10-29T22:49:37Z E! refresh EC2 Instance Tags failed: SharedCredsLoad: failed to get profile, metrics will be dropped until it got fixed
2019-10-29T22:52:37Z E! refresh EC2 Instance Tags failed: SharedCredsLoad: failed to get profile, metrics will be dropped until it got fixed

и config.json, который я использовал

root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/bin# cat config.json
{
    "agent": {
        "metrics_collection_interval": 10,
        "run_as_user": "cwagent"
    },
    "metrics": {
        "namespace": "TestNamespace",
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}

РЕДАКТИРОВАТЬ

Я получил его после удаления учетных данныхмодификация

root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/etc# tail -n 4 common-config.toml 
#### BEGIN ANSIBLE MANAGED BLOCK ####
#[credentials]
#shared_credential_file = "/home/cwagent/.aws/credentials"
#### END ANSIBLE MANAGED BLOCK ####

и после того, как я скопировал файл конфигурации в папку по умолчанию, он проверяет (хотя в документах сказано, что вы можете передать имя файла, как я).

root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/bin# cp config.json /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/bin# cd ../etc/
root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/etc# chown cwagent:cwagent amazon-cloudwatch-agent.json 
root@ip-172-31-71-5:/opt/aws/amazon-cloudwatch-agent/etc# ls -l
total 16
drwxr-xr-x 2 cwagent cwagent 4096 Oct 30 22:05 amazon-cloudwatch-agent.d
-rwxr-xr-x 1 cwagent cwagent  611 Oct 30 22:11 amazon-cloudwatch-agent.json
-rw-rw-r-- 1 cwagent cwagent 1144 Oct 30 22:05 amazon-cloudwatch-agent.toml
-rw-r--r-- 1 cwagent cwagent 1073 Oct 30 22:05 common-config.toml

1 Ответ

1 голос
/ 30 октября 2019

Ошибка, по-видимому, связана с доступом к тегам , которые связаны с экземплярами Amazon EC2.

В инструкциях по установке, которые вы указали, предлагается создать роль IAM с прикрепленной политикой CloudWatchAgentServerPolicy. Эта политика включает в себя разрешение на описание тегов :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "ec2:DescribeVolumes",
                "ec2:DescribeTags",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams",
                "logs:DescribeLogGroups",
                "logs:CreateLogStream",
                "logs:CreateLogGroup"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter"
            ],
            "Resource": "arn:aws:ssm:*:*:parameter/AmazonCloudWatch-*"
        }
    ]
}

Может показаться, что агент CloudWatch на этом сервере не получает такие разрешения и поэтому не может перечислить теги.

Поэтому:

  • Подтвердите, что Роль IAM была создана и что она включает в себя политику CloudWatchAgentServerPolicy
  • Подтвердите, что эта роль IAM имеет назначен экземпляру Amazon EC2 , на котором запущен агент CloudWatch
  • Если он все еще не работает, проверьте, есть ли какие-либо учетные данные, хранящиеся локально в экземпляре, которыйАгент может использовать вместо роли IAM, назначенной экземпляру
...