axiom-ingest

Par axiomhq · skills

Envoie des données vers Axiom. Sélectionne une organisation depuis `~/.axiom.toml`, ou en provisionne une temporaire si aucune n'est configurée, crée le dataset, ingère du JSON, NDJSON ou CSV, et confirme avec une requête. À utiliser lorsqu'on demande d'envoyer, d'ingérer, d'uploader ou de charger des données ou des événements dans Axiom ou un nouveau dataset Axiom.

npx skills add https://github.com/axiomhq/skills --skill axiom-ingest

axiom-ingest

Insérez des données dans un dataset Axiom sans complications inutiles.

1. Choisir une org

Lister les déploiements configurés :

grep -o '^\[deployments\.[^]]*\]' ~/.axiom.toml 2>/dev/null
Résultat À faire
Aucun, et pas de connexion Axiom MCP Suivez la skill axiom-agent-created-orgs pour provisionner une org temporaire, puis continuez ici avec son org id comme déploiement.
Aucun, mais Axiom MCP est connecté Demandez une fois : créer un token API dans cette org et l'ajouter à ~/.axiom.toml, ou utiliser une nouvelle org temporaire. Pour un nouveau dataset, le token a besoin des permissions dataset create, ingest et query. MCP seul ne peut pas ingérer.
Un Utilisez-le. Dites quelle org vous utilisez avant d'écrire.
Plusieurs Demandez une fois : quel déploiement, ou une nouvelle org temporaire.

Si l'utilisateur a nommé une org ou un déploiement, utilisez-le et ignorez le tableau.

Charger le déploiement sans afficher le token :

cfg() { awk -F'"' -v d="[deployments.$1]" -v k="$2" '$0==d{f=1;next} /^\[/{f=0} f&&$1~"^"k" *= *$"{print $2}' ~/.axiom.toml; }
d=<deployment>; url=$(cfg "$d" url); token=$(cfg "$d" token); org=$(cfg "$d" org_id)
H=(-sS -H "Authorization: Bearer $token" -H "X-Axiom-Org-Id: $org")

2. Créer le dataset

Les noms utilisent des lettres, chiffres, -, _ et .. Choisissez un nom parmi la tâche si l'utilisateur n'en a pas fourni.

edge=$(curl "${H[@]}" -H 'Content-Type: application/json' -X POST "$url/v2/datasets" \
  -d '{"name": "<dataset>", "description": "<why>"}' | jq -r '.edgeDeploymentUrl // .message')
  • dataset license limit exceeded (HTTP 400) signifie que l'org n'a plus de slots de dataset disponibles. Demandez si réutiliser un dataset existant ou utiliser une autre org.
  • entity exists (HTTP 409) signifie que le nom est pris. Pour une demande de « nouveau dataset », choisissez un autre nom.
  • token does not have access to resource: datasets with action: create (HTTP 403) signifie que le token ne peut pas créer de datasets. Demandez à l'utilisateur de créer le dataset ou utiliser un token qui peut, ou envoyer vers un dataset existant.

Pour envoyer vers un dataset existant, sautez l'appel create et lisez son URL edge à la place :

edge=$(curl "${H[@]}" "$url/v2/datasets/<dataset>" | jq -r .edgeDeploymentUrl)

3. Ingérer

Envoyer vers l'URL edge du dataset. Définissez Content-Type selon les données :

Données Content-Type
Tableau JSON d'objets application/json
Un objet JSON par ligne application/x-ndjson
CSV avec ligne d'en-tête text/csv
curl "${H[@]}" -H 'Content-Type: application/x-ndjson' -X POST "$edge/v1/ingest/<dataset>" \
  --data-binary @events.ndjson | jq '{ingested, failed, failures}'
  • _time définit le timestamp de chaque événement. Sans cela, Axiom utilise l'heure d'ingestion.
  • Tout compte failed supérieur à 0 requiert une correction ; failures explique pourquoi.

4. Confirmer

curl "${H[@]}" -H 'Content-Type: application/json' -X POST "$edge/v1/query/_apl?format=tabular" \
  -d "{\"apl\": \"['<dataset>'] | count\"}" | jq '.tables[0].columns'

Les nouveaux événements peuvent prendre quelques secondes pour apparaître. Si la requête retourne HTTP 403, le token ne peut pas interroger ; rapportez le compte ingested de l'étape 3 à la place. Rapportez l'org, le dataset et le nombre d'événements. Si l'org est temporaire, donnez aussi l'URL de claim et l'expiration comme axiom-agent-created-orgs le décrit.

Skills similaires