Состояние журналов AWS Cloudwatch показывает, что они запущены, но журналы недоступны в консоли AWS

#amazon-web-services #amazon-ec2 #amazon-cloudwatch #aws-cloudwatch-log-insights

Вопрос:

Я новичок в aws, и мне нужно опубликовать журналы службы приложений в cloud watch. Я попробовал действия, упомянутые в документации 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"
}
 

Не понимаю, что здесь не так :(.

Любая помощь была бы полезна.

Заранее спасибо.

Комментарии:

1. Имеет ли ваша роль IAM, привязанная к EC2, разрешение на запись в CloudWatch?

2. Да, роль IAM, привязанная к EC2, имеет разрешение на запись в CloudWatch

3. можете ли вы поделиться дополнительной информацией о том, какой документ вы использовали для настройки. Я следовал этому быстрому началу: Установите и настройте агент журналов CloudWatch на работающем экземпляре EC2 Linux , и он работал без каких-либо проблем.

4. @samtoddler Я выполнил шаги, упомянутые здесь ссылка

Ответ №1:

Я перешел по ссылке, упомянутой вами, Установив и запустив агент CloudWatch на своих Серверах.

Ниже приведена моя конфигурация для отправки журналов и нескольких других показателей, которая генерируется этой командой

Запустите мастер настройки агента CloudWatch

 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
 

Запустите агент CloudWatch С помощью командной строки

 # /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"
}
 

введите описание изображения здесь

Вы можете искать проблемы в каталоге журналов, если таковые имеются

 [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, я бы использовал этот

Быстрый запуск: Установите и настройте агент журналов CloudWatch на работающем экземпляре EC2 Linux

Комментарии:

1. Моя конфигурация и шаги одинаковы. Единственная разница, которую я мог видеть, — это пользователь. «run_as_user»: «cwagent»

2. может ли это быть причиной??

3. @Priyanka да, если у пользователя cwagent нет прав на чтение журналов, которые вы пытаетесь протолкнуть, то это создает проблемы. Запуск агента CloudWatch от имени другого пользователя . Попробуйте настроить пользователя на root . Должно сработать, если нет, вы можете следовать руководству, связанному с запуском агента от имени другого пользователя.

4. в этом и заключалась проблема.. run_as_user : у cwagent не было разрешений. Изменил его на корневой.. и теперь он работает нормально.. Спасибо 🙂