Назад | Перейти на главную страницу

Мониторинг систем AWS за ElasticBeanStalk

Итак, я создаю компанию в облаке Amazon - создаю протокол / решения / стандартизированную реализацию IAAS и т. Д., А также являюсь системным администратором для отдельных систем, сред приложений и повседневной работы.

Одна из самых больших проблем, с которыми я сталкиваюсь, - это отслеживание различных журналов системы / приложений, а также таких показателей системы, как использование памяти, использование ЦП и т. Д., И т. Д. Централизованно. Например. -> Nagios + Urchin.

САМОЕ БОЛЬШОЕ препятствие для моих усилий заключается в следующем:

Приложение компании развертывается в виде файла Java * .WAR, загруженного в среду приложения Elastic BeanStalk, с балансировкой нагрузки и автоматическим масштабированием между 3 (мин.) И 10 (макс.) Серверами, а EC2, на которых выполняется приложение, - загорелся и утилизировал ad-hoc.

То есть я не могу очень долго отслеживать отдельные EC2, потому что многие из них прерываются, а затем автоматически настраиваются / автоматически масштабируются на лету, поэтому мне постоянно приходилось «контролировать то, что я отслеживаю. ", и постоянно удалять / добавлять адреса компьютеров EC2 в мои списки мониторинга.

Есть ли какой-то способ использовать инструменты мониторинга, такие как Zabbix или Nagios, для мониторинга ElasticBeanStalk, и чтобы он автоматически добавлял новые EC2 и автоматически удалял завершенные / неисправные EC2 из своего списка мониторинга?

Кроме того, могу ли я что-нибудь сделать с GrayLog для достижения аналогичных результатов с агрегированием / централизацией моих журналов приложений из нескольких экземпляров EC2 в ОДИН консолидированный набор журналов / событий? Если не GrayLog, существует ли НИЧЕГО ПОДОБНОЕ GrayLog, который может автоматически определять, какие члены EC2 добавляются / удаляются из среды, и автоматически собирать журналы из них?

Любые советы или указания приветствуются.

Большое спасибо и ура !!

Если вы развертываете WAR на эластичном beanstalk, вы можете установить метрики, создав файл конфигурации в папке .ebextensions в WEB-INF. См. Следующую ссылку для получения дополнительной информации о настройке и использовании этого экземпляра: - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html

Для установки показателей диска / памяти необходимо установить «Сценарии мониторинга Amazon CloudWatch для Linux» - см. http://aws.amazon.com/code/8720044071969977

files:
  "/opt/aws/cwms/CloudWatchMonitoringScripts.zip":
    mode: "000777"
    owner: ec2-user
    group: ec2-user
    source:  http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip
container_commands:
  01_unzip_cloud_watch_zip: 
    command: unzip -d /opt/aws/cwms /opt/aws/cwms/CloudWatchMonitoringScripts.zip
    ignoreErrors: true
  02_update_password_file:
    command: sed -i 's/Key=$/Key=<VALUE OF YOUR SECRET KEY>/;s/KeyId=$/KeyId=<VALUE OF YOUR ACCESS ID>/' /opt/aws/cwms/awscreds.conf
  03_update_crontab:    
    command: echo "*/1 * * * * /opt/aws/cwms/mon-put-instance-data.pl --mem-util --disk-path=/ --disk-space-util --from-cron" | crontab - -u ec2-user

В основном этот сценарий загружает файл CloudWatchMonitoringScripts.zip на базе Linux в папку, например / opt / aws / cwms (это может быть где угодно). Затем команды распаковывают файл, обновляют ключ доступа / секретный ключ (с помощью команды "sed") и, наконец, создают вкладку crontab.

Будьте осторожны с разделом вкладки crontab, так как он потенциально может стереть существующие записи crontab.

ОБНОВЛЕНИЕ (ФЕВРАЛЬ 2016)

Вот обновленный сценарий, который у меня неплохо работает по состоянию на февраль 2016 г. (см. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-cw.html).

sources: 
  /opt/cloudwatch: http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip

commands:
  00-installpackages:
    command: yum install -y perl-Switch perl-Sys-Syslog perl-LWP-Protocol-https

container_commands:
  01-setupcron:
    command: |
      echo '* * * * * root perl /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl `{"Fn::GetOptionSetting" : { "OptionName" : "CloudWatchMetrics", "DefaultValue" : "--mem-used --memory-units=megabytes --mem-util --disk-space-util --disk-space-used --disk-space-avail --disk-path=/" }}` >> /var/log/cwpump.log 2>&1' > /etc/cron.d/cwpump
  02-changeperm:
    command: chmod 644 /etc/cron.d/cwpump
  03-changeperm:
    command: chmod u+x /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl

option_settings:
  "aws:autoscaling:launchconfiguration" :
    IamInstanceProfile : "MonitorRole"
  "aws:elasticbeanstalk:customoption" :
    CloudWatchMetrics : "--mem-used --memory-units=megabytes --mem-util --disk-space-util --disk-space-used --disk-space-avail --disk-path=/"

ПРИМЕЧАНИЕ. У вас должна быть роль IAM с именем MonitorRule на месте. Его ролевая политика должна быть следующей (см. Также http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-cw.html):-

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "cloudwatch:PutMetricData",
        "ec2:DescribeTags"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

Для использования диска Elastic beanstack вы можете включить метрики экземпляра облачного наблюдения RootFileSysmtemUtil. Это доступно в разделе конфигурации Health Elastic beanstalk. В конфигурации «Здоровье» есть раздел «Отчеты о работоспособности». Выберите параметр RootFileSysmtemUtil и сохраните конфигурацию.

Теперь, если вы перейдете к метрикам CloudWatch ElasticBeanstack, вы увидите новые метрики.

Мы используем EC2, S3 и т. Д., Но еще не ElasticBeanStalk. я могу дать вам несколько предложений и идей ...

Cloudwatch: Мы используем CloudWatch от Amazon AWS, который дает довольно подробную информацию о наших инстансах EC2. Настройка мониторинга очень проста и имеет графический интерфейс .. Никаких сценариев или чего-либо еще. Руководство по началу работы с Cloudwatch предоставит много информации о CLI, но developerGuide дает точную информацию, которая нам понадобится: http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/AlarmThatSendsEmail.html http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/choosing_your_cloudwatch_interface.html

Я нашел эту ссылку на форуме Amazon ElasticBeanStack: - http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/using-features.healthstatus.html