Surveiller Openflow¶
Cette rubrique décrit comment surveiller l’état d’Openflow et résoudre les problèmes.
Accès aux connexions Openflow¶
Snowflake envoie les journaux Openflow au tableau des événements que vous avez configuré lors de la configuration d’Openflow.
Snowflake recommande d’inclure un horodatage dans la clause WHERE des requêtes du tableau des événements. Ceci est particulièrement important en raison du volume potentiel de données générées par les différents composants de Snowflake. En appliquant des filtres, vous pouvez extraire un sous-ensemble de données plus restreint, ce qui améliore les performances de la requête.
Pour démarrer rapidement avec la télémétrie d’Openflow, consultez la section Exemples de requêtes ci-dessous.
Schéma de télémétrie Openflow¶
Pour plus d’informations sur les colonnes de la table d’événements, voir Colonnes de table d’événements.
Les sections suivantes décrivent comment Openflow structure la télémétrie dans un tableau des événements.
Attributs de ressources¶
Décrit les métadonnées d’événements définies par Openflow. Pour des informations générales sur les autres types d’attributs de ressources, voir Colonne RESOURCE_ATTRIBUTES dans la documentation des colonnes du tableau des événements.
Nom |
Type |
Description |
---|---|---|
application |
Chaîne |
La valeur fixe |
cloud.service.provider |
Chaîne |
L’un des valeurs suivantes : |
container.id |
Chaîne |
Identificateur unique du conteneur |
container.image.name |
Chaîne |
Nom complet de l’image du conteneur. Les conteneurs d’environnement d’exécution Openflow incluront le chemin d’accès au registre local des conteneurs. Par exemple, |
container.image.tag |
Chaîne |
Version de l’image du conteneur |
k8s.container.name |
Chaîne |
Le nom du conteneur K8s. Les conteneurs d’environnement d’exécution Openflow commenceront par la mention « Runtime Key » et se termineront par Par exemple, un environnement d’exécution Openflow nommé « PostgreSQL CDC » avec une clé d’exécution postgresql-cdc, de sorte que les conteneurs ont les noms suivants :
|
k8s.container.restart_count |
Chaîne numérique |
Le nombre de fois que ce conteneur a redémarré depuis sa création. |
k8s.namespace.name |
Chaîne |
Espace de noms K8s du pod ou du conteneur, commençant par |
k8s.node.name |
Chaîne |
Le nom de domaine interne du nœud EKS hébergeant le pod ou le conteneur, ou le nœud EKS lui-même. Par exemple, ip-10-12-13-144.us-west-2.compute.internal |
k8s.pod.name |
Chaîne |
Le nom du pod K8s. Les pods d’environnement d’exécution Openflow commenceront par la mention « Runtime Key » et se termineront par un identificateur numérique pour chaque réplique du pod. Ce nombre peut augmenter jusqu’au nombre maximal de nœuds défini pour l’environnement d’exécution, indexé à 0. Par exemple, un environnement d’exécution Openflow nommé « PostgreSQL CDC » avec une clé d’exécution postgresql-cdc et 3 nœuds aurait les noms de pods suivants :
|
k8s.pod.start_time |
Chaîne de date ISO 8601 |
Horodatage du démarrage du pod |
k8s.pod.uid |
Chaîne UUID |
Identificateur unique du pod dans le cluster |
openflow.dataplane.id |
Chaîne UUID |
L’identificateur unique du déploiement Openflow, correspondant à l”« ID » affiché dans l’UI Snowflake Openflow via Déploiement > Voir les détails. |
- Exemple d’attributs de ressource :
{ "application": "openflow", "cloud.service.provider": "aws", "k8s.container.name": "pg-dev-server", "k8s.container.restart_count": "0", "k8s.namespace.name": "runtime-pg-dev", "k8s.node.name": "ip-10-10-62-36.us-east-2.compute.internal", "k8s.pod.name": "pg-dev-0", "k8s.pod.start_time": "2025-04-25T22:14:29Z", "k8s.pod.uid": "94610175-1685-4c8f-b0a1-42898d1058e6", "k8s.statefulset.name": "pg-dev", "openflow.dataplane.id": "abeddb4f-95ae-45aa-95b1-b4752f30c64a" }
Portée¶
Nom |
Type |
Description |
---|---|---|
name |
Chaîne |
Fournisseur de la métrique. Une des options :
|
- Exemple d’application :
{ "name": "runtime" }
Type d’enregistrement¶
En fonction du type de télémétrie Openflow représenté par cette ligne, il s’agira de l’un des éléments suivants :
LOG
METRIC
Openflow ne collecte pas d’enregistrements TRACE, mais il s’agit également d’un type valide pour cette colonne dans les tableaux des événements Snowflake.
Enregistrement¶
En option. Cet objet JSON décrit le type de métrique représenté par cette ligne.
Nom |
Type |
Description |
---|---|---|
métrique |
Objet |
Contient deux champs :
Le nom et les valeurs unitaires varient considérablement. Pour la liste complète, voir Métriques d’application ci-dessous. |
metric_type |
Chaîne |
Une des options :
|
value_type |
Chaîne |
Le type primitif de la valeur produite par cette métrique. Une des options :
|
aggregation_temporality |
Chaîne |
En option. Définissez sur Cumulatif pour les métriques qui ne font qu’augmenter et dépendent des valeurs précédentes, telles que le temps CPU du pod et l’IO du réseau. |
is_monotonic |
Booléen |
En option. Pour les métriques cumulatives, cela permet d’indiquer qu’elles ne font qu’augmenter au sein de la série chronologique. |
- Exemple d’enregistrement :
{ "metric": { "name": "connection.queued.duration.max", "unit": "millisecond" }, "metric_type": "gauge", "value_type": "INT" }
Attributs d’enregistrement¶
Journaux¶
Les attributs d’enregistrement pour les journaux indiquent généralement la source de ce journal. Par exemple, les journaux d’un environnement d’exécution Openflow nommé temps d'exécution de test
pourrait avoir les attributs d’enregistrement suivants :
{ "log.file.path": "/var/log/pods/runtime-testruntime_testruntime-0_66d80cdb-9484-40a4-bdba-f92eb0af14c7/testruntime-server/0.log", "log.iostream": "stdout", "logtag": "F" }
Métriques système¶
Des métriques système comme l’utilisation du CPU ne définira généralement pas d’attributs d’enregistrement, de sorte que ce sera null
.
Métriques d’application Openflow¶
Les attributs d’enregistrement pour les métriques d’application ou de « flux » fournissent des détails sur le composant du pipeline de données qui a produit la métrique. Cela varie en fonction du type de composant. Voir Métriques d’application
{ "component": "PutSnowpipeStreaming", "execution.node": "ALL", "group.id": "c052f9d7-7f76-3013-a2c5-d3b064fa7326", "id": "c69e2913-22a9-36bb-a159-6a5ed1fb9d63", "name": "PutSnowpipeStreaming", "type": "processor" }
Valeur¶
Cette colonne contient la valeur brute de la télémétrie. Pour les métriques, il s’agira d’une valeur numérique (entière ou double). Pour les journaux, il s’agit soit d’une valeur de chaîne semi-structurée, soit d’une chaîne JSON bien formatée.
Journaux d’environnement d’exécution Openflow¶
Les environnements d’exécution Openflow émettent la pluapa de journaux sous format JSON, donc l’application de la TRY_PARSE_JSON de Snowflake à la colonne VALUE
vous permet de diviser davantage cette valeur dans les champs structurés suivants :
Nom |
Type |
Description |
---|---|---|
formattedMessage |
Chaîne |
Le message du journal effectivement émis par le collecteur de l’environnement d’exécution. |
level |
Chaîne |
Une des options :
|
loggerName |
Chaîne |
Le nom de classe complet du collecteur. Les processeurs Openflow utilisent généralement des noms de collecteurs commençant par Cela est utile pour afficher les journaux d’un processeur, d’un service de contrôleur ou d’une bibliothèque regroupée spécifique. |
nanoseconds |
Entier |
Temps de niveau en nanoseconde pendant lequel ce message de journal a été créé, qui commence en millisecondes. Par exemple, une valeur en nanosecondes de 111222333 peut correspondre à une valeur d’horodatage de 1749180210111, les 3 chiffres les plus à gauche de la nanoseconde correspondant aux 3 chiffres les plus à droite de l’horodatage. |
threadName |
Chaîne |
Nom du thread traitant cet appel. Par exemple, |
throwable |
Objet JSON |
|
horodatage |
Entier |
Heure à laquelle ce message de journal a été créé, exprimée en millisecondes depuis l’époque UNIX. Par exemple, 1749180210044 indique que le journal a été créé le 05-06-2025 à 03:23:30.044 UTC |
Métriques d’application¶
Note
La liste suivante couvre toutes les métriques d’application disponibles pour des environnements d’exécution Openflow. Les environnements d’exécution n’émettent qu’un sous-ensemble de métriques pertinentes pour les connecteurs Openflow pour persister dans un tableau des événements Snowflake.
La tâche de reporting OpenTelemetry de Snowflake peut envoyer tout ou partie des métriques vers n’importe quelle destination OTLP.
Métriques de connexion¶
Nom de la métrique |
Unité |
Description |
---|---|---|
connection.input.bytes |
bytes |
Taille des éléments d’entrée |
connection.input.count |
éléments |
Nombre d’éléments d’entrée |
connection.output.bytes |
bytes |
Taille des éléments de sortie |
connection.output.count |
éléments |
Nombre d’éléments de sortie |
connection.queued.bytes |
bytes |
Taille des éléments en file d’attente |
connection.queued.bytes.max |
bytes |
Taille maximale des éléments en file d’attente |
connection.queued.count |
éléments |
Nombre d’éléments en file d’attente |
connection.queued.count.max |
éléments |
Nombre maximal d’éléments en file d’attente |
connection.queued.duration.total |
millisecondes |
Durée totale des éléments en file d’attente |
connection.queued.duration.max |
millisecondes |
Durée maximale des éléments en file d’attente |
connection.backpressure.threshold.bytes |
bytes |
La taille maximale des données en octets qui peuvent être mises en file d’attente dans cette connexion avant qu’elles n’appliquent une contre-pression. |
connection.backpressure.threshold.objects |
éléments |
Le nombre maximum configuré de FlowFiles qui peuvent être mis en file d’attente dans cette connexion avant qu’ils n’appliquent une contre-pression. |
connection.loadbalance.status.load_balance_not_configured |
binaire, 0 ou 1 |
1 si la connexion n’a pas de paramètre d’équilibrage de charge configuré. Sinon, 0. |
connection.loadbalance.status.load_balance_active |
binaire, 0 ou 1 |
1 si la connexion est répartie entre les charges du cluster. Sinon, 0. |
connection.loadbalance.status.load_balance_inactive |
binaire, 0 ou 1 |
1 si la connexion n’équilibre pas la charge sur l’ensemble du cluster. Sinon, 0. |
Attributs d’enregistrement de connexion¶
Chaque métrique de connexion comprend les attributs d’enregistrement suivants :
Attribut |
Description |
---|---|
id |
L’identificateur unique de la connexion |
name |
Le nom de la connexion vu par l’utilisateur |
type |
La valeur fixe |
source.id |
L’identificateur unique du composant qui envoie des FlowFiles à cette connexion |
source.name |
Le nom du composant (vu par l’utilisateur) qui envoie des FlowFiles à cette connexion |
destination.id |
L’identificateur unique du composant qui reçoit des FlowFiles de cette connexion |
destination.name |
Le nom du composant (vu par l’utilisateur) qui reçoit des FlowFiles de cette connexion |
group.id |
L’identificateur unique du groupe de processus qui contient cette connexion |
Métriques des ports d’entrée et de sortie¶
Les ports d’entrée et de sortie sont, techniquement, deux types de composants distincts. Pour des raisons de cohérence, les métriques et les attributs pour les ports d’entrée et de sortie sont les mêmes, à l’exception de l’attribut type
qui indique s’il s’agit d’un port d’entrée ou d’un port de sortie.
Nom de la métrique |
Unité |
Description |
---|---|---|
port.thread.count.active |
threads |
Nombre de threads actifs |
port.bytes.received |
bytes |
Nombre d’octets reçus |
port.bytes.sent |
bytes |
Nombre d’octets envoyés |
port.flowfiles.received |
flowfiles |
Nombre de FlowFiles reçus |
port.flowfiles.sent |
flowfiles |
Nombre de FlowFiles envoyés |
port.input.bytes |
bytes |
Taille des éléments d’entrée |
port.input.count |
éléments |
Nombre d’éléments d’entrée |
port.output.bytes |
bytes |
Taille des éléments de sortie |
port.output.count |
éléments |
Nombre d’éléments de sortie |
Attributs d’enregistrement des ports d’entrée et de sortie¶
Chaque métrique de port comprend les attributs d’enregistrement suivants :
Attribut |
Description |
---|---|
id |
L’identificateur unique du port |
name |
Le nom du port vu par l’utilisateur |
type |
Un des deux valeurs suivantes : |
group.id |
L’identificateur unique du groupe de processus qui contient ce port |
Métriques du groupe de processus¶
Nom de la métrique |
Unité |
Description |
---|---|---|
processgroup.thread.count.active |
threads |
Nombre de threads actifs |
processgroup.thread.count.stateless |
threads |
Nombre de threads sans état |
processgroup.thread.count.terminated |
threads |
Nombre de threads terminés |
processgroup.bytes.read |
bytes |
Nombre d’octets lus |
processgroup.bytes.received |
bytes |
Nombre d’octets reçus |
processgroup.bytes.transferred |
bytes |
Nombre d’octets transférés |
processgroup.bytes.sent |
bytes |
Nombre d’octets envoyés |
processgroup.bytes.written |
bytes |
Nombre d’octets écrits |
processgroup.flowfiles.received |
flowfiles |
Nombre de FlowFiles reçus |
processgroup.flowfiles.sent |
flowfiles |
Nombre de FlowFiles envoyés |
processgroup.flowfiles.transferred |
flowfiles |
Nombre de FlowFiles transférés |
processgroup.input.count |
éléments |
Nombre d’éléments d’entrée |
processgroup.input.content.size |
bytes |
Taille des éléments d’entrée |
processgroup.output.count |
éléments |
Nombre d’éléments de sortie |
processgroup.output.content.size |
bytes |
Taille des éléments de sortie |
processgroup.queued.count |
éléments |
Nombre d’éléments mis en file d’attente |
processgroup.queued.content.size |
bytes |
Taille des éléments en file d’attente |
processgroup.time.processing |
nanoseconds |
Temps de traitement |
Attributs d’enregistrement de groupe de processus¶
Chaque métrique du groupe de processus comprend les attributs d’enregistrement suivants :
Attribut |
Description |
---|---|
id |
L’identificateur unique du groupe de processus |
name |
Le nom du groupe de processus vu par l’utilisateur |
type |
La valeur fixe |
tree.level |
La profondeur du groupe de processus, par rapport au groupe de processus racine du flux. Les groupes de processus au niveau le plus élevé du flux auront un tree.level de 1 |
Métriques de processeur¶
Nom de la métrique |
Unité |
Description |
---|---|---|
processor.thread.count.active |
thread |
Nombre de threads actifs |
processor.thread.count.terminated |
thread |
Nombre de threads terminés |
processor.time.lineage.average |
nanoseconde |
Durée moyenne de lignée |
processor.invocations |
appels |
Nombre d’appels |
processor.bytes.read |
byte |
Nombre d’octets lus |
processor.bytes.received |
byte |
Nombre d’octets reçus |
processor.bytes.sent |
byte |
Nombre d’octets envoyés |
processor.bytes.written |
byte |
Nombre d’octets écrits |
processor.flowfiles.received |
flowfiles |
Nombre de FlowFiles reçus |
processor.flowfiles.removed |
flowfiles |
Nombre de FlowFiles supprimés |
processor.flowfiles.sent |
flowfiles |
Nombre de FlowFiles envoyés |
processor.input.count |
élément |
Nombre d’éléments d’entrée |
processor.input.content.size |
bytes |
Taille des éléments d’entrée |
processor.output.count |
élément |
Nombre d’éléments de sortie |
processor.output.content.size |
byte |
Taille des éléments de sortie |
processor.time.processing |
nanoseconde |
Temps de traitement |
processor.run.status.running |
binaire, 0 ou 1 |
1 si en cours d’exécution ; sinon 0 |
processor.run.status.stopped |
binaire, 0 ou 1 |
1 si arrêté ; sinon 0 |
processor.run.status.validating |
binaire, 0 ou 1 |
1 si validation ; sinon 0 |
processor.run.status.invalid |
binaire, 0 ou 1 |
1 si non valide ; sinon 0 |
processor.run.status.disabled |
binaire, 0 ou 1 |
1 si désactivé ; sinon 0 |
processor.counter |
count |
Valeur du compteur |
Attributs d’enregistrement de processeur¶
Chaque métrique de processeur comprend les attributs d’enregistrement suivants :
Attribut |
Description |
---|---|
id |
L’identificateur unique du processeur |
name |
Le nom du processeur visible et modifiable par l’utilisateur |
type |
La valeur fixe |
component |
Le nom de classe immuable du processeur. |
execution.node |
Soit |
group.id |
L’identificateur unique du groupe de processus qui contient ce processeur |
Attributs supplémentaires pour les compteurs¶
En plus des attributs de processeur standard ci-dessus, les métriques processor.counter
comprennent les éléments suivants :
Attribut |
Description |
---|---|
type |
La valeur fixe |
counter |
Le nom du compteur généré par l’utilisateur ou par le système |
Métriques du groupe de processus distant¶
Nom de la métrique |
Unité |
Description |
---|---|---|
remoteprocessgroup.thread.count.active |
threads |
Nombre de threads actifs |
remoteprocessgroup.remote.port.count.active |
ports |
Nombre de ports distants actifs |
remoteprocessgroup.remote.port.count.inactive |
ports |
Nombre de ports distants inactifs |
remoteprocessgroup.duration.lineage.average |
nanoseconds |
Durée moyenne de lignée |
remoteprocessgroup.refresh.age |
millisecondes |
Durée depuis la dernière actualisation |
remoteprocessgroup.received.count |
éléments |
Nombre d’éléments reçus |
remoteprocessgroup.received.content.size |
bytes |
Taille des éléments reçus |
remoteprocessgroup.sent.count |
éléments |
Nombre d’éléments envoyés |
remoteprocessgroup.sent.content.size |
bytes |
Taille des éléments envoyés |
remoteprocessgroup.transmission.status.transmitting |
binaire, 0 ou 1 |
1 si le groupe de processus à distance transmet. Sinon, 0. |
remoteprocessgroup.transmission.status.nottransmitting |
binaire, 0 ou 1 |
0 si le groupe de processus à distance transmet. Sinon, 1. |
Attributs d’enregistrement de groupe de processus à distance¶
Chaque métrique du groupe de processus à distance comprend les attributs d’enregistrement suivants :
Attribut |
Description |
---|---|
id |
L’identificateur unique du groupe de processus à distance |
name |
Le nom du groupe de processus à distance vu par l’utilisateur |
group.id |
L’identificateur unique du groupe de processus qui contient ce groupe de processus à distance |
authorization.issue |
L’autorisation utilisée pour accéder au groupe de processus à distance |
target.uri |
L’URI du groupe de processus à distance |
type |
La valeur fixe |
Métriques JVM¶
Nom de la métrique |
Unité |
Description |
---|---|---|
jvm.memory.heap.used |
bytes |
La quantité de mémoire actuellement occupée par les objets dans le tas JVM |
jvm.memory.heap.committed |
bytes |
La quantité de mémoire garantie disponible pour utilisation par le tas JVM |
jvm.memory.heap.max |
bytes |
Quantité maximale de mémoire allouée au tas JVM |
jvm.memory.heap.init |
bytes |
Quantité initiale de mémoire allouée pour le tasJVM |
jvm.memory.heap.usage |
pourcentage |
Utilisation du tas JVM |
jvm.memory.non-heap.usage |
pourcentage |
Utilisation hors tas JVM |
jvm.memory.total.init |
bytes |
Quantité initiale de mémoire allouée pour le JVM |
jvm.memory.total.used |
bytes |
Quantité de mémoire actuellement utilisée par le JVM |
jvm.memory.total.max |
bytes |
Quantité maximale de mémoire pouvant être utilisée par le JVM |
jvm.memory.total.committed |
bytes |
Quantité de mémoire garantie disponible pour utilisation par le JVM |
jvm.threads.count |
threads |
Nombre de threads actifs |
jvm.threads.deadlocks |
threads |
Interblocages de threads JVM |
jvm.threads.datemon.count |
threads |
Nombre de threads démon actifs |
jvm.uptime |
secondes |
Nombre de secondes pendant lesquelles le processus JVM a été exécuté |
jvm.file.descriptor.usage |
pourcentage |
Pourcentage de descripteurs de fichiers disponibles actuellement utilisés. |
jvm.gc.G1-Concurrent-GC.runs |
exécutions |
Nombre total d’exécutions de la collection G1 Concurrent Garbage |
jvm.gc.G1-Concurrent-GC.time |
millisecondes |
Durée totale d’exécution de la collection G1 Concurrent Garbage |
jvm.gc.G1-Young-Generation.runs |
exécutions |
Nombre total d’exécutions de la G1 Young Generation |
jvm.gc.G1-Young-Generation.time |
millisecondes |
Durée totale d’exécution de la G1 Young Generation |
jvm.gc.G1-Old-Generation.runs |
exécutions |
Nombre total d’exécutions de la G1 Old Generation |
jvm.gc.G1-Old-Generation.time |
millisecondes |
Durée totale d’exécution de la G1 Old Generation |
Attributs d’enregistrement JVM¶
Les métriques JVM ne fournissent pas d’attributs d’enregistrement.
Métriques CPU¶
Nom de la métrique |
Unité |
Description |
---|---|---|
cores.available |
cœurs |
Le nombre de cœurs disponibles pour l’environnement d’exécution |
cores.load |
pourcentage |
Soit la moyenne de charge du système, soit -1 si elle n’est pas disponible |
Attributs d’enregistrement CPU¶
Attribut |
Description |
---|---|
id |
La valeur fixe |
name |
Nom du système d’exploitation |
architecture |
L’architecture du système d’exploitation |
version |
La version du système d’exploitation |
Métriques de stockage¶
Nom de la métrique |
Unité |
Description |
---|---|---|
storage.free |
bytes |
La quantité de stockage gratuit pour un dépôt donné |
storage.used |
bytes |
La quantité de stockage utilisée pour un dépôt donné |
Attributs d’enregistrement de stockage¶
Attribut |
Description |
---|---|
id |
L’identificateur unique du dépôt de stockage |
name |
Identique à l’identifiant et fourni par souci de cohérence |
storage.type |
Une des valeurs suivantes : |
Exemples de requêtes¶
Les requêtes suivantes sont des exemples pour vous aider à faire vos premiers pas avec la télémétrie Openflow.
Toutes les requêtes supposent qu’Openflow est configuré pour envoyer des données de télémétrie au tableau des événements par défaut de SNOWFLAKE.TELEMETRY.EVENTS
. Si votre compte Snowflake ou votre déploiement Openflow est configuré avec un tableau des événements différent, remplacez ce nom de tableau où vous voyez SNOWFLAKE.TELEMETRY.EVENTS
.
Rechercher des FlowFiles bloqués¶
Cette requête renvoie les connexions avec des FlowFiles qui ont été mis en file d’attente depuis plus d’un certain seuil, ce qui indique qu’ils peuvent être bloqués et nécessiter une intervention. Ajustez le seuil de 30 minutes en fonction de votre cas d’utilisation.
SELECT * FROM (
SELECT
resource_attributes:"openflow.dataplane.id" as Deployment_ID,
resource_attributes:"k8s.namespace.name" as Runtime_Key,
record_attributes:name as Connection_Name,
record_attributes:id as Connection_ID,
MAX(TO_NUMBER(value / 60 / 1000)) as Max_Queued_File_Minutes
FROM snowflake.telemetry.events
WHERE true
AND record_type = 'METRIC'
AND record:metric:name = 'connection.queued.duration.max'
AND timestamp > dateadd(minutes, -30, sysdate())
GROUP BY 1, 2, 3, 4
ORDER BY Max_Queued_File_Minutes DESC
) WHERE Max_Queued_File_Minutes > 30;
Rechercher les journaux des erreurs pour les environnements d’exécution Openflow¶
SELECT
timestamp,
Deployment_ID,
Runtime_Key,
parsed_log:level as log_level,
parsed_log:loggerName as logger,
parsed_log:formattedMessage as message,
parsed_log
FROM (
SELECT
timestamp,
resource_attributes:"openflow.dataplane.id" as Deployment_ID,
resource_attributes:"k8s.namespace.name" as Runtime_Key,
TRY_PARSE_JSON(value) as parsed_log
FROM snowflake.telemetry.events
WHERE true
AND timestamp > dateadd('minutes', -30, sysdate())
AND record_type = 'LOG'
AND resource_attributes:"k8s.namespace.name" like 'runtime-%'
ORDER BY timestamp DESC
) WHERE log_level = 'ERROR';
Trouver les processeurs en cours d’exécution et hors service¶
Certains flux s’attendent à ce que tous les processeurs soient dans un état « En cours d’exécution », même s’ils ne traitent pas activement les données.
Cette requête vous aide à trouver tous les processeurs qui sont en cours d’exécution ou dans un autre état, par exemple :
arrêté
invalid
disabled
SELECT
timestamp,
resource_attributes:"openflow.dataplane.id" as Deployment_ID,
resource_attributes:"k8s.namespace.name" as Runtime_Key,
record_attributes:component as Processor,
record_attributes:id as Processor_ID,
TO_NUMBER(value) as Running
FROM snowflake.telemetry.events
WHERE true
AND record:metric:name = 'processor.run.status.running'
AND record_type = 'METRIC'
AND timestamp > dateadd(minutes, -30, sysdate());
Trouver une utilisation CPU élevée pour les environnements d’exécution Openflow¶
Des flux de données lents ou un débit réduit peuvent être la conséquence d’un goulot d’étranglement dans le CPU. Les environnements d’exécution Openflow s’adaptent automatiquement en fonction du nombre minimal et maximal de nœuds que vous avez configurés.
Si un environnement d’exécution Openflow utilise son nombre maximum de nœuds et que l’utilisation du CPU reste élevée, envisagez ce qui suit :
Augmentation du nombre maximal de nœuds alloués à l’environnement d’exécution
Dépannage du connecteur ou du flux pour identifier le goulot d’étranglement
Les graphiques Snowsight permettent de visualiser facilement les résultats des requêtes pour l’utilisation du CPU au fil du temps.
SELECT
timestamp,
resource_attributes:"openflow.dataplane.id" as Deployment_ID,
resource_attributes:"k8s.namespace.name" as Runtime_Key,
resource_attributes:"k8s.pod.name" as Runtime_Pod,
TO_NUMBER(value, 10, 3) * 100 as CPU_Usage_Percentage
FROM snowflake.telemetry.events
WHERE true
AND timestamp > dateadd(minute, -30, sysdate())
AND record_type = 'METRIC'
AND record:metric:name ilike 'container.cpu.usage'
AND resource_attributes:"k8s.namespace.name" ilike 'runtime-%'
AND resource_attributes:"k8s.container.name" ilike '%-server'
ORDER BY timestamp desc, CPU_Usage_Percentage desc;