使用 CI/CD 工具为流分析作业配置自动缩放设置

流单元(SU)表示分配给运行Azure 流分析作业的计算资源。 SU 数越大,分配给作业的 CPU 和内存资源越多。

自动缩放功能会根据您定义的规则动态调整 SU。 可以在Azure门户中或使用本地计算机上的流分析持续集成和持续交付(CI/CD)工具为流分析作业配置自动缩放设置。

本文介绍如何使用流分析 CI/CD 工具为流分析作业配置自动缩放设置。 若要了解有关Azure门户中自动缩放作业的详细信息,请参阅自动缩放流单元(预览版)。

流分析 CI/CD 工具可让您指定最大流单元数,并配置一组规则来对您的作业进行自动缩放。 然后,它确定是添加 SU(以处理负载增加)还是减少 SU 数(计算资源处于空闲状态时)。

下面是自动缩放设置的示例:

  • 如果最大 SU 数量设置为 12,则当该作业在过去 2 分钟内的平均 SU 使用率超过 75% 时,增加 SU 数量。

先决条件

若要完成本文中的步骤,需要:

  • 本地计算机上的流分析项目。 按照 本指南 创建一个。
  • Azure 中正在运行的流分析作业。

配置自动缩放设置

方案 1:配置本地流分析项目的设置

如果本地计算机上有一个正在运行的流分析项目,请执行以下步骤来配置自动缩放设置:

  1. 在Visual Studio Code中打开流分析项目。

  2. 终端 面板中运行以下命令以安装流分析 CI/CD 工具:

    npm install -g azure-streamanalytics-cicd
    

    以下是 azure-streamanalytics-cicd 支持的命令列表:

    命令 Description
    build 为Visual Studio Code中的流分析项目生成标准Azure 资源管理器模板(ARM 模板)。
    localrun 在 Visual Studio Code 中本地运行流分析项目
    test 在 Visual Studio Code 中测试流分析项目。
    addtestcase 在Visual Studio Code中添加流分析项目的测试用例。
    autoscale 为自动缩放设置生成 ARM 模板文件。
    help 显示有关特定命令的详细信息。
  3. 生成项目:

    azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
    

    如果成功生成项目,将在 “部署 ”文件夹下创建两个 JSON 文件。 一个是 ARM 模板文件,另一个是参数文件。

    显示生成项目后生成的文件的屏幕截图。

    Note

    强烈建议你对更新的 ARM 模板架构使用 --v2 此选项。 更新后的架构的参数较少,但保留与以前的版本相同的功能。

    将来将弃用旧的 ARM 模板。 之后,只有通过创建的 build --v2 模板才会收到更新或 bug 修复。

  4. 配置自动缩放设置。 使用 azure-streamanalytics-cicd autoscale 命令添加参数键和值。

    参数键 价值 示例
    capacity 最大 SU 数(1/3、2/3、1,最多 66 个 SU V2) 2
    metrics 用于自动缩放规则的指标 ProcessCPUUsagePercentage ResourceUtilization
    targetJobName 项目名称 ClickStream-Filter
    outputPath ARM 模板的输出路径 ./Deploy

    下面是一个示例:

    azure-streamanalytics-cicd autoscale --capacity 2 --metrics ProcessCPUUsagePercentage ResourceUtilization --targetJobName ClickStream-Filter --outputPath ./Deploy
    

    如果成功配置自动缩放设置,则会在 “部署 ”文件夹下创建两个 JSON 文件。 一个是 ARM 模板文件,另一个是参数文件。

    自动缩放配置完成后生成的自动缩放文件的屏幕截图。

    下表列出了可用于定义自动缩放规则的指标:

    Metric REST API 中的名称 单位 Aggregation 尺寸 时间粒度 DS 导出
    失败的函数请求

    失败的函数请求数
    AMLCalloutFailedRequests 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    函数事件数

    函数事件
    AMLCalloutInputEvents 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    函数请求数

    函数请求
    AMLCalloutRequests 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    数据转换错误

    数据转换错误
    ConversionErrors 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    输入数据反序列化错误

    输入反序列化错误
    DeserializationError 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    无序事件

    失序事件
    DroppedOrAdjustedEvents 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    早期输入事件

    早期输入事件
    EarlyInputEvents 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    运行时错误

    运行时错误
    Errors 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    输入事件字节数

    输入事件字节
    InputEventBytes 字节 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    输入事件数

    输入事件
    InputEvents 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    积压的输入事件

    积压的输入事件
    InputEventsSourcesBacklogged 计数 平均值、最大值、最小值 LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    收到的输入源数

    收到的输入源数
    InputEventsSourcesPerSecond 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    延迟输入事件

    延迟输入事件
    LateInputEvents 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    输出事件

    输出事件
    OutputEvents 计数 总计(总和) LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    水印延迟

    水印延迟
    OutputWatermarkDelaySeconds 平均值、最大值、最小值 LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    CPU 使用率百分比

    CPU 利用率
    ProcessCPUUsagePercentage Percent 平均值、最大值、最小值 LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的
    SU (内存) 利用率百分比

    SU (内存) 利用率百分比
    ResourceUtilization Percent 平均值、最大值、最小值 LogicalNamePartitionIdProcessorInstanceNodeName PT1M 是的

    所有指标阈值的默认值为 70。 如果要将指标阈值设置为另一个数字,请打开 *.AutoscaleSettingTemplate.parameters.json 文件并更改 Threshold 值。

    显示如何在参数文件中设置指标阈值的屏幕截图。

    若要详细了解如何定义自动缩放规则,请参阅 “了解自动缩放设置”。

  5. 部署到 Azure。

    1. 连接到 Azure 帐户:

      # Connect to Azure
      Connect-AzAccount -Environment AzureChinaCloud
      
      # Set the Azure subscription
      Set-AzContext [SubscriptionID/SubscriptionName]
      
    2. 部署流分析项目:

      $templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json"
      $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json"
      New-AzResourceGroupDeployment `
        -Name devenvironment `
        -ResourceGroupName myResourceGroupDev `
        -TemplateFile $templateFile `
        -TemplateParameterFile $parameterFile
      
    3. 部署自动缩放设置:

      $templateFile = ".\Deploy\ClickStream-Filter.AutoscaleSettingTemplate.json"
      $parameterFile = ".\Deploy\ClickStream-Filter.AutoscaleSettingTemplate.parameters.json"
      New-AzResourceGroupDeployment `
        -Name devenvironment `
        -ResourceGroupName myResourceGroupDev `
        -TemplateFile $templateFile `
        -TemplateParameterFile $parameterFile
      

成功部署项目后,可以在Azure门户中查看自动缩放设置。

方案 2:在 Azure 中配置正在运行的流分析作业的设置

如果流分析作业在 Azure 中运行,可以使用 PowerShell 中的流分析 CI/CD 工具配置自动缩放设置。

运行以下命令。 将 $jobResourceId 替换为流分析作业的资源 ID。

azure-streamanalytics-cicd autoscale --capacity 2 --metrics ProcessCPUUsagePercentage ResourceUtilization --targetJobResourceId $jobResourceId --outputPath ./Deploy

如果成功配置设置,ARM 模板和参数文件将创建在当前目录中。

然后,可以按照方案 1 中的部署步骤将自动缩放设置部署到Azure。

获取帮助

有关自动缩放设置的详细信息,请在 PowerShell 中运行以下命令:

azure-streamanalytics-cicd autoscale --help

如果流分析 CI/CD 工具存在任何问题,可以在GitHub中报告它们。