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

Das AppSignal-für-Elixir-Paket instrumentiert Jobs, die von [Oban](https://oban.pro)-Workern ausgeführt werden, und sammelt Metriken zur Performance Ihrer Jobs.

Oban ist ein Job-Queueing- und Verarbeitungssystem für Elixir, basierend auf PostgreSQL und Ecto. Sie können Oban verwenden, um Jobs zu planen, die im Hintergrund ausgeführt werden sollen.

## Automatische Instrumentierung

Die Oban-Unterstützung wird automatisch instrumentiert und erfordert keine Konfiguration.

Um die Oban-Instrumentierung zu deaktivieren, setzen Sie [die Konfigurationsoption `instrument_oban`](/elixir/configuration/options#option-instrument_oban) auf `false`.

<Note>
  🔎 Die Konfigurationsoption `instrument_oban` wurde in Version `2.5.1` der
  AppSignal-für-Elixir-Integration hinzugefügt.
</Note>

## Fehlerberichterstattung

Standardmäßig erstellt die Oban-Instrumentierung ein Fehler-Sample, wenn einer Ihrer Worker einen Job nicht verarbeiten kann, entweder durch Rückgabe eines `{:error, _}`-Tupels oder durch das Werfen einer Ausnahme.

Wenn Sie Fehler nur dann an AppSignal senden möchten, wenn der Fehlschlag dazu führt, dass der Job verworfen wird, d. h. sobald seine maximalen Wiederholungsversuche erreicht sind, setzen Sie [die Konfigurationsoption `report_oban_errors`](/elixir/configuration/options#option-report_oban_errors) auf `"discard"`. Setzen Sie sie auf `"none"`, um niemals Oban-Job-Fehler an AppSignal zu senden.

<Tip>
  Die Konfigurationsoption `report_oban_errors` wurde in Version `2.5.1` der
  AppSignal-für-Elixir-Integration hinzugefügt.

  Wenn Sie Oban-Version `2.3.1` oder niedriger verwenden, sind die Informationen über den Zustand
  des Jobs nicht verfügbar, und die Option `"discard"` verhält sich wie
  `"all"`.
</Tip>

## Performance- und Fehler-Samples

AppSignal erstellt Performance-Samples aus Jobs, die von Ihren Oban-Workern ausgeführt werden:

<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="Performance-Sample aus einer Oban-Job-Ausführung" width="1214" height="1322" data-path="assets/images/screenshots/elixir/integrations/oban/performance-sample.png" />

Es benachrichtigt auch über Fehler, die dazu führen, dass Ihre Worker einen Job nicht verarbeiten können:

<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="Fehler-Sample aus einer Oban-Job-Ausführung" width="1216" height="1344" data-path="assets/images/screenshots/elixir/integrations/oban/error-sample.png" />

Innerhalb der Performance- und Fehler-Samples enthalten die Tags Informationen über den Job:

* Job-ID, Queue, Worker und Priorität
* Anzahl früherer Versuche
* Job-Zustand und Ergebnis nach der Ausführung

Alle Tags oder Metadatenwerte, die dem Job hinzugefügt werden, sind ebenfalls als Tags im Sample vorhanden, sodass Sie die Samples nach einem bestimmten Tag filtern können.

Sie können auch sehen, wann ein Oban-Job in der Event-Timeline der Performance-Samples Ihrer Anwendung eingefügt wird:

<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="Event-Timeline mit einer Oban-Job-Einfügung" width="1164" height="478" data-path="assets/images/screenshots/elixir/integrations/oban/event-timeline.png" />

<Note>
  🔎 Einige Funktionen sind nur in bestimmten Oban-Versionen verfügbar:

  * **2.1.0+:** Tags
  * **2.3.1+:** Metadatenwerte und Job-Priorität
  * **2.4.0+:** Job-Zustand nach der Ausführung
  * **2.5.0+:** Job-Ergebnis nach der Ausführung
  * **2.11.0+:** Job-Einfügungs-Event

  Um alle oben beschriebenen Funktionen nutzen zu können, aktualisieren Sie auf die neueste Oban-Version.
</Note>

## Metriken

Zusätzlich zu den Performance- und Fehler-Samples sammelt AppSignal für Elixir Metriken zur Performance Ihrer Oban-Jobs:

* `oban_job_duration`: die Dauer der verarbeiteten Jobs, getaggt nach Worker, Queue und Status des Jobs.

* `oban_job_queue_time`: die Zeit, die Jobs in der Queue gewartet haben, getaggt nach Queue.

* `oban_job_count`: die Anzahl der verarbeiteten Jobs, getaggt nach Worker, Queue und Status des Jobs.

Mit diesen Metriken erstellt AppSignal automatisch das Oban-Magic-Dashboard, das wichtige Einblicke in die Performance Ihres Oban-Systems bietet:

<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 mit wichtigen Oban-Metriken" width="1830" height="1988" data-path="assets/images/screenshots/elixir/integrations/oban/magic-dashboard.png" />
