> ## 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 do 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" }
]}
/>

A gem [Mongoid] depende do [Mongo Ruby Driver]. O AppSignal ativa a instrumentation do Mongo Ruby Driver automaticamente se for detectado no projeto.

A instrumentation do MongoDB do AppSignal suporta a gem [Mongo Ruby Driver] e a gem [Mongoid] prontamente; nenhuma configuração manual é necessária. Quando o AppSignal detecta métricas do MongoDB, ele criará um [Magic Dashboard](#magic-dashboard), permitindo que você monitore métricas principais visualmente.

## Performance monitoring

Uma vez que o AppSignal comece a reportar métricas do MongoDB, ele fornecerá insights de performance via:

* [Event timeline](#event-timeline)
* [Sample breakdown](#sample-breakdown)
* [Slow queries](#slow-queries)

### Event timeline

A event timeline fornece insights detalhados sobre a performance das queries do MongoDB, permitindo que você veja exatamente quais queries são executadas, quando, e qual impacto elas estão tendo na responsividade da sua aplicação.

<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="Exemplo de event timeline do MongoDB" width="1314" height="680" data-path="assets/images/screenshots/ruby/integrations/mongodb/event-timeline.png" />

### Sample breakdown

Os sample breakdowns permitem que você revise a performance do MongoDB rapidamente, possibilitando identificar rapidamente problemas de performance sem precisar se aprofundar nos detalhes.

<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="Exemplo de sample de performance do MongoDB" width="1310" height="430" data-path="assets/images/screenshots/ruby/integrations/mongodb/sample-breakdown.png" />

### Slow queries

O AppSignal possui uma suíte completa de ferramentas voltadas para ajudar você a melhorar a performance da sua aplicação. Slow queries é uma visão geral simples e informativa das slow queries da sua aplicação e do impacto que elas estão tendo na performance, permitindo que você decida rápida e confiantemente sobre as etapas necessárias para otimizá-las.

<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="Exemplo da funcionalidade de slow queries do AppSignal" width="2050" height="1030" data-path="assets/images/screenshots/ruby/integrations/mongodb/slow-queries.png" />

## Magic dashboard

Quando o AppSignal recebe métricas do MongoDB, ele criará um magic dashboard do MongoDB, disponível na seção de dashboard do app AppSignal.

O magic dashboard do MongoDB terá os seguintes gráficos:

| Gráfico                                 | Métricas                 | Tags       |
| --------------------------------------- | ------------------------ | ---------- |
| [Throughput](#throughput-graph)         | `mongodb_query_duration` | `database` |
| [Query duration](#query-duration-graph) | `mongodb_query_duration` | `database` |

As tags fornecem um detalhamento contextual das informações de performance do Active job; atualmente, o AppSignal reporta as seguintes tags para jobs do Active Job:

| Nome       | Descrição                                                           |
| ---------- | ------------------------------------------------------------------- |
| `database` | Nome do banco de dados de onde os dados da métrica são registrados. |

Cada tag será representada por uma linha colorida no gráfico:

<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="Exemplo de dashboard do MongoDB" width="1432" height="672" data-path="assets/images/screenshots/ruby/integrations/mongodb/dashboard.png" />

### Gráfico Throughput

O gráfico Throughput mostra a quantidade de queries executadas em cada banco de dados MongoDB.

Você pode usar este gráfico para entender quantas queries os bancos de dados do seu app estão lidando, identificar queries ineficientes e potenciais problemas de n+1 e escalabilidade.

### Gráfico Query duration

O gráfico Query duration mostra o percentil 95 e a duração média das queries executadas em cada banco de dados MongoDB.

Você pode usar este gráfico para entender a performance das queries no banco, identificar problemas de performance e ajustar slow queries.

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

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