Jira
InfraSage automatically creates Jira tickets when anomalies are detected, tracks their status, and transitions them as incidents progress through resolution.
Configuration
JIRA_API_TOKEN=your-jira-api-token
JIRA_DOMAIN=mycompany.atlassian.net
JIRA_USERNAME=ops@mycompany.com
JIRA_PROJECT_KEY=OPS
Generate a Jira API token at id.atlassian.com/manage-profile/security/api-tokens.
Automatic Ticket Creation
When InfraSage declares a high-severity anomaly, it creates a Jira issue:
| Field | Value |
|---|---|
| Project | Configured JIRA_PROJECT_KEY |
| Issue type | Bug (configurable) |
| Summary | [InfraSage] CPU anomaly on payment-api — score 0.93 |
| Priority | Mapped from anomaly score (see table below) |
| Description | Full RCA summary, blast radius, suggested actions, confidence score, link to InfraSage |
| Labels | infrasage, auto-generated, <service-id> |
| Custom fields | anomaly_id, service_id, root_cause_category |
Priority mapping
| Anomaly Score | Jira Priority |
|---|---|
| 0.4–0.6 | Medium |
| 0.6–0.8 | High |
| 0.8–1.0 | Critical |
Status Transitions
InfraSage automatically transitions Jira issues as incidents progress:
| Trigger | Jira Transition |
|---|---|
| Anomaly detected | Create issue (status: Open) |
| Runbook started | Transition to In Progress |
| Runbook completed | Add comment with execution result |
| Anomaly resolved | Transition to Resolved |
| Human resolves in PagerDuty | Transition to Done + add resolution note |
Configure your Jira transition IDs:
JIRA_TRANSITION_IN_PROGRESS=21
JIRA_TRANSITION_RESOLVED=31
JIRA_TRANSITION_DONE=41
Find transition IDs:
curl -u "$JIRA_USERNAME:$JIRA_API_TOKEN" \
"https://$JIRA_DOMAIN/rest/api/3/issue/OPS-123/transitions" | jq '.transitions[] | {id, name}'
Custom Fields
Map InfraSage fields to custom Jira fields:
JIRA_CUSTOM_FIELDS='{
"customfield_10001": "anomaly_id",
"customfield_10002": "service_id",
"customfield_10003": "root_cause_confidence"
}'
Linking to Existing Issues
If your team already tracks services in Jira, configure InfraSage to link new anomaly issues to a parent epic:
JIRA_PARENT_EPIC_KEY=OPS-100 # Existing epic for infrastructure incidents
Verification
After an anomaly is detected:
# Check Jira for recently created issues
curl -u "$JIRA_USERNAME:$JIRA_API_TOKEN" \
"https://$JIRA_DOMAIN/rest/api/3/search?jql=project=$JIRA_PROJECT_KEY+AND+labels=infrasage+ORDER+BY+created+DESC&maxResults=5" | \
jq '.issues[] | {key, summary: .fields.summary, status: .fields.status.name}'