> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Instrumentation MongoDB

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Ruby", version: "1.0" }
]}
/>

La gem [Mongoid] repose sur le [Mongo Ruby Driver]. AppSignal active automatiquement l'instrumentation Mongo Ruby Driver s'il est détecté dans le projet.

L'instrumentation MongoDB d'AppSignal prend en charge la gem [Mongo Ruby Driver] et la gem [Mongoid] d'emblée ; aucune configuration manuelle n'est requise. Lorsqu'AppSignal détecte des métriques MongoDB, il créera un [Magic Dashboard](#magic-dashboard) vous permettant de surveiller visuellement les métriques principales.

## Surveillance des performances

Une fois qu'AppSignal commence à signaler les métriques MongoDB, AppSignal vous donnera des informations sur les performances via :

* [Chronologie des événements](#event-timeline)
* [Décomposition des échantillons](#sample-breakdown)
* [Requêtes lentes](#slow-queries)

### Chronologie des événements

La chronologie des événements vous donne des informations approfondies sur les performances des requêtes MongoDB, vous permettant de voir exactement quelles requêtes sont exécutées, quand et quel impact elles ont sur la réactivité de votre application.

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/ruby/integrations/mongodb/event-timeline.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=f3f8e02b4125bccc426dc388631ae24a" alt="Exemple de chronologie d'événements MongoDB" width="1314" height="680" data-path="assets/images/screenshots/ruby/integrations/mongodb/event-timeline.png" />

### Décomposition des échantillons

Les décompositions d'échantillons vous permettent d'examiner les performances de MongoDB en un coup d'œil, vous permettant de repérer rapidement les problèmes de performances sans avoir à plonger dans les détails.

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/ruby/integrations/mongodb/sample-breakdown.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=43404cce6c91f5d9162541884e9a1766" alt="Exemple d'échantillon de performance MongoDB" width="1310" height="430" data-path="assets/images/screenshots/ruby/integrations/mongodb/sample-breakdown.png" />

### Requêtes lentes

AppSignal dispose de toute une suite d'outils visant à vous aider à améliorer les performances de votre application. Les requêtes lentes constituent un aperçu simple et informatif des requêtes lentes de votre application et de l'impact qu'elles ont sur les performances de votre application, vous permettant de décider rapidement et en toute confiance des étapes nécessaires pour les optimiser.

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/ruby/integrations/mongodb/slow-queries.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=b08cf67361773c2cb5b900d8be3e6255" alt="Exemple de la fonctionnalité requêtes lentes AppSignal" width="2050" height="1030" data-path="assets/images/screenshots/ruby/integrations/mongodb/slow-queries.png" />

## Magic dashboard

Lorsque AppSignal reçoit des métriques MongoDB, il créera un magic dashboard MongoDB, disponible dans la section dashboard de l'application AppSignal.

Le magic dashboard MongoDB contiendra les graphiques suivants :

| Graphique                               | Métriques                | Tags       |
| --------------------------------------- | ------------------------ | ---------- |
| [Throughput](#throughput-graph)         | `mongodb_query_duration` | `database` |
| [Query duration](#query-duration-graph) | `mongodb_query_duration` | `database` |

Les tags vous offrent une décomposition contextuelle des informations de performance d'Active Job. Actuellement, AppSignal signale les tags suivants pour les jobs Active Job :

| Nom        | Description                                                                           |
| ---------- | ------------------------------------------------------------------------------------- |
| `database` | Nom de la base de données depuis laquelle les données de métriques sont enregistrées. |

Chaque tag sera représenté par une ligne colorée sur le graphique :

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/ruby/integrations/mongodb/dashboard.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=c1765eeec6ec674e68749b07af56a796" alt="Exemple de dashboard MongoDB" width="1432" height="672" data-path="assets/images/screenshots/ruby/integrations/mongodb/dashboard.png" />

### Graphique Throughput

Le graphique Throughput montre le nombre de requêtes exécutées sur chaque base de données MongoDB.

Vous pouvez utiliser ce graphique pour comprendre combien de requêtes les bases de données de votre application traitent, repérer les requêtes inefficaces et les problèmes potentiels de n+1 et de mise à l'échelle.

### Graphique Query duration

Le graphique Query duration montre le 95e centile et la durée moyenne des requêtes exécutées sur chaque base de données MongoDB.

Vous pouvez utiliser ce graphique pour comprendre les performances des requêtes de base de données, identifier les problèmes de performances et ajuster les requêtes lentes.

[Mongoid]: https://github.com/mongodb/mongoid

[Mongo Ruby Driver]: https://github.com/mongodb/mongo-ruby-driver
