Skip to content

Jira

The Jira integration opens an issue in your project when a monitor goes down. Available on the Enterprise plan.

  1. Create an API token at id.atlassian.com → API tokens.
  2. Note the project key (e.g. OPS) and the issue type you want (e.g. Task, Bug).
  3. In OKStatus, go to Alerting → Channels → Add a channel → Jira.
  4. Fill in:
    • Base URLhttps://your-team.atlassian.net
    • Account email — the Atlassian account the token belongs to
    • API token
    • Project key
    • Issue type (optional, defaults to Task)
    • Reuse & auto-resolve one ticket (optional checkbox — see below)
  5. Click Test, then attach the channel to your monitors.

By default the channel opens a new ticket every time a monitor goes down — which, for a monitor that flaps (down/up repeatedly), can flood your board. Enable Reuse & auto-resolve one ticket to instead keep a single ticket per monitor that tracks its state:

  • Down → opens a ticket (or, if one already exists, reopens/comments on it).
  • Up → transitions that ticket to a Done status.
  • Down again → reopens the same ticket instead of creating a new one.

So a monitor that flaps 30 times produces one ticket with 30 status changes, not 30 tickets.

How it works, and why it’s robust:

  • The ticket is found each time by a monitor-specific label (OKStatus never stores the issue key), so the behaviour is stateless.
  • Transitions are auto-detected from your project’s workflow (it picks a transition whose target status category is Done to resolve, or a non-Done one to reopen) — no status names to configure, works with custom workflows.
  • If an admin deletes the ticket entirely, the next down simply creates a fresh one (the label search finds nothing), and a recovery with no ticket is a safe no-op. Nothing breaks.
  • Authentication is Basic (email + API token), over the Jira REST API.
  • The created issue’s summary and description name the monitor, URL, region, and detection time.
  • Self-hosted Jira (Data Center) works — use its DNS name (a literal private IP is rejected).