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}'
_timedéfinit le timestamp de chaque événement. Sans cela, Axiom utilise l'heure d'ingestion.- Tout compte
failedsupérieur à 0 requiert une correction ;failuresexplique 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.