Recueillir des métriques custom MongoDB
Présentation
Pour recueillir des métriques custom avec l’intégration Datadog/MongoDB, utilisez l’option custom_queries
dans le fichier conf.d/mongo.d/conf.yaml
à la racine du répertoire de configuration de votre Agent. Consultez le fichier d’exemple mongo.d/conf.yaml pour en savoir plus.
Configuration
custom_queries
dispose des options suivantes :
metric_prefix
: chaque métrique commence par le préfixe défini.query
: il s’agit de la requête Mongo runCommand à exécuter en tant qu’objet JSON. Remarque : l’Agent prend uniquement en charge les requêtes count
, find
et aggregates
.database
: Il s’agit de la base de données MongoDB à partir de laquelle les métriques sont collectées.fields
: option ignorée pour les requêtes count
. Il s’agit d’une liste représentant chaque champ sans aucun ordre spécifique. Ignore les champs non spécifiés et manquants. Chaque fields
doit comporter trois informations :field_name
: le nom du champ à partir duquel récupérer les données.name
: le suffixe ajouté à la valeur metric_prefix pour former le nom complet de la métrique. Si le type
est tag
, cette colonne est traitée en tant que tag et appliquée à chaque métrique recueillie par cette requête spécifique.type
: la méthode d’envoi (gauge
, count
, rate
, etc.). Cette option peut également être définie sur tag
pour ajouter chaque métrique à la ligne avec le nom et la valeur de l’élément dans cette colonne. Vous pouvez utiliser le type count
pour effectuer une agrégation pour les requêtes qui renvoient plusieurs lignes avec les mêmes tags ou sans aucun tag.
tags
: la liste de tags à appliquer à chaque métrique (tel que spécifié ci-dessus).count_type
: pour des requêtes count
uniquement. Il s’agit de la méthode d’envoi (gauge
, count
, rate
, etc.) du résultat du count. Option ignorée pour les requêtes autres que count.
Exemples
Pour les exemples ci-dessous, la méthode de collecte Mongo user_collection
est utilisée :
{ name: "foo", id: 12345, active: true, age:45, is_admin: true}
{ name: "bar", id: 67890, active: false, age:25, is_admin: true}
{ name: "foobar", id: 16273, active: true, age:35, is_admin: false}
Choisissez le type de requête pour lequel vous souhaitez voir un exemple :
Pour surveiller le nombre d’utilisateurs actifs à un moment donné, voici la commande count Mongo à utiliser :
db.runCommand( {count: user_collection, query: {active:true}})
Cela correspond à la configuration YAML custom_queries
suivante dans votre fichier mongo.d/conf.yaml
:
custom_queries:
- metric_prefix: mongo.users
query: {"count": "user_collection", "query": {"active":"true"}}
count_type: gauge
tags:
- user:active
Cela génère une métrique gauge
mongo.users
avec le tag user:active
.
Remarque : le type de métrique est défini sur gauge
.
Pour surveiller l’âge des utilisateurs, utilisez la commande find Mongo suivante :
db.runCommand( {find: user_collection, filter: {active:true} )
Cela correspond à la configuration YAML custom_queries
suivante dans votre fichier mongo.d/conf.yaml
:
custom_queries:
- metric_prefix: mongo.example2
query: {"find": "user_collection", "filter": {"active":"true"}}
fields:
- field_name: name
name: name
type: tag
- field_name: age
name: user.age
type: gauge
Cela génère une métrique gauge
mongo.example2.user.age
avec deux tags : name:foo
et name:foobar
.
Remarque : le type de métrique est défini sur gauge
.
Pour surveiller l’âge moyen d’un administrateur et d’un utilisateur non-administrateur, utilisez la commande aggregate Mongo suivante :
db.runCommand(
{
'aggregate': "user_collection",
'pipeline': [
{"$match": {"active": "true"}},
{"$group": {"_id": "$is_admin", "age_avg": {"$avg": "$age"}}}
],
'cursor': {}
}
)
Cela correspond à la configuration YAML custom_queries
suivante dans votre fichier mongo.d/conf.yaml
:
custom_queries:
- metric_prefix: mongo.example3
query: {"aggregate": "user_collection","pipeline": [{"$match": {"active": "true"}},{"$group": {"_id": "$is_admin", "age_avg": {"$avg": "$age"}}}],"cursor": {}}
fields:
- field_name: age_avg
name: user.age
type: gauge
- field_name: _id
name: is_admin
type: tag
tags:
- test:mongodb
Cela génère une métrique gauge
mongo.example3.user.age
avec deux tags : is_admin:true
et is_admin:false
. Ces tags représentent l’âge moyen des utilisateurs pour chaque rôle.
Remarque : après avoir mis à jour le fichier YAML Mongo, redémarrez l’Agent Datadog.
Validation
Pour vérifier le résultat, recherchez les métriques à l’aide du Metrics Explorer.
Debugging
Lancez la sous-commande status de l’Agent et cherchez mongo
dans la section Checks. Par ailleurs, les logs de l’Agent peuvent également fournir des informations utiles.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: