首页 > 解决方案 > 更正参数以创建 DiagnosticSettingsOperations 对象

问题描述

我想为 Azure 资源配置诊断设置,因此我正在使用DiagnosticSettingsOperations类。我能够创建 Class 的客户端( DiagnosticSettingsOperationsMonitorManagementClient类的第一个参数)。但是,我无法获取需要传递给的其他三个参数。DiagnosticSettingsOperations

构造函数:

DiagnosticSettingsOperations(client, config, serializer, deserializer)

因为,我不知道要通过什么,所以我只给出了空白字符串''

下面是我的示例代码:

azureCredential = authenticateToAzureUsingServicePrincipal()
monitorManagerClient = MonitorManagementClient(azureCredential, 'xxx-xxxx-xxxx-xxxx-xxxxxx')

diagnosticSettingsOperationsClient = DiagnosticSettingsOperations(monitorManagerClient, '', '','')
resource_uri = '<AZURE RESOURCE ID OF SQL DATABASE>'
name = 'coemonitoreu'
workspace_id = 'AZURE RESOURCE ID OF LOG ANALYTICS WORKSPACE'
metrics = ["WorkloadManagement"]
logs = ["SQLInsights"]

parameter_list = {
    'workspace_id': workspace_id,
    'metrics': metrics,
    'logs': logs
    }
diagnosticSettingsOperationsClient.create_or_update(resource_uri=resource_uri, name=name, parameters=parameter_list)

我知道我的类调用是错误的,有人可以指出创建DiagnosticSettingsOperations客户端的正确方法,所以我可以使用它的create_or_update方法来配置诊断设置。

运行代码时出错:

<azure.mgmt.monitor._monitor_management_client.MonitorManagementClient object at 0x000002053F7BD448>
Traceback (most recent call last):
  File "C:\Users\manjug\source\repos\ExtolloConfigDatabase\ExtolloConfigDatabase\anotherPythonFile.py", line 35, in <module>
    diagnosticSettingsOperationsClient.create_or_update(resource_uri=resource_uri, name=name, parameters=parameter_list)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\azure\mgmt\monitor\v2017_05_01_preview\operations\_diagnostic_settings_operations.py", line 139, in create_or_update
    'resourceUri': self._serialize.url("resource_uri", resource_uri, 'str', skip_quote=True),
AttributeError: 'str' object has no attribute 'url'

标签: pythonazureazure-resource-managerazure-monitoringazure-sdk-python

解决方案


请尝试如下设置:

#for log    
logs = [{"category":"SQLInsights","enabled":true,"retentionPolicy":{"days":0,"enabled":false}}]
#to set more catetories, you can use a "," symbol in the [],like below:
logs = [{"category":"SQLInsights","enabled":true,"retentionPolicy":{"days":0,"enabled":false}},{other category}]

#for metrics
metrics = [{"enabled":true,"retentionPolicy":{"days":0,"enabled":false},"category":"WorkloadManagement"}]

推荐阅读