Convertir du texte non structuré en JSON
Dans IBM® Cloud Logs, vous pouvez utiliser la règle Parse pour convertir du texte non structuré en 1 ou plusieurs zones JSON.
Avant de commencer
Les règles d'analyse syntaxique sont organisées dans des groupes de règles. Chaque groupe a un nom et un ensemble de règles avec une relation logique entre eux. Les journaux sont traités selon l'ordre du groupe de règles (du début à
la fin). Ils sont ensuite traités par l'ordre des règles au sein du groupe de règles et en fonction des opérateurs logiques qui les séparent (AND/OR). Les règles vous aident à traiter, analyser et restructurer les données de journal
afin de préparer la surveillance et l'analyse. Pour plus d'informations, voir Utilisation de groupes de règles.
Utilisation de groupes capturés nommés pour définir de nouvelles zones
La règle d'analyse utilise des groupes de capture nommés RegEx pour définir de nouvelles zones.
- Les groupes capturés deviennent les zones de journal analysées.
- La valeur associée à chaque groupe devient la valeur de la zone.
- L' RegEx n'a pas besoin de correspondre à l'intégralité du journal.
- Seuls les groupes de capture nommés RegEx (les valeurs dans
< >) et la valeur qu'ils capturent font partie du journal reconstruit.
Configuration d'une règle d'analyse syntaxique
Pour créer un groupe de règles avec une règle d'analyse syntaxique, procédez comme suit:
-
Cliquez sur l'icône Pipeline de données
> Règles d'analyse syntaxique et cliquez sur Nouveau groupe de règles.
-
Dans la section Détails, entrez le Nom du groupe de règles et la Description du groupe de règles.
-
Dans la section Rule Matcher, configurez les applications, les sous-systèmes et les niveaux de gravité qui définissent les journaux sur lesquels appliquer les règles incluses dans le groupe de règles.
-
Dans la section Règles, sélectionnez Analyse syntaxique
.
-
Entrez un nom.
-
Si vous le souhaitez, entrez une description.
-
Sélectionnez un champ source. Il s'agit de la zone sur laquelle l' RegEx est appliquée.
-
Sélectionnez un champ de destination. Il s'agit de la zone qui sera remplie avec les résultats de l'application de l'expression RegEx.
-
Entrez l' expression régulière (RegEx).
-
Basculez le statut sur ACTIF si vous souhaitez que la règle soit activée.
-
-
Ajoutez des groupes de règles supplémentaires en cliquant sur Ajouter une règle et en sélectionnant le type de règle souhaité. Activez AND/OR pour sélectionner la façon dont vous souhaitez que les règles supplémentaires soient traitées.
-
Cliquez sur Créer un groupe de règles.
Exemples de conversions de journal
L'exemple suivant prend un journal d'erreurs de type Heroku L/H qui est envoyé depuis Heroku en tant que journal non structuré et le convertit en journal JSON.
Le journal d'origine est:
sock=client at=warning code=H27 desc="Client Request Interrupted" method=POST path="/submit/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno=web.1 connect=1ms service=0ms status=499 bytes=0
L' RegEx est la suivante:
^(sock=)?(?P<sock>(\S*))\s*at=(?P<severity>\S*)\s*code=(?P<error_code>\S*)\s*desc="(?P<desc>[^"]*)"\s*method=(?P<method>\S*)\s*path="(?P<path>[^"]*)" host=(?P<host>\S*)\s* (request_id=)?(?P<request_id>\S*)\s*fwd="?(?P<fwd>[^"\s]*)"?\s*dyno=(?P<dyno>\S*)\s*connect=(?P<connect>\d*)(ms)?\s*service=(?P<service>\d*)(ms)?\s*status=(?P<status>\d*)\s* bytes=(?P<bytes>\S*)\s*(protocol=)?(?P<protocol>[^"\s]*)$
Le journal formaté est:
{
"sock": "client",
"severity": "warning",
"error_code": "H27",
"desc": "Client Request Interrupted",
"method": "POST",
"path": "/submit/",
"host": "myapp.herokuapp.com",
"request_id": "",
"fwd": "17.17.17.17",
"dyno": "web.1",
"connect": "1",
"service": "0",
"status": "499",
"bytes": "0",
"protocol": ""
}