Passer au contenu principal
Certaines lignes de log méritent d’être comptées mais pas d’être conservées. Une boutique en ligne peut journaliser chaque recherche dans le catalogue effectuée par un client, chaque page produit qu’il ouvre et chaque health check de son load balancer. Chaque ligne prise isolément apporte peu d’information, mais le rythme, lui, compte. Vous voulez savoir à quelle fréquence cela se produit, sans stocker chaque ligne. AppSignal peut enregistrer une métrique à partir des lignes de log correspondantes dès leur arrivée, puis supprimer ces lignes pour qu’elles ne soient jamais stockées. Vous conservez le nombre pour vos dashboards et vos triggers, et votre stockage de logs reste faible. Mesurez d’abord, puis jetez — comme dans un pipeline d’observabilité. L’interface de l’application AppSignal ne le prend pas encore en charge. Vous pouvez le configurer via AppSignal MCP en demandant à votre agent IA de créer deux log line actions.

Comment cela fonctionne

Les log line actions s’exécutent au moment où AppSignal ingère vos logs, dans un ordre que vous définissez. Il en existe trois types :
  • metrics : enregistre une métrique à partir des lignes correspondantes.
  • filter : supprime les lignes correspondantes pour qu’elles ne soient jamais stockées.
  • trigger : déclenche une alerte et un incident lorsque la requête correspond.
Pour conserver la métrique tout en supprimant les lignes, utilisez une action metrics et une action filter, avec l’action metrics en premier. Un filter empêche une ligne d’atteindre toute action ultérieure ; si le filter s’exécutait en premier, la ligne serait supprimée avant d’avoir été comptée.
Les log line actions n’affectent que les lignes ingérées après leur création. Elles ne modifient pas les logs déjà stockés.

Enregistrer la métrique dès l’arrivée des logs

Enregistrer la métrique à l’ingestion est ce qui rend la suppression sûre. Une métrique basée sur les logs construite depuis la page Logs lit des lignes de log déjà stockées ; une fois les lignes supprimées, il n’y a plus rien à lire. Une log line action de type metrics enregistre la valeur de chaque ligne à son arrivée, avant que le filter ne la supprime, si bien que le nombre est préservé.

Avant de commencer, vous aurez besoin de

  • AppSignal MCP configuré dans votre agent IA, avec un accès en écriture aux outils de logging
  • Une source de log qui reçoit les lignes que vous souhaitez mesurer
  • Une requête qui correspond à ces lignes

Étape 1 : Enregistrer une métrique à partir des lignes

Demandez à votre agent d’ajouter une action metrics. Par exemple, pour compter la fréquence des recherches dans votre catalogue :
Sur MyStore production, ajoute une log line action metrics qui compte les lignes de log correspondant à message:search sous forme de counter nommé log.catalog_searches, limitée à la source de log de l’application.
Cela appelle manage_log_line_action :
{
  "app_name": "MyStore",
  "app_environment": "production",
  "name": "Catalog search rate",
  "action_type": "metrics",
  "query": "message:search",
  "source_ids": ["<YOUR_LOG_SOURCE_ID>"],
  "log_line_metrics": [
    { "name": "log.catalog_searches", "metric_type": "counter" }
  ]
}
Trois points à bien traiter :
  • Écrivez la requête dans la syntaxe de requête de log d’AppSignal, la même que celle de la page Logs. message:search correspond aux lignes dont le message contient search. Voir Query syntax.
  • Choisissez à quelles sources elle s’applique. Listez-les dans source_ids, ou omettez source_ids pour appliquer l’action à toutes les sources.
  • Choisissez le type de métrique. Un counter compte les lignes correspondantes et ne nécessite pas de champ. Un gauge ou une distribution lit un nombre dans chaque ligne, donc nécessite un field indiquant quelle valeur lire.

Étape 2 : Vérifiez la métrique avant de supprimer quoi que ce soit

Attendez quelques lignes correspondantes, puis relisez la métrique :
Montre-moi le counter log.catalog_searches pour MyStore production sur les 15 dernières minutes.
Confirmez que le counter enregistre bien les valeurs avant d’ajouter le filter. Un filter supprime les lignes correspondantes de manière définitive ; si la requête est incorrecte, vous perdez les lignes sans avoir capturé le nombre.

Étape 3 : Supprimer les lignes correspondantes

Ajoutez une action filter avec la même requête :
Sur MyStore production, ajoute une log line action filter qui supprime les lignes de log correspondant à message:search.
{
  "app_name": "MyStore",
  "app_environment": "production",
  "name": "Drop catalog search logs",
  "action_type": "filter",
  "query": "message:search",
  "source_ids": ["<YOUR_LOG_SOURCE_ID>"]
}

Étape 4 : Gardez l’action metrics avant le filter

Les nouvelles actions sont ajoutées à la fin de l’ordre, donc le filter s’exécute déjà après l’action metrics. Confirmez l’ordre :
Liste les log line actions sur MyStore production, et garde l’action metrics avant le filter.
Cela utilise get_app_resources pour lire l’ordre, et reorder_log_line_actions uniquement si le filter précède l’action metrics. Si le filter s’exécutait en premier, il supprimerait les lignes avant que l’action metrics ne les compte.

Vérifier que cela fonctionne

Laissez quelques minutes aux actions pour prendre effet, puis vérifiez les deux moitiés sur un petit échantillon :
  1. Lisez la métrique. Le counter continue de monter à mesure que des lignes correspondantes arrivent.
  2. Cherchez dans vos logs les mêmes lignes. Les nouvelles n’apparaissent plus, parce que le filter les supprime.
Si le counter ne monte pas, ou si les lignes sont toujours stockées, l’action n’a peut-être pas encore pris effet, ou la requête ne correspond pas. Vérifiez la requête sur la page Logs, puis réessayez sur de nouvelles lignes.

Comportement et limites

  • Les actions ne sont pas rétroactives. Elles n’agissent que sur les nouvelles lignes. Les logs stockés avant la création de l’action restent inchangés.
  • Prévoyez quelques minutes. Une action nouvelle ou modifiée met un court instant à prendre effet. Les lignes qui arrivent dans les tout premiers instants peuvent ne pas être traitées par elle.
  • Les lignes supprimées ne peuvent pas être récupérées. Conservez la métrique — ainsi qu’une action trigger si vous souhaitez des alertes — afin que le filter ne supprime jamais la seule trace d’un événement.
  • Les deux requêtes sont indépendantes. Comptez un ensemble de lignes et supprimez-en un autre si cela correspond à votre objectif. Pour compter et supprimer les mêmes lignes, utilisez la même requête pour les deux.

Voir aussi