Tutoriel : Archiver vos logs d’API
Ce tutoriel montre comment exporter des logs d’API soit localement, soit vers le service OUTSCALE Object Storage (OOS).
Vous pouvez désormais utiliser l’outil osc-logs pour exporter vos logs d’API. |
Créer un script pour la pagination des logs d’API
Ci-dessous, un exemple de script qui exécute ReadApiLogs avec pagination afin de récupérer tous les logs depuis une date donnée et de les sauvegarder ensuite dans un fichier CSV nommé logs.csv
.
Par défaut, le script marche avec Linux. Afin qu’il marche avec macOS, vous devez mettre en commentaire les deux lignes sous la ligne |
#!/bin/bash
# Exit when any command fails
set -e
# Usage: apilogs.sh [PROFILE] [YYYY-MM-DD]
profile=${1:-default}
# Linux: use $(date --date '2 weeks ago' +%F)
query_date_after=${2:-$(date --date '2 weeks ago' +%F)}
query_date_before=${2:-$(date +%F)}
# macOS/BSD: use $(date -v [+|-]val[ymwdHMS] +%F)
#query_date_after=${2:-$(date -v -2w +%F)}
#query_date_before=${2:-$(date +%F)}
next_page="null"
retrieve_apilogs(){
# Perform ReadApiLogs calls with/without page token
if [ "$next_page" = "null" ]; then
osc-cli --profile $profile api ReadApiLogs --Filters '{"QueryDateAfter":"'$query_date_after'","QueryDateBefore":"'$query_date_before'"}' > tmp_logs.json;
else
echo ">>> Retrieving new page" $next_page
osc-cli --profile $profile api ReadApiLogs --Filters '{"QueryDateAfter":"'$query_date_after'","QueryDateBefore":"'$query_date_before'"}' --NextPageToken $next_page > tmp_logs.json;
fi
# Concatenate selected fields from logs and save to CSV file
cat tmp_logs.json | jq -r '.Logs[] | [.RequestId, .AccountId, .QueryAccessKey, .ResponseStatusCode, .QueryCallName, .QueryIpAddress, .QueryDate, .QueryUserAgent] | @csv' >> logs.csv
# Check whether another page needs to be retrieved
next_page=$(cat tmp_logs.json | jq -r '.NextPageToken // "null"')
}
retrieve_apilogs
while [ "$next_page" != "null" ]; do
retrieve_apilogs
done
# Nicely display logs as columns with selected fields in shell
cat logs.csv | column -t -s ',' | tr -d '"'
# Cleanup
rm tmp_logs.json
Archiver vos logs API en local
Avant de commencer :
|
Vous pouvez exécuter le script précédent comme suit :
$ bash apilogs.sh PROFILE YYYY-MM-DD
où :
-
PROFILE
est le nom de votre profil OSC CLI (par défaut,default
). -
YYYY-MM-DD
est la date à partir de laquelle vous voulez récupérer les logs (par défaut, le script définit cette date à deux semaines auparavant). Le script récupère les logs depuis cette date jusqu’à aujourd’hui en utilisant cette date pour le paramètreQueryDateAfter
de ReadApiLogs et la date d’aujourd’hui pour le paramètreQueryDateBefore
.
Archiver vos logs API vers OOS
Avant de commencer :
|
Le service OUTSCALE Object Storage (OOS) vous permet de conserver à froid et de manière sécurisée des données sensibles. Il vous permet également de mutualiser l’accès à ces données.
Pour exporter vos logs d’API vers un bucket OOS, vous pouvez utiliser l’outil cron
, qui permet d’exécuter automatiquement des tâches à intervalles réguliers.
Linux
-
Ouvrez votre fichier de tâches
cron
avec la commande suivante :$ crontab -e
-
Dans le fichier, insérez une des lignes suivantes, puis enregistrez :
Pour un archivage quotidien0 0 * * * MDATE=$(date --date '1 day ago' +%F) ; bash readapilogs.sh default $MDATE ; aws s3api put-object --body logs.csv --bucket archives --key logs-$MDATE.csv ; rm logs.csv
Pour un archivage tous les 30 jours0 0 */30 * * MDATE=$(date --date '30 days ago' +%F) ; bash readapilogs.sh default $MDATE ; aws s3api put-object --body logs.csv --bucket archives --key logs-$MDATE.csv ; rm logs.csv
La tâche ainsi créée enregistre la réponse d’une requête ReadApiLogs dans un fichier temporaire, exporte le fichier temporaire vers le bucket, puis supprime le fichier temporaire.
macOS
-
Ouvrez votre fichier de tâches
cron
avec la commande suivante :$ crontab -e
-
Dans le fichier, insérez une des lignes suivantes, puis enregistrez :
Pour un archivage quotidien0 0 * * * MDATE=$(date -v -1d +%F) ; bash readapilogs.sh default $MDATE ; aws s3api put-object --body logs.csv --bucket archives --key logs-$MDATE.csv ; rm logs.csv
Pour un archivage tous les 30 jours0 0 */30 * * MDATE=$(date -v -30d +%F) ; bash readapilogs.sh default $MDATE ; aws s3api put-object --body logs.csv --bucket archives --key logs-$MDATE.csv ; rm logs.csv
La tâche ainsi créée enregistre la réponse d’une requête ReadApiLogs dans un fichier temporaire, exporte le fichier temporaire vers le bucket, puis supprime le fichier temporaire.
Pages connexes
Méthode API correspondante
AWS™ et Amazon Web Services™ sont des marques de commerce d'Amazon Technologies, Inc. ou de ses affiliées aux États-Unis et/ou dans les autres pays.