Я настроил автоматическое масштабирование для своего варианта конечной точки 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
Автоматическое масштабирование AWS SageMaker не срабатывает, несмотря на то, что сигнал тревоги CloudWatch находится в с ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Менеджер сигналов тревоги срабатывает только один раз, а не каждые 5 минут
Anonymous » » в форуме Android - 0 Ответы
- 40 Просмотры
-
Последнее сообщение Anonymous
-