[pull] main from SigNoz:main - #946
Merged
Merged
Conversation
<!--A few plain bullets saying what changed and why, for a reviewer skimming it - not a wall of text, not a restatement of the diff, not generated boilerplate.--> #### Description Patch and Edit Rule APIs would call syncRuleStateWithTask instead of adding the task blindly, which is what the create API was doing. This PR fixes the incorrect call in the create API <!--Reference issues using `Closes #issue-number` to enable automatic closure on merge. --> #### Issues closed by this PR Closes SigNoz/pulse-pod#312
) #### Description Adds two Atlassian alert channels. Backend only — frontend is #12488; channels are created via the API. **Jira issues — `jira_configs`** - A firing alert creates a Jira Cloud issue; when the alert resolves, the issue is transitioned to done. A re-fire within 3 days reopens the same issue instead of creating a new one. 3 days is default but can be edited via frontend form. - The issue body is rich **Atlassian Document Format (ADF)**: a status panel, the rendered alert description, and deep-links back to SigNoz. - Re-fires keep the issue in sync (summary and description are refreshed), and every notification after the first — re-fire, resolve, reopen — also posts a **comment** carrying the same rich ADF snapshot, so the issue holds a full lifecycle timeline. - Per-rule custom notification templates (title/body) are honored, same as every other channel; multi-alert custom bodies render as divider-separated sections. - Auth is Atlassian email + API token; Atlassian **service accounts** also work (routed via the `api.atlassian.com` gateway automatically — the cloud id is resolved server-side and client-supplied values are ignored). Jira Cloud only. **JSM Ops alerts — `jsmops_configs`** - A firing alert opens a JSM Operations alert (the ex-Opsgenie alert product); resolve **closes** it. A fire after close opens a fresh alert — there is no reopen window. - Re-fires dedupe into the same alert and increment its count. The alert description keeps the first-fire snapshot; the value-over-time story lives in the notes. - Every fire and the resolve appends a **note** to the alert. JSM Ops notes support **plain text only** (they render neither HTML nor markdown), so notes use a new plain-text renderer with links flattened to `text (url)`. - The alert description supports JSM's **HTML subset**, rendered from the same markdown templates. - Auth is the JSM integration API key. No region/site config needed. **Also in this PR** - Unit tests for both config types, both notifiers, and the new ADF + plain-text renderers. - OpenAPI spec regenerated (adds `jsmops_configs`). #### Issues closed by this PR Closes SigNoz/pulse-pod#168 · Discussion: SigNoz/pulse-pod#169 #### Screenshots / Screen Recordings Jira alert issue: <img width="1171" height="739" alt="Screenshot 2026-08-18 at 12 49 31 PM" src="https://github.com/user-attachments/assets/1ec74757-5d4d-4534-a5ca-13bed07cce72" /> Jira issue comments as a timeline: <img width="1034" height="746" alt="Screenshot 2026-08-18 at 12 50 32 PM" src="https://github.com/user-attachments/assets/09afb687-b62b-4eb3-86ab-39489e38513e" /> JSM Ops alerts page look: <img width="1317" height="460" alt="Screenshot 2026-08-18 at 12 52 29 PM" src="https://github.com/user-attachments/assets/dd5a60b5-ea6c-49b7-afde-f3b2c72b178a" /> JSM Ops alerts main body + comment timeline ( comments only support plain text today ) : <img width="1323" height="784" alt="Screenshot 2026-08-18 at 12 53 10 PM" src="https://github.com/user-attachments/assets/871fb91c-307a-4c67-b2c4-bc9548506cbc" /> #### Additional Information Notes for reviewers: - Jira shadows upstream Alertmanager's `jira_configs` so our notifier handles it instead of upstream's; this needs a small dedupe in `PostableChannel.JSONSchema()` and leaves every other channel type untouched. - JSM Ops reuses the existing Opsgenie notifier; all new behaviour sits behind a single `advancedFeatures` flag, so plain Opsgenie is unchanged when it's off. - `send_resolved` defaults off for both channels, so resolve-time behaviour (Jira transition, JSM close + resolved note) needs it set on the channel; the frontend will send it on by default. - Notes are best-effort: a permanently-failed note (e.g. the first-fire note racing JSM's asynchronous alert create) is dropped with a warning instead of failing the whole notification. Nothing is lost — that first datapoint is already in the alert body; retryable failures (429) still retry. --------- Co-authored-by: Naman Verma <naman.verma@signoz.io>
#### Description This PR makes sure that the old migrations of quick filters are decoupled from types as they should and not imported. <!--Reference issues using `Closes #issue-number` to enable automatic closure on merge. --> Part of SigNoz/engineering-pod#5947
#### Description Adds the **Containers** section to the Kubernetes tab of Infrastructure Monitoring, breaking each pod down into the app and sidecar containers running inside it — which the Pods view rolls up into a single row — so you can tell which container in a pod is throttling, leaking memory or crash-looping. - Backed by `POST /api/v2/infra_monitoring/kube_containers` through the generated client. Filtering, grouping, time range, pagination, column customization and the instrumentation checks callout all come from the shared k8s entity framework, so this is mostly configuration rather than new machinery. - **List columns:** container name, pod, image:tag, kubectl-style status, readiness, restarts, CPU and memory usage plus request/limit utilization. Namespace, node, cluster and deployment sit behind the column selector. Grouped rows show per-status and per-readiness counts. - **Detail drawer:** ten `/v5/query_range` charts scoped to the single container, plus the logs, traces and events tabs. Events are scoped to the container's *pod*, since Kubernetes emits events per pod rather than per container. - A container's identity is the `(k8s.pod.uid, k8s.container.name)` pair — a container name alone repeats across replicas, and a container ID changes on every restart. Every other k8s entity is addressable by a single name, so the first commit widens `SelectedItemParams` with an optional container name, alongside the cluster and namespace slots that already serve that purpose. Columns and charts follow the descriptions in SigNoz/signoz.io#3644. #### Issues closed by this PR Closes SigNoz/engineering-pod#5547 #### Additional Information - Reviewed best commit by commit: identity foundation, then shared constants/helpers, then the entity itself. Each stands on its own.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )