diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/de-de/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/de-de/resources.resjson new file mode 100644 index 000000000000..cf0df847ce21 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/de-de/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Azure Monitor-Warnungen abfragen", + "loc.helpMarkDown": "[Weitere Informationen](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "Hiermit werden die konfigurierten Azure Monitor-Regeln auf aktive Warnungen überwacht.", + "loc.instanceNameFormat": "Azure Monitor-Warnungen abfragen", + "loc.releaseNotes": "Neuigkeiten in Version 1.0:
 Unterstützung zur Abfrage von einheitlichen Azure Monitor-Warnungen hinzugefügt.", + "loc.group.displayName.advanced": "Erweitert", + "loc.input.label.connectedServiceNameARM": "Azure-Abonnement", + "loc.input.help.connectedServiceNameARM": "Wählen Sie ein Azure Resource Manager-Abonnement für die Überwachung aus.", + "loc.input.label.ResourceGroupName": "Ressourcengruppe", + "loc.input.help.ResourceGroupName": "Geben Sie den Namen einer Ressourcengruppe für die Überwachung an.", + "loc.input.label.filterType": "Filtertyp", + "loc.input.help.filterType": "Filtern Sie nach einer bestimmten Ressource oder Warnungsregel. Der Standardwert lautet \"Keine\".", + "loc.input.label.resource": "Ressource", + "loc.input.help.resource": "Wählen Sie die Azure-Ressource für die Überwachung aus.", + "loc.input.label.alertRule": "Warnungsregel", + "loc.input.help.alertRule": "Filtern Sie nach einer bestimmten Warnungsregel. Standardmäßig werden alle Regeln ausgewählt.", + "loc.input.label.severity": "Schweregrad", + "loc.input.help.severity": "Filtern Sie nach Schweregrad. Standardmäßig sind alle Schweregrade ausgewählt.", + "loc.input.label.timeRange": "Zeitraum", + "loc.input.help.timeRange": "Filtern Sie nach Zeitbereich. Der Standardwert lautet \"1 Stunde\".", + "loc.input.label.alertState": "Warnungszustand", + "loc.input.help.alertState": "Filtern Sie nach dem Status der Warnungsinstanz. Standardmäßig werden alle Instanzen ausgewählt.", + "loc.input.label.monitorCondition": "Monitorzustand", + "loc.input.help.monitorCondition": "Die Monitorbedingung gibt an, ob die zugrunde liegenden Bedingungen die definierten Schwellenwerte für Warnungsregeln überschritten haben." +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/en-US/resources.resjson new file mode 100644 index 000000000000..0a247c4deac8 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/en-US/resources.resjson @@ -0,0 +1,74 @@ +{ + "loc.friendlyName": "Automated Analysis", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "Do a automated analysis of your appication metrics ", + "loc.instanceNameFormat": "Automated Analysis", + "loc.releaseNotes": "What's new in Version 1.0:
 Added support for query unified Azure monitor alerts.", + "loc.group.displayName.providerInputs": "Provider inputs", + "loc.group.displayName.metricInputs": "Metric inputs", + "loc.group.displayName.orchestrationInputs": "Orchestration inputs", + "loc.group.displayName.preprocessingInputs": "Preprocessing inputs", + "loc.group.displayName.classificationInputs": "Classification inputs", + "loc.group.displayName.scoringInputs": "Scoring inputs", + "loc.input.label.connectedServiceNameARM": "Azure subscription", + "loc.input.help.connectedServiceNameARM": "Select an Azure Resource Manager subscription", + "loc.input.label.ResourceGroupName": "Resource group", + "loc.input.help.ResourceGroupName": "Provide the name of a resource group", + "loc.input.label.containerGroupName": "Container group name", + "loc.input.help.containerGroupName": "Name of the container group to create to run the analysis module. Specified container group will be created if it does not exist ", + "loc.input.label.location": "Container group location", + "loc.input.help.location": "Location of the container group. Container group will be created in specified location if it does not exist.", + "loc.input.label.logLevel": "Log level", + "loc.input.help.logLevel": "Verbosity of the logs to be displayed of the analysis.", + "loc.input.label.provider": "Provider", + "loc.input.help.provider": "Metric provider to query metrics", + "loc.input.label.endpointUrl": "Endpoint url", + "loc.input.help.endpointUrl": "Provide endpoint url to query the metrics", + "loc.input.label.apiKey": "Api key", + "loc.input.label.appKey": "App key", + "loc.input.label.headers": "Headers", + "loc.input.help.headers": "Additional headers in the format headername:headervalue etc. Multiple hearders are separated by newlines", + "loc.input.label.expressionTemplates": "Expression templates", + "loc.input.help.expressionTemplates": "Multiline input where each line contains an expression used to query for metrics on the service of concern. $label}} and $Value can be injected into the templates to identify the pivot label. Eg: sum(rate(requests_total{custom_status=\"good\", $label=~\"$value\" }[1m])) ", + "loc.input.label.templateSubstitutions": "Template substitutions", + "loc.input.help.templateSubstitutions": "Multiline input where each line contains 3 tokens – corresponding to the line of same index in the expressionTemplates input.", + "loc.input.label.areMetricsCritical": "Metric criticality", + "loc.input.help.areMetricsCritical": "Multiline input where each line contains one of the two values – True/False. If true, a non-Pass classification for the metric will result in failure of the entire task. If false, a non-Pass classification would affect the score, but will not result in failure of the task. If input is left unspecified, default is assumed to be false for all metrics", + "loc.input.label.mustHaveData": "Data requirement", + "loc.input.help.mustHaveData": "Multiline input where each line contains one of the two values – True/False. If true, a noData classification for the metric will result in failure of the entire task. If false, a noData classification would affect the score, but will not result in failure of the task. If input is left unspecified, default is assumed to be false for all metrics", + "loc.input.label.analysisType": "Analysis type", + "loc.input.help.analysisType": "If realtime, analysis is performed over a time duration beginning at the moment of execution. If range, analysis is performed over an explicitly specified time interval in the past", + "loc.input.label.windowType": "Window type", + "loc.input.help.windowType": "If growing, metrics during the entire lifetime is considered for evaluation. If sliding, metrics during the most recent interval used for evaluation.", + "loc.input.label.delay": "Delay", + "loc.input.help.delay": "Time (provide unit of time (s, m, h)) to wait before commencing collection and analysis of metrics", + "loc.input.label.lifetime": "Lifetime", + "loc.input.help.lifetime": "Time (provide unit of time (s, m, h))) spanning the entire duration of the canary analysis", + "loc.input.label.analysisBeginTime": "Analysis begin time", + "loc.input.help.analysisBeginTime": "Start time to collect the metrics. Provide timestamp in yyyy-mm-ddThh:mm:ssZ format (UTC time)", + "loc.input.label.analysisEndTime": "Analysis end time", + "loc.input.help.analysisEndTime": "Time to stop the metric collection. Provide timestamp in yyyy-mm-ddThh:mm:ssZ format (UTC time)", + "loc.input.label.interval": "Interval", + "loc.input.help.interval": "single canary analysis task’s lifetime is composed of multiple loops of metrics collection and evaluation – each happening over a time window as specified under the interval input (provide unit of time (s, m, h))", + "loc.input.label.step": "Step", + "loc.input.label.preprocessor": "Preprocessor", + "loc.input.label.nanStrategy": "NaN strategy", + "loc.input.help.nanStrategy": " Multiline input where each line contains one of the two values – remove/replaceWithZeroes. This input specifies how NaN values are to be handled for each metric", + "loc.input.label.classifier": "Classifier", + "loc.input.label.metricGroups": "Metric groups", + "loc.input.help.metricGroups": "Multiline input where each line contains a number corresponding to the line of same index in the expressionTempaltes input. Group numbering starts from 1,2,3… If this input is left unspecified, all metrics are clubbed in a single group (Group 1)", + "loc.input.label.groupWeights": "Group weights", + "loc.input.help.groupWeights": "Multiline input where each line denotes a weight to be used for each unique group specified(1,2,3..) while computing the final score. 0 < groupWeighti <= 1. Sum of all groupWeights should be equal to 1. If this input is left unspecified, all groups are given equal weights", + "loc.input.label.direction": "Direction", + "loc.input.help.direction": "Multiline input where each line contains one of the three values – increase/decrease/either. The metric is failed (non-Pass classification of High or Low) if there is a statistical difference found between the canary and baseline metrics in the direction specified by the user", + "loc.input.label.confidenceLevel": "Confidence level", + "loc.input.help.confidenceLevel": "If unspecified, default value is 0.95", + "loc.input.label.allowedIncrease": "Allowed increase", + "loc.input.label.allowedDecrease": "Allowed decrease", + "loc.input.label.criticalIncrease": "Critical increase", + "loc.input.label.criticalDecrease": "criticalDecrease", + "loc.input.label.marginalThreshold": "Marginal threshold", + "loc.input.help.marginalThreshold": "If the windowScore is below the marginalThreshold specified by the user, the task is failed right away (remaining windows in the lifetime of task need not be evaluated). Else, the procedure of metrics collection, validation, cleaning, classification and scoring are repeated for the next window. Default: 0.5", + "loc.input.label.passThreshold": "Pass threshold", + "loc.input.help.passThreshold": "Once the final window has been analysed and scored, the score is compared with the passThreshold specified by the user. If the score is greater than passThreshold, the task is marked successful. Else, the task is marked as failure. Default: 0.95" +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/es-es/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/es-es/resources.resjson new file mode 100644 index 000000000000..d5065807cb56 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/es-es/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Consultar las alertas de Azure Monitor", + "loc.helpMarkDown": "[Más información](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "Sigue las reglas de Azure Monitor configuradas para las alertas activas.", + "loc.instanceNameFormat": "Consultar las alertas de Azure Monitor", + "loc.releaseNotes": "Novedades de la versión 1.0:
 Se ha agregado compatibilidad con las alertas de Azure Monitor unificadas para las consultas.", + "loc.group.displayName.advanced": "Avanzado", + "loc.input.label.connectedServiceNameARM": "Suscripción de Azure", + "loc.input.help.connectedServiceNameARM": "Seleccione una suscripción de Azure Resource Manager para supervisarla.", + "loc.input.label.ResourceGroupName": "Grupo de recursos", + "loc.input.help.ResourceGroupName": "Proporcione el nombre de un grupo de recursos que se va a supervisar.", + "loc.input.label.filterType": "Tipo de filtro", + "loc.input.help.filterType": "Filtrar por recurso o regla de alerta específicos. El valor predeterminado es Ninguno.", + "loc.input.label.resource": "Recurso", + "loc.input.help.resource": "Seleccione el recurso de Azure que se va a supervisar.", + "loc.input.label.alertRule": "Regla de alertas", + "loc.input.help.alertRule": "Filtrar por regla de alerta específica. El valor predeterminado consiste en seleccionar todo.", + "loc.input.label.severity": "Gravedad", + "loc.input.help.severity": "Filtrar por gravedad. El valor predeterminado consiste en seleccionar todo.", + "loc.input.label.timeRange": "Intervalo de tiempo", + "loc.input.help.timeRange": "Filtrar por intervalo de tiempo. El valor predeterminado es 1 hora.", + "loc.input.label.alertState": "Estado de alerta", + "loc.input.help.alertState": "Filtrar por estado de la instancia de alerta. El valor predeterminado consiste en seleccionar todo.", + "loc.input.label.monitorCondition": "Condición de supervisión", + "loc.input.help.monitorCondition": "La condición de supervisión representa si las condiciones subyacentes han traspasado los umbrales de las reglas de alerta que se han definido." +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/fr-fr/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/fr-fr/resources.resjson new file mode 100644 index 000000000000..ac842043d1d3 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/fr-fr/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Interroger les alertes Azure Monitor", + "loc.helpMarkDown": "[Plus d'informations](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "Examiner les règles Azure Monitor configurées pour les alertes actives", + "loc.instanceNameFormat": "Interroger les alertes Azure Monitor", + "loc.releaseNotes": "Nouveautés de la version 1.0 :
 Ajout de la prise en charge de l'interrogation unifiée des alertes Azure Monitor.", + "loc.group.displayName.advanced": "Avancé", + "loc.input.label.connectedServiceNameARM": "Abonnement Azure", + "loc.input.help.connectedServiceNameARM": "Sélectionnez un abonnement Azure Resource Manager à surveiller.", + "loc.input.label.ResourceGroupName": "Groupe de ressources", + "loc.input.help.ResourceGroupName": "Indiquez le nom d'un groupe de ressources à surveiller.", + "loc.input.label.filterType": "Type de filtre", + "loc.input.help.filterType": "Effectuez un filtrage en fonction d'une règle de ressource ou d'alerte spécifique. La valeur par défaut est Aucun.", + "loc.input.label.resource": "Ressource", + "loc.input.help.resource": "Sélectionnez la ressource Azure à superviser.", + "loc.input.label.alertRule": "Règle d'alerte", + "loc.input.help.alertRule": "Effectuez un filtrage en fonction d'une règle d'alerte spécifique. La valeur par défaut consiste à tout sélectionner.", + "loc.input.label.severity": "Gravité ", + "loc.input.help.severity": "Effectuez un filtrage en fonction de la gravité. La valeur par défaut consiste à tout sélectionner.", + "loc.input.label.timeRange": "Intervalle de temps", + "loc.input.help.timeRange": "Effectuez un filtrage en fonction de l'intervalle de temps. La valeur par défaut est 1 heure.", + "loc.input.label.alertState": "État de l’alerte", + "loc.input.help.alertState": "Effectuez un filtrage en fonction de l'état de l'instance d'alerte. La valeur par défaut consiste à tout sélectionner.", + "loc.input.label.monitorCondition": "Condition de l’analyse", + "loc.input.help.monitorCondition": "La condition de supervision indique si les conditions sous-jacentes ont franchi les seuils de règle d'alerte définis." +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/it-IT/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/it-IT/resources.resjson new file mode 100644 index 000000000000..8a108e30b9fd --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/it-IT/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Esegui query su avvisi di Monitoraggio di Azure", + "loc.helpMarkDown": "[Altre informazioni](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "Consente di osservare le regole di Monitoraggio di Azure configurate per gli avvisi attivi", + "loc.instanceNameFormat": "Esegui query su avvisi di Monitoraggio di Azure", + "loc.releaseNotes": "Novità della versione 1.0:
 È stato aggiunto il supporto per gli avvisi unificati di Monitoraggio di Azure per le query.", + "loc.group.displayName.advanced": "Avanzate", + "loc.input.label.connectedServiceNameARM": "Sottoscrizione di Azure", + "loc.input.help.connectedServiceNameARM": "Consente di selezionare una sottoscrizione di Azure Resource Manager di cui eseguire il monitoraggio.", + "loc.input.label.ResourceGroupName": "Gruppo di risorse", + "loc.input.help.ResourceGroupName": "Consente di specificare il nome di un gruppo di risorse di cui eseguire il monitoraggio.", + "loc.input.label.filterType": "Tipo filtro", + "loc.input.help.filterType": "Filtra in base a una risorsa o a una regola di avviso specifica. Il valore predefinito è Nessuna.", + "loc.input.label.resource": "Risorsa", + "loc.input.help.resource": "Selezionare la risorsa di Azure di cui eseguire il monitoraggio.", + "loc.input.label.alertRule": "Regola di avviso", + "loc.input.help.alertRule": "Filtra in base alla regola di avviso specifica. Il valore predefinito è Seleziona tutto.", + "loc.input.label.severity": "Gravità", + "loc.input.help.severity": "Filtra in base alla gravità. Il valore predefinito è Seleziona tutto.", + "loc.input.label.timeRange": "Intervallo di tempo", + "loc.input.help.timeRange": "Filtra in base all'intervallo di tempo. Il valore predefinito è 1 ora.", + "loc.input.label.alertState": "Stato avviso", + "loc.input.help.alertState": "Filtra in base allo stato dell'istanza dell'avviso. Il valore predefinito è Seleziona tutto.", + "loc.input.label.monitorCondition": "Condizione del monitoraggio", + "loc.input.help.monitorCondition": "La condizione di monitoraggio indica se le condizioni sottostanti hanno superato le soglie definite della regola di avviso." +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ja-jp/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ja-jp/resources.resjson new file mode 100644 index 000000000000..fbb8fa3cabf6 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ja-jp/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Azure Monitor アラートのクエリ", + "loc.helpMarkDown": "[詳細](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "アクティブなアラートに関して構成済みの Azure Monitor ルールを確認します", + "loc.instanceNameFormat": "Azure Monitor アラートのクエリ", + "loc.releaseNotes": "バージョン 1.0 の新機能:
 クエリ統合 Azure モニターの警告のサポートを追加しました。", + "loc.group.displayName.advanced": "詳細設定", + "loc.input.label.connectedServiceNameARM": "Azure サブスクリプション", + "loc.input.help.connectedServiceNameARM": "監視対象の Azure Resource Manager サブスクリプションを選択します。", + "loc.input.label.ResourceGroupName": "リソース グループ", + "loc.input.help.ResourceGroupName": "監視対象のリソース グループの名前を指定します。", + "loc.input.label.filterType": "フィルターの種類", + "loc.input.help.filterType": "特定のリソースまたは警告ルールでフィルター処理します。既定値は [なし] です。", + "loc.input.label.resource": "リソース", + "loc.input.help.resource": "監視する Azure リソースを選択します。", + "loc.input.label.alertRule": "アラート ルール", + "loc.input.help.alertRule": "特定の警告ルールでフィルター処理します。既定値では、すべてを選択します。", + "loc.input.label.severity": "重要度", + "loc.input.help.severity": "重要度でフィルター処理します。既定値ではすべてを選択します。", + "loc.input.label.timeRange": "時間の範囲", + "loc.input.help.timeRange": "時間の範囲でフィルター処理します。既定値は 1 時間です。", + "loc.input.label.alertState": "アラートの状態", + "loc.input.help.alertState": "警告インスタンスの状態でフィルター処理します。既定値では、すべてを選択します。", + "loc.input.label.monitorCondition": "モニターの状態", + "loc.input.help.monitorCondition": "監視条件は、定義済みの警告ルールのしきい値を、基になる条件が超えているかどうかを表します。" +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ko-KR/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ko-KR/resources.resjson new file mode 100644 index 000000000000..c1fd9420cd60 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ko-KR/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Azure Monitor 경고 쿼리", + "loc.helpMarkDown": "[자세한 정보](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "활성 경고에 대해 구성된 Azure Monitor 규칙을 살펴봅니다.", + "loc.instanceNameFormat": "Azure Monitor 경고 쿼리", + "loc.releaseNotes": "버전 1.0의 새로운 기능:
 쿼리 통합 Azure Monitor 경고에 대한 지원이 추가되었습니다.", + "loc.group.displayName.advanced": "고급", + "loc.input.label.connectedServiceNameARM": "Azure 구독", + "loc.input.help.connectedServiceNameARM": "모니터링할 Azure Resource Manager 구독을 선택합니다.", + "loc.input.label.ResourceGroupName": "리소스 그룹", + "loc.input.help.ResourceGroupName": "모니터링할 리소스 그룹의 이름을 제공합니다.", + "loc.input.label.filterType": "필터 형식", + "loc.input.help.filterType": "특정 리소스 또는 경고 규칙으로 필터링합니다. 기본값은 없음입니다.", + "loc.input.label.resource": "리소스", + "loc.input.help.resource": "모니터링할 Azure 리소스를 선택합니다.", + "loc.input.label.alertRule": "경고 규칙", + "loc.input.help.alertRule": "특정 경고 규칙으로 필터링합니다. 기본값은 모두 선택입니다.", + "loc.input.label.severity": "심각도", + "loc.input.help.severity": "심각도로 필터링합니다. 기본값은 모두 선택입니다.", + "loc.input.label.timeRange": "시간 범위", + "loc.input.help.timeRange": "시간 범위로 필터링합니다. 기본값은 1시간입니다.", + "loc.input.label.alertState": "경고 상태", + "loc.input.help.alertState": "경고 인스턴스의 상태로 필터링합니다. 기본값은 모두 선택입니다.", + "loc.input.label.monitorCondition": "모니터 조건", + "loc.input.help.monitorCondition": "모니터 조건은 기본 조건이 정의된 경고 규칙 임계값을 초과했는지 여부를 나타냅니다." +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ru-RU/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ru-RU/resources.resjson new file mode 100644 index 000000000000..e475f75819cc --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/ru-RU/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "Запрос оповещений Azure Monitor", + "loc.helpMarkDown": "[Дополнительные сведения](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "Соблюдать настроенные правила Azure Monitor для активных оповещений", + "loc.instanceNameFormat": "Запрос оповещений Azure Monitor", + "loc.releaseNotes": "Новые возможности версии 1.0:
 Добавлена поддержка предупреждений единого монитора Azure для запросов.", + "loc.group.displayName.advanced": "Дополнительно", + "loc.input.label.connectedServiceNameARM": "Подписка Azure", + "loc.input.help.connectedServiceNameARM": "Выберите отслеживаемую подписку на Azure Resource Manager.", + "loc.input.label.ResourceGroupName": "Группа ресурсов", + "loc.input.help.ResourceGroupName": "Укажите имя отслеживаемой группы ресурсов.", + "loc.input.label.filterType": "Тип фильтра", + "loc.input.help.filterType": "Фильтровать по конкретному ресурсу или правилу генерации оповещений. Значение по умолчанию — \"Нет\".", + "loc.input.label.resource": "Ресурс", + "loc.input.help.resource": "Выберите ресурс Azure для отслеживания.", + "loc.input.label.alertRule": "Правило генерации оповещ.", + "loc.input.help.alertRule": "Фильтровать по конкретному правилу генерации оповещений. Значение по умолчанию — \"выбрать все\".", + "loc.input.label.severity": "Важность", + "loc.input.help.severity": "Фильтровать по серьезности. Значение по умолчанию — \"выбрать все\".", + "loc.input.label.timeRange": "Диапазон времени", + "loc.input.help.timeRange": "Фильтровать по диапазону времени. Значение по умолчанию — 1 час.", + "loc.input.label.alertState": "Состояние оповещения", + "loc.input.help.alertState": "Фильтровать по состоянию экземпляра оповещения. Значение по умолчанию — \"выбрать все\".", + "loc.input.label.monitorCondition": "Состояние монитора", + "loc.input.help.monitorCondition": "Состояние мониторинга определяет, были ли пересечены пороговые значения правил генерации оповещений для базовых условий." +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/zh-CN/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/zh-CN/resources.resjson new file mode 100644 index 000000000000..25966d8d7cdf --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/zh-CN/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "查询 Azure 监视器警报", + "loc.helpMarkDown": "[详细信息](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "观察配置的 Azure Monitor 规则是否出现活动警报", + "loc.instanceNameFormat": "查询 Azure 监视器警报", + "loc.releaseNotes": "版本 1.0 中的新增功能:
 添加了对查询统一的 Azure Monitor 警报的支持。", + "loc.group.displayName.advanced": "高级", + "loc.input.label.connectedServiceNameARM": "Azure 订阅", + "loc.input.help.connectedServiceNameARM": "选择要监视的 Azure 资源管理器订阅。", + "loc.input.label.ResourceGroupName": "资源组", + "loc.input.help.ResourceGroupName": "提供资源组的名称进行监视。", + "loc.input.label.filterType": "筛选类型", + "loc.input.help.filterType": "按特定资源或预警规则进行筛选。默认值为“无”。", + "loc.input.label.resource": "资源", + "loc.input.help.resource": "选择要监视的 Azure 资源。", + "loc.input.label.alertRule": "警报规则", + "loc.input.help.alertRule": "按特定预警规则进行筛选。默认值为全选。", + "loc.input.label.severity": "严重性", + "loc.input.help.severity": "按严重性筛选。默认值为全选。", + "loc.input.label.timeRange": "时间范围", + "loc.input.help.timeRange": "按时间范围筛选。默认值为 1 小时。", + "loc.input.label.alertState": "警报状态", + "loc.input.help.alertState": "按警报实例的状态进行筛选。默认值为全选。", + "loc.input.label.monitorCondition": "监视器条件", + "loc.input.help.monitorCondition": "监视器条件表示基础条件是否已超过定义的预警规则阈值。" +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/zh-TW/resources.resjson b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/zh-TW/resources.resjson new file mode 100644 index 000000000000..1e13ba63437e --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/Strings/resources.resjson/zh-TW/resources.resjson @@ -0,0 +1,26 @@ +{ + "loc.friendlyName": "查詢 Azure 監視器警示", + "loc.helpMarkDown": "[詳細資訊](https://go.microsoft.com/fwlink/?linkid=870240)", + "loc.description": "遵守針對作用中警示設定的 Azure 監視器規則", + "loc.instanceNameFormat": "查詢 Azure 監視器警示", + "loc.releaseNotes": "1.0 版中的新功能:
 新增了查詢統一 Azure 監視警示的支援。", + "loc.group.displayName.advanced": "進階", + "loc.input.label.connectedServiceNameARM": "Azure 訂用帳戶", + "loc.input.help.connectedServiceNameARM": "選取要監視的 Azure Resource Manager 訂用帳戶。", + "loc.input.label.ResourceGroupName": "資源群組", + "loc.input.help.ResourceGroupName": "提供要監視的資源群組名稱。", + "loc.input.label.filterType": "篩選類型", + "loc.input.help.filterType": "依據特定的資源或警示規則篩選。預設值是無。", + "loc.input.label.resource": "資源", + "loc.input.help.resource": "選取要監視的 Azure 資源。", + "loc.input.label.alertRule": "警示規則", + "loc.input.help.alertRule": "依據特定的警示規則篩選。預設值是全選。", + "loc.input.label.severity": "嚴重性", + "loc.input.help.severity": "依據嚴重性篩選。預設值是全選。", + "loc.input.label.timeRange": "時間範圍", + "loc.input.help.timeRange": "依據時間範圍篩選。預設值是 1 小時。", + "loc.input.label.alertState": "警示狀態", + "loc.input.help.alertState": "依據警示執行個體的狀態篩選。預設值是全選。", + "loc.input.label.monitorCondition": "監視器條件", + "loc.input.help.monitorCondition": "監視條件代表基礎條件是否超過定義的警示規則閾值。" +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/icon.png b/Tasks/AutomatedAnalysisV0/icon.png new file mode 100644 index 000000000000..b8beb90b81e1 Binary files /dev/null and b/Tasks/AutomatedAnalysisV0/icon.png differ diff --git a/Tasks/AutomatedAnalysisV0/icon.svg b/Tasks/AutomatedAnalysisV0/icon.svg new file mode 100644 index 000000000000..fba7486ffc4d --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/Tasks/AutomatedAnalysisV0/task.json b/Tasks/AutomatedAnalysisV0/task.json new file mode 100644 index 000000000000..869b1f0759ba --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/task.json @@ -0,0 +1,468 @@ +{ + "id": "6B519857-1A20-4248-BAE8-AAD039015AFB", + "name": "AutomatedAnalysis", + "friendlyName": "Automated Analysis", + "description": "Do a automated analysis of your appication metrics ", + "author": "Microsoft Corporation", + "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/azure-monitor", + "helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?linkid=870240)", + "category": "Utility", + "releaseNotes": "What's new in Version 1.0:
 Added support for query unified Azure monitor alerts.", + "visibility": [ + "Build", + "Release" + ], + "runsOn": [ + "Server" + ], + "version": { + "Major": 1, + "Minor": 163, + "Patch": 0 + }, + "preview": true, + "instanceNameFormat": "Automated Analysis", + "groups": [ + { + "name": "providerInputs", + "displayName": "Provider inputs", + "isExpanded": false + }, + { + "name": "metricInputs", + "displayName": "Metric inputs", + "isExpanded": false + }, + { + "name": "orchestrationInputs", + "displayName": "Orchestration inputs", + "isExpanded": false + }, + { + "name": "preprocessingInputs", + "displayName": "Preprocessing inputs", + "isExpanded": false + }, + { + "name": "classificationInputs", + "displayName": "Classification inputs", + "isExpanded": false + }, + { + "name": "scoringInputs", + "displayName": "Scoring inputs", + "isExpanded": false + } + ], + "inputs": [ + { + "name": "connectedServiceNameARM", + "type": "connectedService:AzureRM", + "label": "Azure subscription", + "defaultValue": "", + "required": "true", + "helpMarkDown": "Select an Azure Resource Manager subscription" + }, + { + "name": "ResourceGroupName", + "type": "pickList", + "label": "Resource group", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "Provide the name of a resource group" + }, + { + "name": "containerGroupName", + "type": "string", + "label": "Container group name", + "required": true, + "helpMarkDown": "Name of the container group to create to run the analysis module. Specified container group will be created if it does not exist " + }, + { + "name": "location", + "type": "pickList", + "label": "Container group location", + "required": true, + "helpMarkDown": "Location of the container group. Container group will be created in specified location if it does not exist." + }, + { + "name": "logLevel", + "type": "pickList", + "label": "Log level", + "defaultValue": "Info", + "required": true, + "options": { + "Info": "Info", + "Debug": "Debug", + "Warning": "Warning", + "Error": "Error", + "Critical": "Critical" + }, + "helpMarkDown": "Verbosity of the logs to be displayed of the analysis." + }, + { + "name": "provider", + "type": "pickList", + "label": "Provider", + "defaultValue": "Prometheus", + "required": true, + "options": { + "Prometheus": "Prometheus", + "Datadog": "Datadog" + }, + "groupName": "providerInputs", + "helpMarkDown": "Metric provider to query metrics" + }, + { + "name": "endpointUrl", + "type": "string", + "label": "Endpoint url", + "required": true, + "groupName": "providerInputs", + "helpMarkDown": "Provide endpoint url to query the metrics" + }, + { + "name": "apiKey", + "type": "string", + "label": "Api key", + "required": true, + "groupName": "providerInputs", + "visibleRule": "provider == Datadog", + "helpMarkDown": "" + }, + { + "name": "appKey", + "type": "string", + "label": "App key", + "required": true, + "groupName": "providerInputs", + "visibleRule": "provider == Datadog", + "helpMarkDown": "" + }, + { + "name": "headers", + "type": "multiLine", + "label": "Headers", + "required": "false", + "properties": { + "resizable": "true", + "rows": "3" + }, + "groupName": "providerInputs", + "helpMarkDown": "Additional headers in the format headername:headervalue etc. Multiple hearders are separated by newlines" + }, + { + "name": "expressionTemplates", + "type": "multiLine", + "label": "Expression templates", + "required": true, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "Multiline input where each line contains an expression used to query for metrics on the service of concern. $label}} and $Value can be injected into the templates to identify the pivot label. Eg: sum(rate(requests_total{custom_status=\"good\", $label=~\"$value\" }[1m])) " + }, + { + "name": "templateSubstitutions", + "type": "multiLine", + "label": "Template substitutions", + "required": true, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "Multiline input where each line contains 3 tokens – corresponding to the line of same index in the expressionTemplates input." + }, + { + "name": "areMetricsCritical", + "type": "multiLine", + "label": "Metric criticality", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "Multiline input where each line contains one of the two values – True/False. If true, a non-Pass classification for the metric will result in failure of the entire task. If false, a non-Pass classification would affect the score, but will not result in failure of the task. If input is left unspecified, default is assumed to be false for all metrics" + }, + { + "name": "mustHaveData", + "type": "multiLine", + "label": "Data requirement", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "Multiline input where each line contains one of the two values – True/False. If true, a noData classification for the metric will result in failure of the entire task. If false, a noData classification would affect the score, but will not result in failure of the task. If input is left unspecified, default is assumed to be false for all metrics" + }, + { + "name": "analysisType", + "type": "pickList", + "label": "Analysis type", + "defaultValue": "realtime", + "required": true, + "options": { + "realtime": "realtime", + "range": "range" + }, + "groupName": "orchestrationInputs", + "helpMarkDown": "If realtime, analysis is performed over a time duration beginning at the moment of execution. If range, analysis is performed over an explicitly specified time interval in the past" + }, + { + "name": "windowType", + "type": "pickList", + "label": "Window type", + "defaultValue": "sliding", + "required": true, + "options": { + "sliding": "sliding", + "growing": "growing" + }, + "groupName": "orchestrationInputs", + "helpMarkDown": "If growing, metrics during the entire lifetime is considered for evaluation. If sliding, metrics during the most recent interval used for evaluation." + }, + { + "name": "delay", + "type": "string", + "label": "Delay", + "defaultValue":"0s", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == realtime", + "helpMarkDown": "Time (provide unit of time (s, m, h)) to wait before commencing collection and analysis of metrics" + }, + { + "name": "lifetime", + "type": "string", + "label": "Lifetime", + "defaultValue": "10m", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == realtime", + "helpMarkDown": "Time (provide unit of time (s, m, h))) spanning the entire duration of the canary analysis" + }, + { + "name": "analysisBeginTime", + "type": "string", + "label": "Analysis begin time", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == range", + "helpMarkDown": "Start time to collect the metrics. Provide timestamp in yyyy-mm-ddThh:mm:ssZ format (UTC time)" + }, + { + "name": "analysisEndTime", + "type": "string", + "label": "Analysis end time", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == range", + "helpMarkDown": "Time to stop the metric collection. Provide timestamp in yyyy-mm-ddThh:mm:ssZ format (UTC time)" + }, + { + "name": "interval", + "type": "string", + "label": "Interval", + "defaultValue": "2m", + "required": false, + "groupName": "orchestrationInputs", + "helpMarkDown": "single canary analysis task’s lifetime is composed of multiple loops of metrics collection and evaluation – each happening over a time window as specified under the interval input (provide unit of time (s, m, h))" + }, + { + "name": "step", + "type": "string", + "label": "Step", + "defaultValue": "1s", + "required": false, + "groupName": "orchestrationInputs", + "helpMarkDown": "" + }, + { + "name": "preprocessor", + "type": "pickList", + "label": "Preprocessor", + "defaultValue": "ksigma", + "required": true, + "options": { + "ksigma": "ksigma", + "iqr": "iqr" + }, + "groupName": "preprocessingInputs", + "helpMarkDown": "" + }, + { + "name": "nanStrategy", + "type": "multiLine", + "label": "NaN strategy", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "preprocessingInputs", + "helpMarkDown": " Multiline input where each line contains one of the two values – remove/replaceWithZeroes. This input specifies how NaN values are to be handled for each metric" + }, + { + "name": "classifier", + "type": "pickList", + "label": "Classifier", + "defaultValue": "mannWhitney", + "required": true, + "options": { + "mannWhitney": "mannWhitney" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "metricGroups", + "type": "multiLine", + "label": "Metric groups", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "Multiline input where each line contains a number corresponding to the line of same index in the expressionTempaltes input. Group numbering starts from 1,2,3… If this input is left unspecified, all metrics are clubbed in a single group (Group 1)" + }, + { + "name": "groupWeights", + "type": "multiLine", + "label": "Group weights", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "Multiline input where each line denotes a weight to be used for each unique group specified(1,2,3..) while computing the final score. 0 < groupWeighti <= 1. Sum of all groupWeights should be equal to 1. If this input is left unspecified, all groups are given equal weights" + }, + { + "name": "direction", + "type": "multiLine", + "label": "Direction", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "Multiline input where each line contains one of the three values – increase/decrease/either. The metric is failed (non-Pass classification of High or Low) if there is a statistical difference found between the canary and baseline metrics in the direction specified by the user" + }, + { + "name": "confidenceLevel", + "type": "string", + "label": "Confidence level", + "required": false, + "groupName": "classificationInputs", + "helpMarkDown": "If unspecified, default value is 0.95" + }, + { + "name": "allowedIncrease", + "type": "multiLine", + "label": "Allowed increase", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "allowedDecrease", + "type": "multiLine", + "label": "Allowed decrease", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "criticalIncrease", + "type": "multiLine", + "label": "Critical increase", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "criticalDecrease", + "type": "multiLine", + "label": "criticalDecrease", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "marginalThreshold", + "type": "string", + "label": "Marginal threshold", + "required": false, + "groupName": "scoringInputs", + "helpMarkDown": "If the windowScore is below the marginalThreshold specified by the user, the task is failed right away (remaining windows in the lifetime of task need not be evaluated). Else, the procedure of metrics collection, validation, cleaning, classification and scoring are repeated for the next window. Default: 0.5" + }, + { + "name": "passThreshold", + "type": "string", + "label": "Pass threshold", + "required": false, + "groupName": "scoringInputs", + "helpMarkDown": "Once the final window has been analysed and scored, the score is compared with the passThreshold specified by the user. If the score is greater than passThreshold, the task is marked successful. Else, the task is marked as failure. Default: 0.95" + } + ], + "dataSourceBindings": [ + { + "target": "ResourceGroupName", + "endpointId": "$(connectedServiceNameARM)", + "dataSourceName": "AzureResourceGroups" + }, + { + "target": "location", + "endpointId": "$(connectedServiceNameARM)", + "dataSourceName": "AzureLocations2", + "resultTemplate": "{ \"Value\" : \"{{{name}}}\", \"DisplayValue\" : \"{{{name}}}\" }" + } + ], + "execution": { + "HttpRequestChain": { + "Execute": [ + { + "RequestInputs": { + "EndpointId": "$(connectedServiceNameARM)", + "EndpointUrl": "$(endpoint.url)subscriptions/{{subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ContainerInstance/containerGroups/$(containerGroupName)?api-version=2018-10-01", + "Method": "PUT", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "Body": "{\"id\":\"/subscriptions/{{subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ContainerInstance/containerGroups/$(containerGroupName)\",\"location\":\"$(location)\",\"name\":\"$(containerGroupName)\",\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{\"osType\":\"Linux\", \"restartPolicy\": \"Never\", \"volumes\":[{\"name\":\"varlog\", \"emptyDir\": {}}], \"ipAddress\":{\"type\":\"Public\", \"ports\":[{\"port\": 443, \"protocol\": \"TCP\"}]}], \"containers\":[{\"name\":\"aa-app\",\"properties\":{\"command\":[],\"environmentVariables\": [{ \"name\": \"METRICS_PROVIDER\", \"value\": \"{{ provider }}\" }, { \"name\": \"ENDPOINT\", \"secureValue\": \"{{ endpointUrl }}\" }, { \"name\": \"HEADERS\", \"secureValue\": \"{{ headers }}\" }, { \"name\": \"API_KEY\", \"secureValue\": \"{{ apiKey }}\" }, { \"name\": \"APP_KEY\", \"secureValue\": \"{{ appKey }}\" }, { \"name\": \"EXPRESSION_TEMPLATES\", \"secureValue\": \"{{{ #stringReplace '\"' '\\\"' expressionTemplates }}}\" }, { \"name\": \"TEMPLATE_SUBSTITUTIONS\", \"secureValue\": \"{{{ #stringReplace '\"' '\\\"' templateSubstitutions }}}\" }, { \"name\": \"ARE_METRICS_CRITICAL\", \"value\": \"{{ areMetricsCritical }}\" }, { \"name\": \"MUST_HAVE_DATA\", \"value\": \"{{ mustHaveData }}\" }, { \"name\": \"ANALYSIS_TYPE\", \"value\": \"{{ analysisType }}\" }, { \"name\": \"WINDOW_TYPE\", \"value\": \"{{ windowType }}\" }, { \"name\": \"DELAY\", \"value\": \"{{ delay }}\" }, { \"name\": \"LIFETIME\", \"value\": \"{{ lifetime }}\" }, { \"name\": \"ANALYSIS_BEGIN_TIME\", \"value\": \"{{ analysisBeginTime }}\" }, { \"name\": \"ANALYSIS_END_TIME\", \"value\": \"{{ analysisEndTime }}\" }, { \"name\": \"INTERVAL\", \"value\": \"{{ interval }}\" }, { \"name\": \"PREPROCESSOR\", \"value\": \"{{ preprocessor }}\" }, {\"name\": \"NAN_STRATEGY\", \"value\": \"{{ nanStrategy }}\" }, { \"name\": \"CLASSIFIER\", \"value\": \"{{ classifier }}\" }, { \"name\": \"METRIC_GROUPS\", \"value\": \"{{ metricGroups }}\" }, { \"name\": \"GROUP_WEIGHTS\", \"value\": \"{{ groupWeights }}\" }, { \"name\": \"DIRECTION\", \"value\": \"{{ direction }}\" }, { \"name\": \"CONFIDENCE_LEVEL\", \"value\": \"{{ confidenceLevel }}\" }, { \"name\": \"ALLOWED_INCREASE\", \"value\": \"{{ allowedIncrease }}\" }, { \"name\": \"ALLOWED_DECREASE\", \"value\": \"{{ allowedDecrease }}\" }, { \"name\": \"CRITICAL_INCREASE\", \"value\": \"{{ criticalIncrease }}\" }, { \"name\": \"CRITICAL_DECREASE\", \"value\": \"{{ criticalDecrease }}\" }, { \"name\": \"MARGINAL_THRESHOLD\", \"value\": \"{{ marginalThreshold }}\" }, { \"name\": \"PASS_THRESHOLD\", \"value\": \"{{ passThreshold }}\" }, {\"name\":\"LOG_LEVEL\", \"value\":\"$(logLevel)\"}, {\"name\":\"LOG_OUTPUT\", \"value\":\"FILE\"}], \"image\":\"ansheno/aa:v1\",\"ports\":[{\"port\": 8080}], \"volumeMounts\":[{\"name\":\"varlog\", \"mountPath\":\"/usr/src/aa/logs\", \"readOnly\": \"false\"}], \"resources\": {\"requests\": {\"cpu\": 1,\"memoryInGB\": 0.5}}}}, {\"name\":\"aa-sidecar\",\"properties\":{\"volumeMounts\":[{\"name\":\"varlog\", \"mountPath\":\"/usr/src/aa/logs\", \"readOnly\": \"false\"}], \"resources\": {\"requests\": {\"cpu\": 1,\"memoryInGB\": 0.5}}, \"command\":[], \"environmentVariables\":[{ \"name\":\"LOGS_PROVIDER\", \"value\":\"FILE\"}, {\"name\":\"LOG_FILE_PATH\", \"value\":\"/usr/src/aa/logs/out.log\"}, {\"name\":\"TASK_PROPERTIES\", \"value\":\"{\\\"Content-Type\\\":\\\"application/json\\\", \\\"PlanUrl\\\": \\\"$(system.CollectionUri)\\\", \\\"ProjectId\\\": \\\"$(system.TeamProjectId)\\\", \\\"HubName\\\": \\\"release\\\", \\\"PlanId\\\": \\\"$(system.PlanId)\\\", \\\"JobId\\\": \\\"$(system.JobId)\\\", \\\"TimelineId\\\": \\\"$(system.TimelineId)\\\", \\\"TaskInstanceId\\\": \\\"$(system.TaskInstanceId)\\\", \\\"TaskInstanceName\\\": \\\"$(system.TaskInstanceName)\\\", \\\"AuthToken\\\": \\\"$(system.AccessToken)\\\"}\"}], \"image\":\"ansheno/azdevlogger:n5\", \"ports\":[{\"port\": 443}]}}]},\"type\":\"Microsoft.ContainerInstance/containerGroups\"}", + "WaitForCompletion" : "true" + } + } + ], + "Cancel": { + "EndpointId": "$(connectedServiceNameARM)", + "EndpointUrl": "$(endpoint.url)subscriptions/{{subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ContainerInstance/containerGroups/$(containerGroupName)?api-version=2018-10-01", + "Method": "DELETE", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "Body": "" + } + } + } +} \ No newline at end of file diff --git a/Tasks/AutomatedAnalysisV0/task.loc.json b/Tasks/AutomatedAnalysisV0/task.loc.json new file mode 100644 index 000000000000..c431c2e9c474 --- /dev/null +++ b/Tasks/AutomatedAnalysisV0/task.loc.json @@ -0,0 +1,468 @@ +{ + "id": "6B519857-1A20-4248-BAE8-AAD039015AFB", + "name": "AutomatedAnalysis", + "friendlyName": "ms-resource:loc.friendlyName", + "description": "ms-resource:loc.description", + "author": "Microsoft Corporation", + "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/azure-monitor", + "helpMarkDown": "ms-resource:loc.helpMarkDown", + "category": "Utility", + "releaseNotes": "ms-resource:loc.releaseNotes", + "visibility": [ + "Build", + "Release" + ], + "runsOn": [ + "Server" + ], + "version": { + "Major": 1, + "Minor": 163, + "Patch": 0 + }, + "preview": true, + "instanceNameFormat": "ms-resource:loc.instanceNameFormat", + "groups": [ + { + "name": "providerInputs", + "displayName": "ms-resource:loc.group.displayName.providerInputs", + "isExpanded": false + }, + { + "name": "metricInputs", + "displayName": "ms-resource:loc.group.displayName.metricInputs", + "isExpanded": false + }, + { + "name": "orchestrationInputs", + "displayName": "ms-resource:loc.group.displayName.orchestrationInputs", + "isExpanded": false + }, + { + "name": "preprocessingInputs", + "displayName": "ms-resource:loc.group.displayName.preprocessingInputs", + "isExpanded": false + }, + { + "name": "classificationInputs", + "displayName": "ms-resource:loc.group.displayName.classificationInputs", + "isExpanded": false + }, + { + "name": "scoringInputs", + "displayName": "ms-resource:loc.group.displayName.scoringInputs", + "isExpanded": false + } + ], + "inputs": [ + { + "name": "connectedServiceNameARM", + "type": "connectedService:AzureRM", + "label": "ms-resource:loc.input.label.connectedServiceNameARM", + "defaultValue": "", + "required": "true", + "helpMarkDown": "ms-resource:loc.input.help.connectedServiceNameARM" + }, + { + "name": "ResourceGroupName", + "type": "pickList", + "label": "ms-resource:loc.input.label.ResourceGroupName", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "ms-resource:loc.input.help.ResourceGroupName" + }, + { + "name": "containerGroupName", + "type": "string", + "label": "ms-resource:loc.input.label.containerGroupName", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.containerGroupName" + }, + { + "name": "location", + "type": "pickList", + "label": "ms-resource:loc.input.label.location", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.location" + }, + { + "name": "logLevel", + "type": "pickList", + "label": "ms-resource:loc.input.label.logLevel", + "defaultValue": "Info", + "required": true, + "options": { + "Info": "Info", + "Debug": "Debug", + "Warning": "Warning", + "Error": "Error", + "Critical": "Critical" + }, + "helpMarkDown": "ms-resource:loc.input.help.logLevel" + }, + { + "name": "provider", + "type": "pickList", + "label": "ms-resource:loc.input.label.provider", + "defaultValue": "Prometheus", + "required": true, + "options": { + "Prometheus": "Prometheus", + "Datadog": "Datadog" + }, + "groupName": "providerInputs", + "helpMarkDown": "ms-resource:loc.input.help.provider" + }, + { + "name": "endpointUrl", + "type": "string", + "label": "ms-resource:loc.input.label.endpointUrl", + "required": true, + "groupName": "providerInputs", + "helpMarkDown": "ms-resource:loc.input.help.endpointUrl" + }, + { + "name": "apiKey", + "type": "string", + "label": "ms-resource:loc.input.label.apiKey", + "required": true, + "groupName": "providerInputs", + "visibleRule": "provider == Datadog", + "helpMarkDown": "" + }, + { + "name": "appKey", + "type": "string", + "label": "ms-resource:loc.input.label.appKey", + "required": true, + "groupName": "providerInputs", + "visibleRule": "provider == Datadog", + "helpMarkDown": "" + }, + { + "name": "headers", + "type": "multiLine", + "label": "ms-resource:loc.input.label.headers", + "required": "false", + "properties": { + "resizable": "true", + "rows": "3" + }, + "groupName": "providerInputs", + "helpMarkDown": "ms-resource:loc.input.help.headers" + }, + { + "name": "expressionTemplates", + "type": "multiLine", + "label": "ms-resource:loc.input.label.expressionTemplates", + "required": true, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "ms-resource:loc.input.help.expressionTemplates" + }, + { + "name": "templateSubstitutions", + "type": "multiLine", + "label": "ms-resource:loc.input.label.templateSubstitutions", + "required": true, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "ms-resource:loc.input.help.templateSubstitutions" + }, + { + "name": "areMetricsCritical", + "type": "multiLine", + "label": "ms-resource:loc.input.label.areMetricsCritical", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "ms-resource:loc.input.help.areMetricsCritical" + }, + { + "name": "mustHaveData", + "type": "multiLine", + "label": "ms-resource:loc.input.label.mustHaveData", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "metricInputs", + "helpMarkDown": "ms-resource:loc.input.help.mustHaveData" + }, + { + "name": "analysisType", + "type": "pickList", + "label": "ms-resource:loc.input.label.analysisType", + "defaultValue": "realtime", + "required": true, + "options": { + "realtime": "realtime", + "range": "range" + }, + "groupName": "orchestrationInputs", + "helpMarkDown": "ms-resource:loc.input.help.analysisType" + }, + { + "name": "windowType", + "type": "pickList", + "label": "ms-resource:loc.input.label.windowType", + "defaultValue": "sliding", + "required": true, + "options": { + "sliding": "sliding", + "growing": "growing" + }, + "groupName": "orchestrationInputs", + "helpMarkDown": "ms-resource:loc.input.help.windowType" + }, + { + "name": "delay", + "type": "string", + "label": "ms-resource:loc.input.label.delay", + "defaultValue": "0s", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == realtime", + "helpMarkDown": "ms-resource:loc.input.help.delay" + }, + { + "name": "lifetime", + "type": "string", + "label": "ms-resource:loc.input.label.lifetime", + "defaultValue": "10m", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == realtime", + "helpMarkDown": "ms-resource:loc.input.help.lifetime" + }, + { + "name": "analysisBeginTime", + "type": "string", + "label": "ms-resource:loc.input.label.analysisBeginTime", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == range", + "helpMarkDown": "ms-resource:loc.input.help.analysisBeginTime" + }, + { + "name": "analysisEndTime", + "type": "string", + "label": "ms-resource:loc.input.label.analysisEndTime", + "required": false, + "groupName": "orchestrationInputs", + "visibleRule": "analysisType == range", + "helpMarkDown": "ms-resource:loc.input.help.analysisEndTime" + }, + { + "name": "interval", + "type": "string", + "label": "ms-resource:loc.input.label.interval", + "defaultValue": "2m", + "required": false, + "groupName": "orchestrationInputs", + "helpMarkDown": "ms-resource:loc.input.help.interval" + }, + { + "name": "step", + "type": "string", + "label": "ms-resource:loc.input.label.step", + "defaultValue": "1s", + "required": false, + "groupName": "orchestrationInputs", + "helpMarkDown": "" + }, + { + "name": "preprocessor", + "type": "pickList", + "label": "ms-resource:loc.input.label.preprocessor", + "defaultValue": "ksigma", + "required": true, + "options": { + "ksigma": "ksigma", + "iqr": "iqr" + }, + "groupName": "preprocessingInputs", + "helpMarkDown": "" + }, + { + "name": "nanStrategy", + "type": "multiLine", + "label": "ms-resource:loc.input.label.nanStrategy", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "preprocessingInputs", + "helpMarkDown": "ms-resource:loc.input.help.nanStrategy" + }, + { + "name": "classifier", + "type": "pickList", + "label": "ms-resource:loc.input.label.classifier", + "defaultValue": "mannWhitney", + "required": true, + "options": { + "mannWhitney": "mannWhitney" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "metricGroups", + "type": "multiLine", + "label": "ms-resource:loc.input.label.metricGroups", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "ms-resource:loc.input.help.metricGroups" + }, + { + "name": "groupWeights", + "type": "multiLine", + "label": "ms-resource:loc.input.label.groupWeights", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "ms-resource:loc.input.help.groupWeights" + }, + { + "name": "direction", + "type": "multiLine", + "label": "ms-resource:loc.input.label.direction", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "ms-resource:loc.input.help.direction" + }, + { + "name": "confidenceLevel", + "type": "string", + "label": "ms-resource:loc.input.label.confidenceLevel", + "required": false, + "groupName": "classificationInputs", + "helpMarkDown": "ms-resource:loc.input.help.confidenceLevel" + }, + { + "name": "allowedIncrease", + "type": "multiLine", + "label": "ms-resource:loc.input.label.allowedIncrease", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "allowedDecrease", + "type": "multiLine", + "label": "ms-resource:loc.input.label.allowedDecrease", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "criticalIncrease", + "type": "multiLine", + "label": "ms-resource:loc.input.label.criticalIncrease", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "criticalDecrease", + "type": "multiLine", + "label": "ms-resource:loc.input.label.criticalDecrease", + "required": false, + "properties": { + "resizable": "true", + "rows": "4" + }, + "groupName": "classificationInputs", + "helpMarkDown": "" + }, + { + "name": "marginalThreshold", + "type": "string", + "label": "ms-resource:loc.input.label.marginalThreshold", + "required": false, + "groupName": "scoringInputs", + "helpMarkDown": "ms-resource:loc.input.help.marginalThreshold" + }, + { + "name": "passThreshold", + "type": "string", + "label": "ms-resource:loc.input.label.passThreshold", + "required": false, + "groupName": "scoringInputs", + "helpMarkDown": "ms-resource:loc.input.help.passThreshold" + } + ], + "dataSourceBindings": [ + { + "target": "ResourceGroupName", + "endpointId": "$(connectedServiceNameARM)", + "dataSourceName": "AzureResourceGroups" + }, + { + "target": "location", + "endpointId": "$(connectedServiceNameARM)", + "dataSourceName": "AzureLocations2", + "resultTemplate": "{ \"Value\" : \"{{{name}}}\", \"DisplayValue\" : \"{{{name}}}\" }" + } + ], + "execution": { + "HttpRequestChain": { + "Execute": [ + { + "RequestInputs": { + "EndpointId": "$(connectedServiceNameARM)", + "EndpointUrl": "$(endpoint.url)subscriptions/{{subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ContainerInstance/containerGroups/$(containerGroupName)?api-version=2018-10-01", + "Method": "PUT", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "Body": "{\"id\":\"/subscriptions/{{subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ContainerInstance/containerGroups/$(containerGroupName)\",\"location\":\"$(location)\",\"name\":\"$(containerGroupName)\",\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{\"osType\":\"Linux\", \"restartPolicy\": \"Never\", \"volumes\":[{\"name\":\"varlog\", \"emptyDir\": {}}], \"ipAddress\":{\"type\":\"Public\", \"ports\":[{\"port\": 443, \"protocol\": \"TCP\"}]}], \"containers\":[{\"name\":\"aa-app\",\"properties\":{\"command\":[],\"environmentVariables\": [{ \"name\": \"METRICS_PROVIDER\", \"value\": \"{{ provider }}\" }, { \"name\": \"ENDPOINT\", \"secureValue\": \"{{ endpointUrl }}\" }, { \"name\": \"HEADERS\", \"secureValue\": \"{{ headers }}\" }, { \"name\": \"API_KEY\", \"secureValue\": \"{{ apiKey }}\" }, { \"name\": \"APP_KEY\", \"secureValue\": \"{{ appKey }}\" }, { \"name\": \"EXPRESSION_TEMPLATES\", \"secureValue\": \"{{{ #stringReplace '\"' '\\\"' expressionTemplates }}}\" }, { \"name\": \"TEMPLATE_SUBSTITUTIONS\", \"secureValue\": \"{{{ #stringReplace '\"' '\\\"' templateSubstitutions }}}\" }, { \"name\": \"ARE_METRICS_CRITICAL\", \"value\": \"{{ areMetricsCritical }}\" }, { \"name\": \"MUST_HAVE_DATA\", \"value\": \"{{ mustHaveData }}\" }, { \"name\": \"ANALYSIS_TYPE\", \"value\": \"{{ analysisType }}\" }, { \"name\": \"WINDOW_TYPE\", \"value\": \"{{ windowType }}\" }, { \"name\": \"DELAY\", \"value\": \"{{ delay }}\" }, { \"name\": \"LIFETIME\", \"value\": \"{{ lifetime }}\" }, { \"name\": \"ANALYSIS_BEGIN_TIME\", \"value\": \"{{ analysisBeginTime }}\" }, { \"name\": \"ANALYSIS_END_TIME\", \"value\": \"{{ analysisEndTime }}\" }, { \"name\": \"INTERVAL\", \"value\": \"{{ interval }}\" }, { \"name\": \"PREPROCESSOR\", \"value\": \"{{ preprocessor }}\" }, {\"name\": \"NAN_STRATEGY\", \"value\": \"{{ nanStrategy }}\" }, { \"name\": \"CLASSIFIER\", \"value\": \"{{ classifier }}\" }, { \"name\": \"METRIC_GROUPS\", \"value\": \"{{ metricGroups }}\" }, { \"name\": \"GROUP_WEIGHTS\", \"value\": \"{{ groupWeights }}\" }, { \"name\": \"DIRECTION\", \"value\": \"{{ direction }}\" }, { \"name\": \"CONFIDENCE_LEVEL\", \"value\": \"{{ confidenceLevel }}\" }, { \"name\": \"ALLOWED_INCREASE\", \"value\": \"{{ allowedIncrease }}\" }, { \"name\": \"ALLOWED_DECREASE\", \"value\": \"{{ allowedDecrease }}\" }, { \"name\": \"CRITICAL_INCREASE\", \"value\": \"{{ criticalIncrease }}\" }, { \"name\": \"CRITICAL_DECREASE\", \"value\": \"{{ criticalDecrease }}\" }, { \"name\": \"MARGINAL_THRESHOLD\", \"value\": \"{{ marginalThreshold }}\" }, { \"name\": \"PASS_THRESHOLD\", \"value\": \"{{ passThreshold }}\" }, {\"name\":\"LOG_LEVEL\", \"value\":\"$(logLevel)\"}, {\"name\":\"LOG_OUTPUT\", \"value\":\"FILE\"}], \"image\":\"ansheno/aa:v1\",\"ports\":[{\"port\": 8080}], \"volumeMounts\":[{\"name\":\"varlog\", \"mountPath\":\"/usr/src/aa/logs\", \"readOnly\": \"false\"}], \"resources\": {\"requests\": {\"cpu\": 1,\"memoryInGB\": 0.5}}}}, {\"name\":\"aa-sidecar\",\"properties\":{\"volumeMounts\":[{\"name\":\"varlog\", \"mountPath\":\"/usr/src/aa/logs\", \"readOnly\": \"false\"}], \"resources\": {\"requests\": {\"cpu\": 1,\"memoryInGB\": 0.5}}, \"command\":[], \"environmentVariables\":[{ \"name\":\"LOGS_PROVIDER\", \"value\":\"FILE\"}, {\"name\":\"LOG_FILE_PATH\", \"value\":\"/usr/src/aa/logs/out.log\"}, {\"name\":\"TASK_PROPERTIES\", \"value\":\"{\\\"Content-Type\\\":\\\"application/json\\\", \\\"PlanUrl\\\": \\\"$(system.CollectionUri)\\\", \\\"ProjectId\\\": \\\"$(system.TeamProjectId)\\\", \\\"HubName\\\": \\\"release\\\", \\\"PlanId\\\": \\\"$(system.PlanId)\\\", \\\"JobId\\\": \\\"$(system.JobId)\\\", \\\"TimelineId\\\": \\\"$(system.TimelineId)\\\", \\\"TaskInstanceId\\\": \\\"$(system.TaskInstanceId)\\\", \\\"TaskInstanceName\\\": \\\"$(system.TaskInstanceName)\\\", \\\"AuthToken\\\": \\\"$(system.AccessToken)\\\"}\"}], \"image\":\"ansheno/azdevlogger:n5\", \"ports\":[{\"port\": 443}]}}]},\"type\":\"Microsoft.ContainerInstance/containerGroups\"}", + "WaitForCompletion": "true" + } + } + ], + "Cancel": { + "EndpointId": "$(connectedServiceNameARM)", + "EndpointUrl": "$(endpoint.url)subscriptions/{{subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ContainerInstance/containerGroups/$(containerGroupName)?api-version=2018-10-01", + "Method": "DELETE", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "Body": "" + } + } + } +} \ No newline at end of file