Рубрики
Uncategorized

3 Примеры исправления DEVOPS с DataDog и Captyctript

В качестве программного обеспечения для программного обеспечения мы испытываем периоды непредсказуемых платформерных шипов на использование, которые могут … помечены DevOps, Systems, AWS, Cloudskills.

В качестве программного обеспечения для программного обеспечения мы испытываем периоды непредсказуемых шипов на использование платформы, которые могут прийти со всего мира. Эта волатильность способствует сложности вокруг масштабирования экземпляра и другой инфраструктурой ядра DEV. Если наши случаи не масштабируются должным образом, наши пользователи испытывают менее исполнительный продукт. Если наши серверы слишком велики, это пустая трата долларов.

Подключение к DataDog предоставляет нашу компанию Newfound и очень необходимые идеи в нашей инфраструктуре AWS. Кроме того, функциональность оповещения, встроенная в мониторинг событий Datadog, разблокировал способность для нас мониторинга, расследовать и в конечном итоге разрешать проблемы с нашей инфраструктурой. Однако, хотя Datadog предупредил нас к вопросам, нам все еще пришлось вручную управлять нашими AWS Infra. Наша цель состояла в том, чтобы построить платформу, которая могла бы устранить проблемы с инфрами, используя предупреждения о датадогах.

1) Управление экземпляром AWS EC2 —

Я ускользнул к этому случаю использования в абзаце вступления. Главным образом, с оповещением DataDog и Картина пользователи могут настроить оповещение для высокого или низкого уровня использования определенного экземпляра. Сделать это, Пользователи быстро настраивают триггер DataDog на ориентирии Отказ

После настройки выпуска данных DataDog вы можете запустить скрипты оболочки, Python, JavaScript, Java или SQL-запросы непосредственно от ориентиры. В этом случае мы используем библиотеку BOTO3 Python для автоматизации различных функций по восстановлению EC2 ( Учебное пособие на полный пример и Readme ).

Например, если мы получаем предупреждение о том, что наш экземпляр имеет высокую нагрузку на трафик, мы можем автоматизировать сценарий для добавления другого экземпляра EC2 в нашу систему с помощью этого типа кода:

import boto3

def turn_instance_on( instance_id ):
    ec2 = build_client()
    current_state = check_instance_state( instance_id )
    if current_state == 'not running':
        try:
            response = ec2.start_instances(InstanceIds=[instance_id], DryRun=False)
            new_state = response.get('StartInstances')[0].get('CurrentState').get('Name')
            return 'Success'
        except ClientError as response:
            return response
    else:
        return 'Instance Already Running'

Тот же тип логики может быть запущен, чтобы выключить экземпляры с низким трафиком.

Полный пример здесь.

2) Откат к предыдущему развертыванию с circleci после подтверждения администратора через текстовое сообщение.

При создании инструмента восстановления мы оставляем себя, нуждающимися в автоматизированных задачах, смешанных с Взаимодействия «Человека в петле» Отказ Главным образом, мы хотели разработать программу, которая перекатила бы наш производственный сервер обратно к предыдущей версии на основе оповещения DataDog. Более того, после того, как предупреждение попадет на нашу бэкэнду, мы хотели создать одобрение текстового сообщения нашей командой развития Backend. После того, как одобрено ответом текстового сообщения, отката откатается через Circleci .

Так, как это работает? Во-первых, мы настроили оповещение о событии на DataDog, которое связано с нашим Rollbar Инцидент отчетности о развертывании. Если этот инцидент отмечен как bad_deploy наши триггерные пожары Отказ Затем скрипт Python интерпретирует событие и определяет, необходим ли откат:

event = variables['Event']
title = event.get('Title')
try:
    if 'bad_deploy' in title:
        status = 'bad'
        variables['status'] = status
    else:
        status = 'good'
except:
    variables['status'] = 'good'

Если откат необходим, мы используем API Twilio для отправки текстового сообщения на нашу команду DEV Backend. Если/когда dev ответ с «Approw» CIRCLECI установлен на откат к предыдущей рабочей версии нашей производственной системы.

Полный пример здесь.

3) Прекратить запрос тупикового дБ и воспользоваться вопросами.

Когда мы продолжаем масштабировать, были экземпляры, в которых мы испытали непредвиденные проблемы с базой данных, такие как тупики из длинных заправок. Этот тип события может привести к значительной деградации производительности для нашей пользовательской базы. Поэтому мы хотели построить процесс для регистрации затыкового процесса, но в конечном итоге в конечном итоге убивают запрос в автоматизированном виде (Мы определили, что это лучше, чем пользовательская деградация).

Для того, чтобы сделать это, мы настроили Уведомления DataDog для высокого использования CPU (ухудшение состояния) или использование высокой памяти в нашей базе данных. Когда это предупреждение попадает в ориентирт ориентации, он пинает пару процессов.

Изначально мы используем Python & SQL, чтобы захватить все в настоящее время запрашивающие запросы на нашей БД (RDS на AWS). Первый процесс создает PandaFrame Pandaframe информации о запуске запросов, хранит это в файле, а затем отправляет по электронной почте файл на нашей команде DEV Backend. Второй процесс ищет запросы, которые превысили ожидаемый порог времени. Для этих запросов они передаются на третий процесс, который убивает их на основе их идентификатора RDS.

Пример вытягивания бегущих запросов:

import boto3
from botocore.exceptions import ClientError
def build_client():
    ec2 = boto3.client(
    'rds',
    region_name = 'us-east-2',
    aws_access_key_id=context['key_id'], #stored in .secrets
    aws_secret_access_key=context['key_secret'] # stored in .secrets
)
    return rds
rds = build_client()
response = rds.execute_statement(
    continueAfterTimeout=False,
    database='database-1',
    includeResultMetadata=False,
    resourceArn='aws:rds:us-east-',
    schema='string',
    secretArn='string',
    sql='string',
    transactionId='string'
)

Полный пример здесь.

Наша цель состояла в том, чтобы построить платформу, которая могла бы устранить проблемы с инфрами, используя предупреждения о датадогах.

Оригинал Позвольте пользователям выполнять процессы от мониторов и событий Datadog, чтобы автоматически удовлетворить потребности в инфраструктуре. Кружества — это среда виртуальной разработки, которая управляет сценариями в оболочке, Python или JavaScript и подключается с внешними службами, такими как EC2, Circleci и SQL Server.

Оригинал: «https://dev.to/jorshman/3-examples-of-devops-remediation-with-datadog-and-wayscript-3c5k»