Автоматическое масштабирование AWS SageMaker не срабатывает, несмотря на то, что сигнал тревоги CloudWatch находится в сPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Автоматическое масштабирование AWS SageMaker не срабатывает, несмотря на то, что сигнал тревоги CloudWatch находится в с

Сообщение Anonymous »

Я настроил автоматическое масштабирование для своего варианта конечной точки SageMaker с использованием сигналов тревоги CloudWatch и автоматического масштабирования приложений, но действие масштабирования не запускается, несмотря на то, что сигнал тревоги находится в состоянии «В состоянии тревоги».
Конечная точка SageMaker:
Имя конечной точки: asynchronous-inference-test-autoscaling-dev-7
Тип: Асинхронный
Метрика CloudWatch:
Имя метрики: HasBacklogWithoutCapacity
Условие: сигнал тревоги срабатывает, если значение метрики равно ≥1 для 1 точки данных в течение 10 секунд.
Политика масштабирования:
Политика масштабирования: политика масштабирования счетчик экземпляров на 1, когда Метрика HasBacklogWithoutCapacity равна ≥1.
Политика уменьшения масштаба: политика уменьшает количество экземпляров до 0, когда метрика HasBacklogWithoutCapacity равна 0.
Действия по тревоге:
Тревога ScaleUpTo1InstanceAlarm находится в состоянии «В тревоге», что указывает на то, что метрика HasBacklogWithoutCapacity превысила пороговое значение. (≥1), но действие масштабирования не запускается.
Детали конфигурации:

Период восстановления составляет установлено значение 30 секунд.
Будильник настроен на оценку показателя каждые 10 секунд и запускает политику масштабирования, когда HasBacklogWithoutCapacity равен ≥1.
Спасибо за потраченное время.
Спасибо за потраченное время. р>
КОД НИЖЕ
import boto3

# resource_id for my SageMaker endpoint variant
resource_id = f"endpoint/{endpoint_name}/variant/{variant_name}"

client = boto3.client('application-autoscaling')

# Register the scalable target for the endpoint variant
client.register_scalable_target(
ServiceNamespace='sagemaker',
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=1
)

# Create the scaling policy to scale up when HasBacklogWithoutCapacity >= 1
response_scale_up = client.put_scaling_policy(
PolicyName="ScaleUpTo1InstancePolicy",
ServiceNamespace="sagemaker",
ResourceId=resource_id,
ScalableDimension="sagemaker:variant:DesiredInstanceCount",
PolicyType="StepScaling",
StepScalingPolicyConfiguration={
"AdjustmentType": "ChangeInCapacity",
"MetricAggregationType": "Average",
"Cooldown": 30, # Cooldown period (in seconds)
"StepAdjustments": [
{
"MetricIntervalLowerBound": 0,
"ScalingAdjustment": 1 # Scale up by 1 instance
}
]
},
)

# Extract the Policy ARN
policy_arn_scale_up = response_scale_up["PolicyARN"]
print("Scale-up policy ARN:", policy_arn_scale_up)

Клиент CloudWatch для настройки сигналов тревоги
cw_client = boto3.client("cloudwatch")

response_alarm_scale_up = cw_client.put_metric_alarm(
AlarmName="ScaleUpTo1InstanceAlarm",
MetricName="HasBacklogWithoutCapacity", # The CloudWatch metric to monitor
Namespace="AWS/SageMaker",
Statistic="Average",
EvaluationPeriods=1, # Evaluate the metric once
DatapointsToAlarm=1, # Trigger alarm if condition is met in 1 datapoint
Threshold=1, # Threshold to trigger scale-up
ComparisonOperator="GreaterThanOrEqualToThreshold",
TreatMissingData="breaching", # Treat missing data as breaching threshold
Dimensions=[
{'Name': 'EndpointName', 'Value': endpoint_name}
],
Period=10, # Period to evaluate the metric (in seconds)
AlarmActions=[policy_arn_scale_up] # Link the alarm to the scaling policy
)

print("Scale-up alarm created:", response_alarm_scale_up)

# Create the scaling policy to scale down to 0 instances when HasBacklogWithoutCapacity = 0
response_scale_down = client.put_scaling_policy(
PolicyName="ScaleDownToZeroInstancePolicy",
ServiceNamespace="sagemaker",
ResourceId=resource_id,
ScalableDimension="sagemaker:variant:DesiredInstanceCount",
PolicyType="StepScaling",
StepScalingPolicyConfiguration={
"AdjustmentType": "ChangeInCapacity",
"MetricAggregationType": "Average", # Use average of the metric
"Cooldown": 30, # Cooldown period (in seconds)
"StepAdjustments": [
{
"MetricIntervalLowerBound": 0, # Scale down when metric is 0
"ScalingAdjustment": -1 # Scale down by 1 instance
}
]
},
)

# Extract the Policy ARN
policy_arn_scale_down = response_scale_down["PolicyARN"]
print("Scale-down policy ARN:", policy_arn_scale_down)

# CloudWatch alarm for scale down
response_alarm_scale_down = cw_client.put_metric_alarm(
AlarmName="ScaleDownToZeroInstanceAlarm",
MetricName="HasBacklogWithoutCapacity", # The CloudWatch metric to monitor
Namespace="AWS/SageMaker",
Statistic="Average",
EvaluationPeriods=1, # Evaluate the metric once
DatapointsToAlarm=1, # Trigger alarm if condition is met in 1 datapoint
Threshold=0, # Threshold to trigger scale-down
ComparisonOperator="LessThanOrEqualToThreshold",
TreatMissingData="ignore", # Ignore missing data (won't trigger scale-up)
Dimensions=[
{'Name': 'EndpointName', 'Value': endpoint_name}
],
Period=10, # Period to evaluate the metric (in seconds)
AlarmActions=[policy_arn_scale_down] # Link the alarm to the scaling policy
)

print("Scale-down alarm created:", response_alarm_scale_down)


Подробнее здесь: https://stackoverflow.com/questions/792 ... eing-in-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»