Python용 Azure 모니터링 라이브러리
개요
모니터링은 애플리케이션을 유지하고 정상 상태에서 실행할 수 있는 데이터를 제공합니다. 또한 잠재적 문제를 방지하거나 지난 문제를 해결할 수 있습니다. 또한 애플리케이션에 대해 깊이 이해하는 데 모니터링 데이터를 사용할 수 있습니다. 이러한 정보를 통해 애플리케이션 성능이나 유지 관리를 개선하거나 그렇지 않으면 수동 개입이 필요한 작업을 자동화하는 데 도움이 될 수 있습니다.
Azure Monitor에 대해 여기서 자세히 알아보세요.
설치
pip install azure-mgmt-monitor
예 - 메트릭
이 샘플에서는 Azure에서 리소스(VM 등)의 메트릭을 가져옵니다. 이 샘플은 적어도 0.4.0 버전의 Python 패키지가 필요합니다.
필터에 사용할 수 있는 키워드의 전체 목록은 여기에 있습니다.
리소스 종류별로 지원되는 메트릭은 여기에 있습니다.
import datetime
from azure.mgmt.monitor import MonitorManagementClient
# Get the ARM id of your resource. You might chose to do a "get"
# using the according management or to build the URL directly
# Example for a ARM VM
resource_id = (
"subscriptions/{}/"
"resourceGroups/{}/"
"providers/Microsoft.Compute/virtualMachines/{}"
).format(subscription_id, resource_group_name, vm_name)
# create client
client = MonitorManagementClient(
credentials,
subscription_id
)
# You can get the available metrics of this specific resource
for metric in client.metric_definitions.list(resource_id):
# azure.monitor.models.MetricDefinition
print("{}: id={}, unit={}".format(
metric.name.localized_value,
metric.name.value,
metric.unit
))
# Example of result for a VM:
# Percentage CPU: id=Percentage CPU, unit=Unit.percent
# Network In: id=Network In, unit=Unit.bytes
# Network Out: id=Network Out, unit=Unit.bytes
# Disk Read Bytes: id=Disk Read Bytes, unit=Unit.bytes
# Disk Write Bytes: id=Disk Write Bytes, unit=Unit.bytes
# Disk Read Operations/Sec: id=Disk Read Operations/Sec, unit=Unit.count_per_second
# Disk Write Operations/Sec: id=Disk Write Operations/Sec, unit=Unit.count_per_second
# Get CPU total of yesterday for this VM, by hour
today = datetime.datetime.now().date()
yesterday = today - datetime.timedelta(days=1)
metrics_data = client.metrics.list(
resource_id,
timespan="{}/{}".format(yesterday, today),
interval='PT1H',
metricnames='Percentage CPU',
aggregation='Total'
)
for item in metrics_data.value:
# azure.mgmt.monitor.models.Metric
print("{} ({})".format(item.name.localized_value, item.unit.name))
for timeserie in item.timeseries:
for data in timeserie.data:
# azure.mgmt.monitor.models.MetricData
print("{}: {}".format(data.time_stamp, data.total))
# Example of result:
# Percentage CPU (percent)
# 2016-11-16 00:00:00+00:00: 72.0
# 2016-11-16 01:00:00+00:00: 90.59
# 2016-11-16 02:00:00+00:00: 60.58
# 2016-11-16 03:00:00+00:00: 65.78
# 2016-11-16 04:00:00+00:00: 43.96
# 2016-11-16 05:00:00+00:00: 43.96
# 2016-11-16 06:00:00+00:00: 114.9
# 2016-11-16 07:00:00+00:00: 45.4
예 - 경고
이 예제에서는 모든 리소스가 제대로 모니터링되는지 확인하기 위해 리소스를 만들 때 리소스에 대한 경고를 자동으로 설정하는 방법을 보여 줍니다.
VM에 데이터 원본을 만들어 CPU 사용량을 경고합니다.
from azure.mgmt.monitor import MonitorMgmtClient
from azure.mgmt.monitor.models import RuleMetricDataSource
resource_id = (
"subscriptions/{}/"
"resourceGroups/MonitorTestsDoNotDelete/"
"providers/Microsoft.Compute/virtualMachines/MonitorTest"
).format(self.settings.SUBSCRIPTION_ID)
# create client
client = MonitorMgmtClient(
credentials,
subscription_id
)
# I need a subclass of "RuleDataSource"
data_source = RuleMetricDataSource(
resource_uri = resource_id,
metric_name = 'Percentage CPU'
)
지난 5분 동안 VM의 평균 CPU 사용량이 90%를 초과하면(이전 데이터 원본 사용) 트리거하는 임계값 조건을 만듭니다.
from azure.mgmt.monitor.models import ThresholdRuleCondition
# I need a subclasses of "RuleCondition"
rule_condition = ThresholdRuleCondition(
data_source = data_source,
operator = 'GreaterThanOrEqual',
threshold = 90,
window_size = 'PT5M',
time_aggregation = 'Average'
)
전자 메일 작업 만들기:
from azure.mgmt.monitor.models import RuleEmailAction
# I need a subclass of "RuleAction"
rule_action = RuleEmailAction(
send_to_service_owners = True,
custom_emails = [
'monitoringemail@microsoft.com'
]
)
경고 만들기:
rule_name = 'MyPyTestAlertRule'
my_alert = client.alert_rules.create_or_update(
group_name,
rule_name,
{
'location': 'westus',
'alert_rule_resource_name': rule_name,
'description': 'Testing Alert rule creation',
'is_enabled': True,
'condition': rule_condition,
'actions': [
rule_action
]
}
)
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
Azure SDK for Python