Ce document explique comment épingler des filtres au niveau du tableau de bord afin qu'ils soient permanents. Les filtres épinglés, qui vous permettent de modifier les données affichées par un tableau de bord sans avoir à modifier chaque widget, ont un état par défaut et peuvent s'appliquer à l'ensemble du tableau de bord ou uniquement à des widgets spécifiques. La barre d'outils du tableau de bord affiche chaque filtre épinglé, ainsi qu'un menu qui vous permet de modifier temporairement la valeur du filtre.
Les variables sont semblables aux filtres épinglés, mais elles ne s'appliquent qu'à des widgets spécifiques. Ce document explique comment créer des variables et comment les appliquer à l'aide d'un widget. La barre d'outils du tableau de bord affiche chaque variable, ainsi qu'un menu qui vous permet de modifier temporairement la valeur de la variable.
Ce document explique comment utiliser la console Google Cloud pour créer des variables et des filtres épinglés. Pour en savoir plus sur l'utilisation de l'API Cloud Monitoring, consultez la page Créer et gérer des tableaux de bord à l'aide d'API: Filtres de tableau de bord.
Pour savoir comment ajouter et modifier des regroupements et des filtres temporaires, qui ne s'appliquent qu'à la session en cours, consultez Ajouter des filtres temporaires à un tableau de bord personnalisé.
À propos des filtres épinglés
Un filtre épinglé contient un libellé, une ou plusieurs valeurs par défaut et une liste de toutes les valeurs possibles. La liste de toutes les valeurs possibles est dérivée dynamiquement des données de séries temporelles affichées dans votre tableau de bord.
Pour en savoir plus sur la structure d'un filtre, consultez DashboardFilter
.
Vous n'appliquez pas de filtre épinglé avec des widgets individuels. À la place, les règles suivantes sont utilisées pour déterminer si le filtre épinglé peut modifier les données affichées par le widget:
Si le widget affiche des données qui incluent la clé d'étiquette spécifiée par un filtre épinglé et qu'il ne spécifie pas de valeur pour cette clé d'étiquette, le filtre épinglé peut modifier les données affichées.
Par exemple, supposons que vous ajoutiez le filtre épinglé cluster_name: mycluster. Les graphiques n'affichent alors automatiquement que les séries temporelles associées à un libellé cluster_name dont la valeur est mycluster. De même, les requêtes sur les widgets de votre panneau de journaux sont modifiées pour devenir resource.labels."cluster_name"="mycluster", et vos graphiques n'affichent automatiquement que les séries temporelles qui incluent le libellé dans le filtre épinglé.
Un filtre épinglé est ignoré par un widget lorsqu'il inclut un filtre pour la même clé de libellé ou lorsque les données affichées par le widget ne contiennent pas la clé de libellé spécifiée dans le filtre épinglé.
À propos des variables
Une variable possède un nom et un type. Une variable est appliquée à un widget particulier en modifiant la requête qu'il contient.
Pour en savoir plus sur la structure d'un filtre, consultez DashboardFilter
.
Les variables peuvent être basées sur des libellés ou n'avoir qu'une valeur:
Les variables basées sur des étiquettes sont comme des filtres épinglés. Ces variables contiennent une clé d'étiquette, une ou plusieurs valeurs d'étiquette par défaut et une liste de toutes les valeurs d'étiquette possibles. La liste de toutes les valeurs possibles est dérivée dynamiquement des données de séries temporelles affichées dans votre tableau de bord.
Les variables à valeur unique contiennent une ou plusieurs valeurs par défaut et peuvent lister toutes les valeurs possibles. Si vous ne spécifiez pas de valeur par défaut, l'opérateur générique
(*)
est sélectionné. Pour définir l'ensemble de toutes les valeurs possibles, vous devez fournir un tableau de valeurs ou écrire une requête SQL.Il existe trois types de variables de valeur uniquement: Personnalisée, Saisie de texte et Requête SQL.
Personnalisé: utilisez cette option lorsque vous souhaitez énumérer la liste de toutes les valeurs possibles et définir une ou plusieurs valeurs par défaut. Par exemple, vous pouvez définir la liste de toutes les valeurs possibles sur
prod, staging, dev
et la valeur par défaut surprod
.Saisie de texte: utilisez-la lorsque vous ne connaissez pas toutes les valeurs possibles. Par exemple, vous pouvez vouloir filtrer par URL, mais lorsque vous créez la variable, vous ne connaissez pas la liste exacte des URL. Ensuite, lorsque vous utilisez le menu de filtrage du widget, vous pouvez saisir de nouvelles URL, puis enregistrer les modifications pour la session en cours ou pour la définition de la variable.
Requête SQL: utilisez cette option lorsque vous souhaitez générer la liste des valeurs possibles à l'aide d'une requête SQL. Ces variables sont destinées à être appliquées aux graphiques créés à l'aide de Log Analytics.
Pour ces variables, assurez-vous que le résultat de la requête est une table avec une colonne, que le type de données de cette colonne est une chaîne et que chaque ligne de la table contient une valeur de chaîne unique:
SELECT log_name FROM `TABLE_NAME_OF_LOG_VIEW` GROUP BY log_name
La variable doit interroger la même table que le graphique.
Pour appliquer une variable à un widget, vous devez modifier la requête qu'il contient. Si vous utilisez la console Google Cloud, vous pouvez effectuer cette association à l'aide d'une sélection de menu pour les variables basées sur des libellés et certains types de widgets. Toutefois, vous pouvez toujours modifier la requête du widget pour appliquer une variable. Pour en savoir plus, consultez la section Appliquer une variable à un widget.
Avant de commencer
Pour obtenir les autorisations nécessaires pour ajouter ou modifier des variables ou des filtres épinglés à l'aide de la console Google Cloud, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Monitoring (roles/monitoring.editor
) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les rôles, consultez la section Contrôler les accès avec Identity and Access Management.
Créer et épingler un filtre
Pour créer et épingler un filtre qui s'applique à tous les widgets de tableau de bord compatibles avec les filtres, procédez comme suit:
-
Dans la console Google Cloud, accédez à la page Tableaux de bord .
Accéder à la page Tableaux de bord
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
- Dans la barre d'outils du tableau de bord, cliquez sur settings Paramètres.
- Dans la section Filtres, cliquez sur Ajouter un filtre.
- Cliquez sur arrow_drop_down Libellé, puis sélectionnez un libellé. Par exemple, vous pouvez sélectionner
zone
. - Pour autoriser un utilisateur à sélectionner plusieurs valeurs dans le menu des valeurs de la variable, sélectionnez Sélection multiple. Lorsque la sélection multiple n'est pas activée, les utilisateurs ne peuvent sélectionner qu'une seule option dans le menu des valeurs.
Cliquez sur arrow_drop_down Valeur par défaut, puis sélectionnez la ou les valeurs par défaut du libellé. Pour correspondre à toutes les valeurs, sélectionnez
*
.Une fois le filtre créé, il est ajouté à la barre d'outils de votre tableau de bord. Pour modifier temporairement la valeur du filtre, sélectionnez-le, puis effectuez une sélection dans le menu.
Cliquez sur OK, puis sur Appliquer.
Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.
Créer une variable
Pour créer une variable qui s'applique à des widgets de tableau de bord spécifiques, procédez comme suit:
-
Dans la console Google Cloud, accédez à la page Tableaux de bord .
Accéder à la page Tableaux de bord
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
- Dans la barre d'outils du tableau de bord, cliquez sur settings Paramètres.
- Dans la section Variables, cliquez sur Ajouter une variable.
Sélectionnez le type de variable, puis remplissez la boîte de dialogue.
Pour créer une variable basée sur un libellé, sélectionnez Libellé. Utilisez cette option lorsque vous souhaitez qu'une variable comporte une clé et une valeur d'étiquette, et qu'elle puisse être utilisée comme un filtre. La liste de toutes les valeurs possibles est dérivée dynamiquement des données de séries temporelles affichées dans votre tableau de bord.
Pour les variables à valeur unique, vous avez les options suivantes:
SQL: utilisez cette option lorsque vous souhaitez que les résultats d'une requête SQL génèrent la liste de toutes les valeurs possibles.
Saisissez une ou plusieurs valeurs par défaut, puis une requête SQL qui génère la liste de toutes les valeurs possibles. Assurez-vous que le résultat de la requête est une table à une colonne, que le type de données de cette colonne est une chaîne et que chaque ligne de la table contient une valeur de chaîne unique.
Personnalisé: utilisez cette option lorsque vous souhaitez spécifier à la fois la liste des valeurs possibles et une valeur par défaut. Par exemple, vous pouvez définir le champ Valeurs sur
prod, staging, dev
et la valeur par défaut surprod
.Saisie de texte: utilisez cette option lorsque vous souhaitez spécifier une liste de valeurs appliquées par défaut.
Attribuez un nom à la variable. Le nom s'affiche dans la barre d'outils du tableau de bord.
Cliquez sur OK, puis sur Appliquer.
Appliquez la variable aux widgets du panneau des journaux et aux widgets configurés avec SQL, MQL ou PromQL. Pour en savoir plus, consultez la section Appliquer une variable à un widget.
Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.
Appliquer une variable à un widget
Pour appliquer une variable à un widget, vous devez modifier la requête utilisée par le widget:
Pour les graphiques qui utilisent des requêtes SQL, PromQL ou MQL, et pour les widgets de panneau de journaux, vous devez modifier le widget et la requête. Cette section explique comment effectuer ces modifications.
Pour les graphiques que vous avez configurés à l'aide de menus ou du mode de filtrage direct, Monitoring modifie la requête lorsque vous sélectionnez le widget à l'aide du menu Appliquer aux graphiques.
Pour savoir comment appliquer une variable basée sur un libellé ou une variable de valeur uniquement à un widget, consultez les sections suivantes:
- Syntaxe générale pour désadresser une variable
- Widgets du panneau "Journaux"
- Graphiques avec des requêtes PromQL
- Graphiques avec des requêtes SQL
- Graphiques avec des requêtes MQL
Graphiques avec des requêtes de filtre Monitoring
Lorsque vous utilisez l'interface à menus pour créer un graphique qui affiche des données de séries temporelles, vos sélections sont converties en filtre de surveillance.
Créer des filtres et des variables
Console
Pour savoir comment utiliser la console Google Cloud pour créer des filtres et des variables épinglés, consultez les documents suivants:
API
Pour définir des filtres et des variables épinglés, utilisez la structure de données dashboardFilters
.
- Pour créer une variable, définissez la valeur du champ
templateVariable
sur le nom de la variable. Omettez ce champ ou définissez sa valeur sur une chaîne vide lorsque vous souhaitez créer un filtre épinglé. - Pour créer un filtre épinglé ou une variable basée sur un libellé, vous devez spécifier le champ
labelKey
. Omettre ce champ lorsque vous souhaitez une variable à valeur unique. Définissez la valeur par défaut du filtre ou de la variable. La configuration de ce champ détermine si un utilisateur peut sélectionner exactement une option dans le menu de valeurs ou s'il peut sélectionner plusieurs valeurs.
- Pour définir une seule valeur par défaut et limiter les utilisateurs à la sélection d'une seule option dans le menu des valeurs, définissez le champ
valueType
surSTRING
et définissez également le champstringValue
:
"valueType": "STRING", "stringValue": "my-default-value",
- Pour définir au moins une valeur par défaut et permettre aux utilisateurs de sélectionner plusieurs options dans le menu des valeurs, définissez le champ
valueType
surSTRING_ARRAY
et définissez également le champstringArrayValue
. Dans l'exemple suivant, il existe trois valeurs par défaut.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Pour définir une seule valeur par défaut et limiter les utilisateurs à la sélection d'une seule option dans le menu des valeurs, définissez le champ
Facultatif: pour spécifier la liste de toutes les valeurs possibles pour une variable à valeur unique, définissez le champ
stringArray
ou le champtimeSeriesQuery
. Si vous spécifiez une requête, il doit s'agir d'une requête d'analyse.
Prenons l'exemple de l'objet dashboardFilters
suivant:
{ "dashboardFilters": [ { "labelKey": "zone" "stringValue": "us-central1-c", "valueType": "STRING", "filterType": "RESOURCE_LABEL" }, { "labelKey": "instance_id", "stringValue": "3133577226154888113", "valueType": "STRING", "filterType": "RESOURCE_LABEL", "templateVariable": "my_label_based_variable" }, { "filterType": "VALUE_ONLY", "templateVariable": "my_value_only_variable", timeSeriesQuery: { opsAnalyticsQuery: { sql: " SELECT log_name FROM `MY_TABLE` GROUP BY log_name ", } } } ], "displayName": "Illustrate Variables", ... }
Le code JSON précédent définit un filtre épinglé et deux variables:
Le filtre épinglé a la clé de libellé
zone
, qui s'affiche dans la barre d'outils. Les champsvalueType
etstringValue
spécifient la valeur par défaut unique. Pour en savoir plus, consultez la page de la documentation de référence de l'API pour la structure de donnéesdashboardFilters
.La variable basée sur une étiquette s'appelle
my_label_based_variable
, et sa clé d'étiquette estinstance_id
. La valeur par défaut de cette variable est définie sur un ID d'instance spécifique. Vous pouvez également configurer la valeur par défaut à l'aide d'un tableau. Dans la barre d'outils, le filtre s'affiche sous le nommy_label_based_variable
.La variable à valeur unique est nommée
my_value_only_variable
. Cette entrée ne spécifie pas de valeur par défaut. L'opérateur générique,(*)
, est donc appliqué automatiquement. De plus, cette variable utilise une requête SQL pour générer la liste des valeurs possibles.
Notez que l'objet dashboardFilters
ne liste pas les widgets auxquels la variable s'applique. Pour appliquer une variable à un widget, vous devez modifier la requête du widget.
Syntaxe générale pour désadresser une variable
Pour tous les widgets, à l'exception de ceux définis par SQL, utilisez la syntaxe suivante pour appliquer une variable à une requête:
Pour appliquer une variable basée sur une étiquette et que la clé et la valeur de l'étiquette soient résolues en une expression de filtre valide pour le langage de requête, utilisez
${my_label_based_variable}
.Pour n'appliquer que la valeur d'une variable basée sur un libellé, utilisez
${my_label_based_variable.value}
. La comparaison doit utiliser une expression régulière.Pour n'appliquer que la valeur d'une variable à valeur unique, utilisez
${my_value_only_variable}
. Pour les variables de type "Valeur uniquement", n'incluez pas de clause.value
. La comparaison doit utiliser une expression régulière.
Widgets du panneau des journaux
Pour appliquer une variable à un widget de panneau de journaux, mettez à jour le volet des requêtes. La syntaxe de ces widgets suit celle spécifiée sous Syntaxe générale.
Console
Par exemple, la requête suivante utilise une expression régulière pour comparer la valeur du champ jsonPayload.message
à une valeur de chaîne qui inclut la valeur d'une variable basée sur un libellé:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Prenons un autre exemple. Considérons une variable à valeur unique, value_only_severity_variable
, et supposons que trois valeurs sont sélectionnées dans le menu des valeurs: ERROR
, INFO
et NOTICE
.
Ajoutez ensuite le code suivant au volet de requête du widget de panneau des journaux:
severity =~ "${value_only_severity_variable}"
Voici un exemple de formulaire affiché:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Par exemple, le code JSON suivant montre comment appliquer une variable basée sur un libellé à la requête d'un widget de panneau de journaux:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
Par exemple, la requête suivante utilise une expression régulière pour comparer la valeur du champ jsonPayload.message
à une valeur de chaîne qui inclut la valeur d'une variable basée sur un libellé:
"logsPanel": { "filter": "resource.type=\"gce_instance\"\n resource.labels.project_id=~\"${my_label_based_variable.value}\"\n", "resourceNames": [ "projects/012345" ] }
Prenons un autre exemple. Considérons une variable à valeur unique, value_only_severity_variable
, et supposons que trois valeurs sont sélectionnées dans le menu: ERROR
, INFO
et NOTICE
.
Ajoutez ensuite le code suivant au volet de requête du widget de panneau des journaux:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
L'illustration suivante montre la requête exécutée par le widget du panneau des journaux:
severity =~ "^(ERROR|INFO|NOTICE)$"
Si vous avez configuré une requête pour le panneau des journaux, puis sélectionné le bouton pour ouvrir l'explorateur de journaux, les variables sont résolues avant l'ouverture de l'explorateur de journaux.
Le tableau suivant illustre la façon dont les exemples de variables sont résolus par le panneau des journaux. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison:
Syntaxe | Valeur sélectionnée |
Expression du panneau des journaux résolus |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
L'exemple de variable est basé sur le libellé de ressource |
${my_label_based_variable} |
* |
"" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Graphiques avec des requêtes PromQL
Pour appliquer une variable basée sur un libellé à un graphique contenant une requête PromQL, suivez les instructions de la section Syntaxe générale.
Console
Par exemple, la requête suivante repose sur la résolution de la variable basée sur le libellé, my_label_based_variable
, en une expression de filtre:
compute_googleapis_com:instance_cpu_utilization{ monitored_resource="gce_instance", ${my_label_based_variable} }
Vous pouvez également modifier la requête pour ne résoudre que la valeur d'une variable.
L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id
:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Si vous disposez d'une variable à valeur unique, omettez la clause .value
. Par exemple, pour filtrer par zone à l'aide d'une variable à valeur unique, la requête inclut quelque chose comme ce qui suit:
zone=~"${my_value_only_variable}"
API
Par exemple, le code JSON suivant illustre une requête qui s'appuie sur la résolution de la variable basée sur le libellé, my_label_based_variable
, en une expression de filtre:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", ${my_label_based_variable} }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Vous pouvez également modifier la requête pour ne résoudre que la valeur d'une variable.
L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id
:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", instance_id=~\"${my_label_based_variable.value}\" }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Si vous disposez d'une variable à valeur unique, omettez la clause .value
. Par exemple, pour filtrer par zone à l'aide d'une variable à valeur unique, la requête inclurait quelque chose comme ce qui suit:
zone=~\"${my_value_only_variable}\"
Le tableau suivant illustre la façon dont les exemples de variables sont résolus par PromQL. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison:
Syntaxe | Valeur sélectionnée |
Expression PromQL résolue |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
L'exemple de variable est basé sur le libellé de ressource |
${my_label_based_variable} |
* |
noop_filter=~".*" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.+ |
Graphiques avec des requêtes SQL
Lorsque vous souhaitez appliquer une variable à un widget défini en SQL, mettez à jour la clause WHERE
pour faire référence à la valeur de la variable.
Pour toutes les variables, préfixez le nom de la variable avec le signe "at", par exemple : @variable_name
. Pour les variables basées sur des libellés, ajoutez .value
au nom de la variable, @my_label_based_variabe.value
.
Pour les requêtes SQL, la substitution de variables repose sur BigQuery et est sécurisée contre les injections SQL. Pour en savoir plus, consultez la section Exécuter des requêtes paramétrées.
Console
Étant donné que SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur", nous vous recommandons de toujours utiliser une instruction IF
lorsque vous appliquez des variables à une requête SQL. L'exemple suivant illustre l'utilisation d'une variable à valeur unique dont le type de données est une chaîne:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Lorsque l'option de menu de la variable permet aux utilisateurs de sélectionner plusieurs valeurs, vous devez caster la valeur de la variable en type de données GoogleSQL à l'aide de la fonction CAST
.
La requête suivante illustre cette syntaxe:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
L'instruction IF
affichée dans les exemples précédents est recommandée, car SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur". Par conséquent, si vous omettez l'instruction IF
et si vous sélectionnez l'opérateur de caractères génériques, le résultat de la requête est une table vide. Dans le deuxième exemple, la fonction UNNEST
convertit le tableau en table.
Pour ajouter une clause WHERE
correctement formatée, procédez comme suit:
- Modifiez le widget.
- Dans la barre d'outils, sélectionnez Insérer un filtre de variable, puis sélectionnez la variable que vous souhaitez appliquer à la clause
WHERE
. - Dans la boîte de dialogue qui s'affiche, vérifiez le code généré, puis cliquez sur Copier et fermer.
Collez le code copié dans le volet Requête, puis apportez les modifications nécessaires.
Par exemple, supposons que vous créiez une variable nommée
LogName
qui génère une liste de noms de journaux et affiche le résultat dans un tableau avec une seule colonne nomméelog_name
. Vous créez ensuite un graphique, sélectionnez Insérer un filtre de variable, puis la variableLogName
. Le code suivant est généré:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
Dans cet exemple, vous devez modifier le code généré et remplacer
LogName =
parlog_name =
pour que la jointure de table puisse avoir lieu:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Cliquez sur Run (Exécuter), puis sur Apply (Appliquer).
Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.
API
Étant donné que SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur", nous vous recommandons de toujours utiliser une instruction IF
lorsque vous appliquez des variables à une requête SQL. L'exemple suivant illustre l'utilisation d'une variable à valeur unique dont le type de données est une chaîne:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Par exemple, voici une représentation JSON partielle d'un graphique qui affiche les résultats d'une requête SQL : Pour permettre de filtrer les résultats par nom de journal, une clause WHERE
a été ajoutée qui fait référence à la variable LogName
:
"plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": {}, "queryHandle": "", "sql": "SELECT\n timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload\n FROM\n `my-project.global._Default._Default`\n WHERE \n IF (@LogName = \"*\", TRUE, log_name=@LogName)\nLIMIT 10000" } }
La variable LogName
émet également une requête pour déterminer la liste des noms de journaux possibles:
"dashboardFilters": [ { "filterType": "VALUE_ONLY", "templateVariable": "LogName", "valueType": "STRING", "timeSeriesQuery": { "opsAnalyticsQuery": { "savedQueryId": "", "sql": "SELECT log_name FROM `my-project.global._Default._Default` GROUP BY log_name LIMIT 1000", "queryHandle": "" }, "unitOverride": "", "outputFullDuration": false } } ],
Lorsque l'option de menu de la variable permet aux utilisateurs de sélectionner plusieurs valeurs, vous devez caster la valeur de la variable en type de données GoogleSQL à l'aide de la fonction CAST
.
La requête suivante illustre cette syntaxe:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
L'instruction IF
affichée dans les exemples précédents est recommandée, car SQL n'interprète pas l'opérateur générique comme signifiant "n'importe quelle valeur". Par conséquent, si vous omettez l'instruction IF
et si vous sélectionnez l'opérateur de caractères génériques, le résultat de la requête est une table vide. Dans le deuxième exemple, la fonction UNNEST
convertit le tableau en table.
Graphiques avec des requêtes MQL
Pour appliquer une variable basée sur un libellé à un graphique contenant une requête MQL, ajoutez un pipe, (|)
, puis suivez les instructions indiquées dans la section Syntaxe générale.
Lorsque vous utilisez l'interface à menus pour créer un graphique qui affiche des données de séries temporelles, vos sélections sont converties en filtre de surveillance.
Console
Par exemple, la requête suivante repose sur une variable basée sur un libellé, my_label_based_variable
, qui est résolue en expression de filtre:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | every 1m | ${my_label_based_variable}
Vous pouvez également modifier la requête pour ne résoudre que la valeur d'une variable.
L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id
:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | filter resource.instance_id=~'${my_label_based_variable.value}' | group_by 1m, [value_utilization_mean: mean(value.utilization)] | every 1m
Si vous disposez d'une variable à valeur unique, omettez la clause .value
. Par exemple, pour filtrer par zone à l'aide d'une variable à valeur unique, la requête inclut quelque chose comme ce qui suit:
resource.zone=~'${my_value_only_variable}'
API
Par exemple, le code JSON suivant illustre une requête qui s'appuie sur une variable basée sur un libellé, my_label_based_variable
, qui est résolue en expression de filtre:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n | ${my_label_based_variable}", "unitOverride": "", "outputFullDuration": false },
Vous pouvez également modifier la requête pour ne résoudre que la valeur d'une variable.
L'exemple suivant utilise une expression régulière pour comparer la valeur d'une requête basée sur un libellé à instance_id
:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | filter resource.instance_id=~'${my_label_based_variable.value}'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n", "unitOverride": "", "outputFullDuration": false },
Si vous disposez d'une variable à valeur unique, omettez la clause .value
. Par exemple, pour filtrer par zone à l'aide d'une variable à valeur unique, la requête inclurait quelque chose comme ce qui suit:
resource.zone=~'${my_value_only_variable}'
Le tableau suivant illustre la façon dont les exemples de variables sont résolus par le MQL. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison:
Syntaxe | Valeur sélectionnée |
Expression MQL résolue |
---|---|---|
${my_label_based_variable} |
12345 |
filter (resource.instance_id == '12345')
L'exemple de variable est basé sur le libellé de ressource |
${my_label_based_variable} |
* |
filter (true) |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Graphiques avec des requêtes de filtres de surveillance
Pour appliquer une variable basée sur des étiquettes à un graphique contenant une requête sous la forme d'un filtre de surveillance, suivez les instructions de la section Syntaxe générale.
Console
Si vous utilisez la console Google Cloud pour créer vos graphiques et si vous utilisez l'interface basée sur les menus, vous pouvez appliquer une variable basée sur des libellés à un graphique à l'aide du champ Appliquer aux graphiques de la variable ou en modifiant le widget et en sélectionnant la variable basée sur des libellés dans le menu Filtrer. Le menu Filtrer liste toutes les variables basées sur des étiquettes et toutes les clés d'étiquette.
Pour appliquer une variable basée sur la valeur à ces types de graphiques, procédez comme suit:
- Modifier le graphique
- Dans le volet de requête, cliquez sur Ajouter un filtre, puis sélectionnez une clé de libellé. Par exemple, vous pouvez sélectionner zone.
- Dans le menu Valeur, sélectionnez votre variable à valeur unique.
- Cliquez sur Appliquer.
- Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.
Par exemple, le code JSON suivant illustre une requête qui s'appuie sur une variable basée sur un libellé, my_label_based_variable
, qui est résolue en expression de filtre:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" ${my_label_based_variable}"
Les widgets qui utilisent une requête sous la forme d'un filtre de surveillance ne peuvent pas filtrer la série temporelle en fonction de la valeur d'une variable basée sur des étiquettes. Toutefois, vous pouvez filtrer en fonction de variables de type "Valeur uniquement".
Par exemple, la requête suivante affiche la valeur du champ Filtres d'une requête qui filtre par zone
, en fonction de la valeur d'une variable à valeur unique:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})
API
Par exemple, le code JSON suivant illustre une requête qui s'appuie sur une variable basée sur un libellé, my_label_based_variable
, qui est résolue en expression de filtre:
"timeSeriesQuery": { "timeSeriesFilter": { "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" ${my_label_based_variable} ", "aggregation": { "alignmentPeriod": "60s", "perSeriesAligner": "ALIGN_MEAN", "groupByFields": [] } }, "unitOverride": "", "outputFullDuration": false },
Les widgets qui utilisent une requête sous la forme d'un filtre de surveillance ne peuvent pas filtrer la série temporelle en fonction de la valeur d'une variable basée sur des étiquettes. Toutefois, vous pouvez filtrer en fonction de variables de type "Valeur uniquement".
Par exemple, la requête suivante affiche le champ "filter"
d'une requête qui filtre par zone
, en fonction de la valeur d'une variable à valeur unique:
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"
Le tableau suivant illustre la façon dont les exemples de variables sont résolus par le filtre de surveillance. Comme indiqué précédemment, lorsque seule la valeur d'une variable est utilisée, vous devez utiliser une expression régulière comme opérateur de comparaison:
Syntaxe | Valeur sélectionnée |
Expression de filtre résolue |
---|---|---|
${my_label_based_variable} |
12345 |
resource.instance_id == "12345"
L'exemple de variable est basé sur le libellé de ressource |
${my_label_based_variable} |
* |
Omission |
${my_label_based_variable.value} |
12345 |
Non compatible |
${my_label_based_variable.value} |
* |
Non compatible |
${my_value_based_variable} |
12345 |
"12345" |
${my_value_based_variable} |
* |
".*" |
Modifier un filtre ou une variable épinglés
Pour modifier temporairement la valeur de n'importe quel filtre affiché dans la barre d'outils du tableau de bord, cliquez sur le nom du filtre, puis saisissez une valeur ou effectuez une sélection dans le menu.
Si votre tableau de bord contient un tableau qui affiche des données de série temporelle, vous pouvez ajouter des filtres temporaires ou modifier des filtres et des variables permanents à l'aide du bouton filter_list Filtrer le tableau de bord selon cette valeur d'une cellule. Lorsque ce bouton est sélectionné, il applique un nouveau filtre temporaire ou met à jour la valeur d'un filtre ou d'une variable existante. Les filtres et variables existants sont mis à jour lorsque la clé d'étiquette de la colonne de la table correspond à la clé d'étiquette d'un filtre ou d'une variable.
Pour modifier la configuration d'un filtre épinglé ou d'une variable, procédez comme suit:
-
Dans la console Google Cloud, accédez à la page Tableaux de bord .
Accéder à la page Tableaux de bord
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
- Dans la barre d'outils du tableau de bord, cliquez sur settings Paramètres.
- Recherchez le filtre ou la variable que vous souhaitez modifier, puis développez sa définition.
- Une fois les modifications effectuées, cliquez sur Appliquer.
- Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.
Supprimer un filtre ou une variable épinglés
Pour supprimer un filtre épinglé ou une variable, procédez comme suit:
-
Dans la console Google Cloud, accédez à la page Tableaux de bord .
Accéder à la page Tableaux de bord
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
- Dans la barre d'outils du tableau de bord, cliquez sur settings Paramètres.
- Recherchez le filtre ou la variable que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Cliquez sur Appliquer.
- Pour enregistrer le tableau de bord modifié, cliquez sur Enregistrer dans la barre d'outils.
Étape suivante
- Explorer les données représentées graphiquement
- Accéder aux tableaux de bord spécifiques aux ressources