0

我目前正在尝试通过 ARM 模板部署 Linux 扩展 LAD。按照文档,扩展需要一个 SasToken 和一个具有表容量的存储帐户才能工作。我在调用与此类似的方法之前部署存储帐户,以创建 SasToken,然后使用该令牌部署扩展。

这在安装扩展程序时工作正常。但是,如果我在门户中查看它,则会出现错误。它告诉我我需要以前没有的容器和对象权限,但现在我修改了 SasToken 参数以将它们包含在部署中。

我已经尝试从消息中查找主要关键字,但我无法弄清楚。

这是错误(很长):

在生成的 mdsd 配置中检测到问题。无法启用,尽管此安装/启用操作报告为成功,因此 VM 可以完成成功启动。Linux 诊断扩展将退出。配置验证消息:2020-11-25T17:07:57.9564180Z:并非所有 GCS 环境变量都已定义。缺少 6:MONITORING_GCS_ENVIRONMENT MONITORING_GCS_ACCOUNT MONITORING_GCS_REGION MONITORING_GCS_CERT_CERTFILE MONITORING_GCS_CERT_KEYFILE MONITORING_GCS_STORAGE_RESOURCE_TAG_TYPE。不会使用 GCS。Parse 报告了这些消息:/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(3) 错误:给出的 SAS 令牌无效。原因:帐户 SAS 必须启用容器和对象访问(srt='co' 或更好)/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(18) 致命:AddMonikerEventInfo() 失败:未找到默认凭据。/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(25) 错误:未定义默认凭据 /var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131 /xmlCfg.xml(31) 致命:AddMonikerEventInfo() 失败:未找到默认凭据。/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(45) 致命:AddMonikerEventInfo() 失败:未找到默认凭据。/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(60) 致命:AddMonikerEventInfo() 失败:未找到默认凭据。/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(71) 致命:AddMonikerEventInfo() 失败:未找到默认凭据。/var/lib/waagent/Microsoft.Azure.Diagnostics。LinuxDiagnostic-3.0.131/xmlCfg.xml(84) 致命:AddMonikerEventInfo() 失败:未找到默认凭据。/var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(97) 错误:未定义默认凭据 /var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131 /xmlCfg.xml(97) 错误:未定义子元素 /var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(97) 错误:未定义默认凭据 /var/lib/ waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(97) 错误:未定义子元素 /var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(97 ) 错误:未定义默认凭据 /var/lib/waagent/Microsoft.Azure.Diagnostics.LinuxDiagnostic-3.0.131/xmlCfg.xml(97) 错误:

这是我没有 ladcfg 的模板,因为它很长:

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
  "vmName": {
    "type": "string",
    "metadata": {
      "description": "The VM Name."
    }
  },
  "location": {
    "type": "string",
    "metadata": {
      "description": "The location."
    }
  },
  "storageAccountName": {
    "type": "string",
    "metadata": {
      "description": "Storage Account Name."
    }
  },
  "storageAccountEndpoint": {
    "type": "string",
    "metadata": {
      "description": "Storage Account Endpoint."
    },
    "defaultValue": "https://core.windows.net"
  },
  "accountSasProperties": {
    "type": "object",
    "defaultValue": {
      "signedServices": "btq",
      "signedPermission": "rwlacup",
      "signedExpiry": "2030-01-01T00:00:01Z",
      "signedResourceTypes": "sco",
      "keyToSign":"key1"
    }
  }

},
"variables": {
  "perfSink": "[concat(parameters('vmName'),'-perfSink')]",
  "sysLogSink": "[concat(parameters('vmName'),'-sysLogSink')]"
},
"resources": [
  {
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "[concat(parameters('vmName'), '/LinuxDiagnostic')]",
    "apiVersion": "2019-07-01",
    "location": "[parameters('location')]",
    "properties": {
      "publisher": "Microsoft.Azure.Diagnostics",
      "type": "LinuxDiagnostic",
      "typeHandlerVersion": "3.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "sinksConfig": {
          "sink": [
            {
              "name": "[variables('perfSink')]",
              "type": "JsonBlob"
            },
            {
              "name": "[variables('syslogSink')]",
              "type": "JsonBlob"
            }
          ]
        },
        "StorageAccount": "[parameters('storageAccountName')]",
        "ladCfg": { ... }
      },
      "protectedSettings": {
        "storageAccountName": "[parameters('storageAccountName')]",
        "storageAccountEndPoint": "[parameters('storageAccountEndpoint')]",
        "storageAccountSasToken": "[listAccountSas(resourceId('Microsoft.Storage/storageAccounts',parameters('storageAccountName')), '2018-02-01', parameters('accountSasProperties')).accountSasToken]"
      }
    }
  }
],
"outputs": {
}}

我非常感谢提供的任何帮助。

4

1 回答 1

1

我将我的建议总结如下。

当我们安装 Linux 诊断扩展来监控指标和日志并将数据存储到 Azure 存储时,我们应该 为 Blob 和表服务提供一个Account SAS 令牌(ss='bt'),适用于容器和对象(srt='co'),它授予添加、创建、列出、更新和写入权限(sp='acluw'). 此外,关于如何在 Azure ARM 模板中创建 Account SAS 令牌,我们可以使用 ARM 资源函数listAccountSas

例如

"parameters": {
  "accountSasProperties": {
    "type": "object",
    "defaultValue": {
      "signedServices": "bt",
       "signedResourceTypes": "co",
       "signedPermission": "acluw",
       "signedExpiry": "9001-01-30T16:00:00Z"
    }
  }
},
...
"sasToken": "[listAccountSas(parameters('storagename'), '2018-02-01', parameters('accountSasProperties')).accountSasToken]"

更多详情,请参阅

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource?tabs=json#list-example

https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/diagnostics-linux?toc=/azure/azure-monitor/toc.json#protected-settings

于 2020-11-27T01:46:30.593 回答