> ## 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.

# Oban

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 Elixir", version: "2.5.0" },
{ name: "Oban", version: "2.0" }
]}
/>

Le paquet AppSignal pour Elixir instrumente les jobs exécutés par les workers [Oban](https://oban.pro), et collecte des métriques sur les performances de vos jobs.

Oban est un système de mise en file d'attente et de traitement de jobs pour Elixir, basé sur PostgreSQL et Ecto. Vous pouvez utiliser Oban pour planifier des jobs à exécuter en arrière-plan.

## Instrumentation automatique

La prise en charge d'Oban est instrumentée automatiquement, sans configuration requise.

Pour désactiver l'instrumentation Oban, définissez [l'option de configuration `instrument_oban`](/elixir/configuration/options#option-instrument_oban) sur `false`.

<Note>
  🔎 L'option de configuration `instrument_oban` a été ajoutée dans la version `2.5.1` de
  l'intégration AppSignal pour Elixir.
</Note>

## Remontée des erreurs

Par défaut, l'instrumentation Oban créera un échantillon d'erreur chaque fois qu'un de vos workers échoue à traiter un job, soit en renvoyant un tuple `{:error, _}`, soit en levant une exception.

Si vous souhaitez n'envoyer des erreurs à AppSignal que lorsque l'échec fait que le job est rejeté, c'est-à-dire une fois qu'il a atteint son nombre maximal de tentatives, définissez [l'option de configuration `report_oban_errors`](/elixir/configuration/options#option-report_oban_errors) sur `"discard"`. Définissez-la sur `"none"` pour ne jamais envoyer d'erreurs de jobs Oban à AppSignal.

<Tip>
  L'option de configuration `report_oban_errors` a été ajoutée dans la version `2.5.1` de
  l'intégration AppSignal pour Elixir.

  Si vous utilisez Oban version `2.3.1` ou inférieure, l'information sur l'état du
  job n'est pas disponible, et l'option `"discard"` se comportera comme
  `"all"`.
</Tip>

## Échantillons de performance et d'erreur

AppSignal créera des échantillons de performance à partir des jobs exécutés par vos workers Oban :

<img src="https://mintcdn.com/appsignal-715f5a51/nF8c1Rwq1cS7b5hg/assets/images/screenshots/elixir/integrations/oban/performance-sample.png?fit=max&auto=format&n=nF8c1Rwq1cS7b5hg&q=85&s=621798315f06965a7add76e3394e2951" alt="Échantillon de performance issu d'une exécution de job Oban" width="1214" height="1322" data-path="assets/images/screenshots/elixir/integrations/oban/performance-sample.png" />

Il signalera également les erreurs qui font échouer vos workers lors du traitement d'un job :

<img src="https://mintcdn.com/appsignal-715f5a51/nF8c1Rwq1cS7b5hg/assets/images/screenshots/elixir/integrations/oban/error-sample.png?fit=max&auto=format&n=nF8c1Rwq1cS7b5hg&q=85&s=5f3981d36741d877d13392bb7ece39ed" alt="Échantillon d'erreur issu d'une exécution de job Oban" width="1216" height="1344" data-path="assets/images/screenshots/elixir/integrations/oban/error-sample.png" />

Dans les échantillons de performance et d'erreur, les tags contiendront des informations sur le job :

* ID, queue, worker et priorité du job
* Nombre de tentatives précédentes
* État du job et résultat après exécution

Tous les tags ou valeurs de métadonnées ajoutés au job seront également présents en tant que tags dans l'échantillon, vous permettant de filtrer les échantillons pour un tag spécifique.

Vous pourrez également voir quand un job Oban est inséré dans la timeline des événements des échantillons de performance de votre application :

<img src="https://mintcdn.com/appsignal-715f5a51/nF8c1Rwq1cS7b5hg/assets/images/screenshots/elixir/integrations/oban/event-timeline.png?fit=max&auto=format&n=nF8c1Rwq1cS7b5hg&q=85&s=4ba7ea26be30b29287edeef6b0e53545" alt="Timeline des événements montrant une insertion de job Oban" width="1164" height="478" data-path="assets/images/screenshots/elixir/integrations/oban/event-timeline.png" />

<Note>
  🔎 Certaines fonctionnalités ne sont disponibles que dans certaines versions d'Oban :

  * **2.1.0+ :** Tags
  * **2.3.1+ :** Valeurs de métadonnées et priorité du job
  * **2.4.0+ :** État du job après exécution
  * **2.5.0+ :** Résultat du job après exécution
  * **2.11.0+ :** Événement d'insertion du job

  Pour bénéficier de toutes les fonctionnalités décrites ci-dessus, mettez à jour vers la dernière version d'Oban.
</Note>

## Métriques

En plus des échantillons de performance et d'erreur, AppSignal pour Elixir collectera des métriques sur les performances de vos jobs Oban :

* `oban_job_duration` : la durée des jobs traités, taguée par le worker du job, la queue et le statut.

* `oban_job_queue_time` : le temps passé par les jobs à attendre dans la queue, tagué par queue.

* `oban_job_count` : la quantité de jobs traités, taguée par le worker du job, la queue et le statut.

À partir de ces métriques, AppSignal créera automatiquement le Magic Dashboard Oban, qui fournit des informations clés sur les performances de votre système Oban :

<img src="https://mintcdn.com/appsignal-715f5a51/nF8c1Rwq1cS7b5hg/assets/images/screenshots/elixir/integrations/oban/magic-dashboard.png?fit=max&auto=format&n=nF8c1Rwq1cS7b5hg&q=85&s=9772c0b582e542ca48ef609f26b96037" alt="Magic Dashboard affichant les principales métriques Oban" width="1830" height="1988" data-path="assets/images/screenshots/elixir/integrations/oban/magic-dashboard.png" />
