mirror of
https://github.com/SigNoz/signoz.git
synced 2026-03-16 18:02:09 +00:00
Some checks failed
build-staging / prepare (push) Has been cancelled
build-staging / js-build (push) Has been cancelled
build-staging / go-build (push) Has been cancelled
build-staging / staging (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
* chore: upgrade prometheus/common to latest available version * chore: upgrade prometheus/prometheus to latest available version * chore: easy changes first * chore: slightly unsure changes * fix: correct imported version of semconv in sdk.go * test: ut fix, just matched expected and actual nothing else * test: ut fix, just matched expected and actual nothing else * test: ut fix, just matched expected and actual nothing else * test: ut fix, just matched expected and actual nothing else * test: ut fix, pass no nil prometheus registry * chore: upgrade go version in dockerfile to 1.25 * chore: no need for our own alert store callback * chore: 1.25 bullseye is still an rc so shifting to bookworm * fix: parallel calls for each query in readmultiple method * chore: remove unused var * Sync PagerDuty frontend defaults with Alertmanager v0.31 Applied via @cursor push command * chore: make ctx the first param --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
449 lines
10 KiB
TypeScript
449 lines
10 KiB
TypeScript
import { EmailChannel, OpsgenieChannel, PagerChannel } from './config';
|
|
|
|
export const PagerInitialConfig: Partial<PagerChannel> = {
|
|
description: `[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}
|
|
{{- if gt (len .CommonLabels) (len .GroupLabels) -}}
|
|
{{" "}}(
|
|
{{- with .CommonLabels.Remove .GroupLabels.Names }}
|
|
{{- range $index, $label := .SortedPairs -}}
|
|
{{ if $index }}, {{ end }}
|
|
{{- $label.Name }}="{{ $label.Value -}}"
|
|
{{- end }}
|
|
{{- end -}}
|
|
)
|
|
{{- end }}`,
|
|
severity: '{{ (index .Alerts 0).Labels.severity }}',
|
|
client: 'SigNoz Alert Manager',
|
|
client_url: 'https://enter-signoz-host-n-port-here/alerts',
|
|
details: JSON.stringify({
|
|
firing: `{{ .Alerts.Firing | toJson }}`,
|
|
resolved: `{{ .Alerts.Resolved | toJson }}`,
|
|
num_firing: '{{ .Alerts.Firing | len }}',
|
|
num_resolved: '{{ .Alerts.Resolved | len }}',
|
|
}),
|
|
};
|
|
|
|
export const OpsgenieInitialConfig: Partial<OpsgenieChannel> = {
|
|
message: '{{ .CommonLabels.alertname }}',
|
|
description: `{{ if gt (len .Alerts.Firing) 0 -}}
|
|
Alerts Firing:
|
|
{{ range .Alerts.Firing }}
|
|
- Message: {{ .Annotations.description }}
|
|
Labels:
|
|
{{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }}
|
|
{{ end }} Annotations:
|
|
{{ range .Annotations.SortedPairs }} - {{ .Name }} = {{ .Value }}
|
|
{{ end }} Source: {{ .GeneratorURL }}
|
|
{{ end }}
|
|
{{- end }}
|
|
{{ if gt (len .Alerts.Resolved) 0 -}}
|
|
Alerts Resolved:
|
|
{{ range .Alerts.Resolved }}
|
|
- Message: {{ .Annotations.description }}
|
|
Labels:
|
|
{{ range .Labels.SortedPairs }} - {{ .Name }} = {{ .Value }}
|
|
{{ end }} Annotations:
|
|
{{ range .Annotations.SortedPairs }} - {{ .Name }} = {{ .Value }}
|
|
{{ end }} Source: {{ .GeneratorURL }}
|
|
{{ end }}
|
|
{{- end }}`,
|
|
priority:
|
|
'{{ if eq (index .Alerts 0).Labels.severity "critical" }}P1{{ else if eq (index .Alerts 0).Labels.severity "warning" }}P2{{ else if eq (index .Alerts 0).Labels.severity "info" }}P3{{ else }}P4{{ end }}',
|
|
};
|
|
|
|
export const EmailInitialConfig: Partial<EmailChannel> = {
|
|
send_resolved: true,
|
|
html: `<!--
|
|
Credits: https://github.com/mailgun/transactional-email-templates
|
|
-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta name="viewport" content="width=device-width" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
<title>{{ template "__subject" . }}</title>
|
|
<style>
|
|
|
|
/* -------------------------------------
|
|
GLOBAL
|
|
A very basic CSS reset
|
|
------------------------------------- */
|
|
* {
|
|
margin: 0;
|
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
box-sizing: border-box;
|
|
font-size: 14px;
|
|
}
|
|
|
|
img {
|
|
max-width: 100%;
|
|
}
|
|
|
|
body {
|
|
-webkit-font-smoothing: antialiased;
|
|
-webkit-text-size-adjust: none;
|
|
width: 100% !important;
|
|
height: 100%;
|
|
line-height: 1.6em;
|
|
/* 1.6em * 14px = 22.4px, use px to get airier line-height also in Thunderbird, and Yahoo!, Outlook.com, AOL webmail clients */
|
|
/*line-height: 22px;*/
|
|
}
|
|
|
|
/* Let's make sure all tables have defaults */
|
|
table td {
|
|
vertical-align: top;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
BODY & CONTAINER
|
|
------------------------------------- */
|
|
body {
|
|
background-color: #f6f6f6;
|
|
}
|
|
|
|
.body-wrap {
|
|
background-color: #f6f6f6;
|
|
width: 100%;
|
|
}
|
|
|
|
.container {
|
|
display: block !important;
|
|
max-width: 600px !important;
|
|
margin: 0 auto !important;
|
|
/* makes it centered */
|
|
clear: both !important;
|
|
}
|
|
|
|
.content {
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
display: block;
|
|
padding: 20px;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
HEADER, FOOTER, MAIN
|
|
------------------------------------- */
|
|
.main {
|
|
background-color: #fff;
|
|
border: 1px solid #e9e9e9;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.content-wrap {
|
|
padding: 30px;
|
|
}
|
|
|
|
.content-block {
|
|
padding: 0 0 20px;
|
|
}
|
|
|
|
.header {
|
|
width: 100%;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.footer {
|
|
width: 100%;
|
|
clear: both;
|
|
color: #999;
|
|
padding: 20px;
|
|
}
|
|
|
|
.footer p,
|
|
.footer a,
|
|
.footer td {
|
|
color: #999;
|
|
font-size: 12px;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
TYPOGRAPHY
|
|
------------------------------------- */
|
|
h1,
|
|
h2,
|
|
h3 {
|
|
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
|
color: #000;
|
|
margin: 40px 0 0;
|
|
line-height: 1.2em;
|
|
font-weight: 400;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 32px;
|
|
font-weight: 500;
|
|
/* 1.2em * 32px = 38.4px, use px to get airier line-height also in Thunderbird, and Yahoo!, Outlook.com, AOL webmail clients */
|
|
/*line-height: 38px;*/
|
|
}
|
|
|
|
h2 {
|
|
font-size: 24px;
|
|
/* 1.2em * 24px = 28.8px, use px to get airier line-height also in Thunderbird, and Yahoo!, Outlook.com, AOL webmail clients */
|
|
/*line-height: 29px;*/
|
|
}
|
|
|
|
h3 {
|
|
font-size: 18px;
|
|
/* 1.2em * 18px = 21.6px, use px to get airier line-height also in Thunderbird, and Yahoo!, Outlook.com, AOL webmail clients */
|
|
/*line-height: 22px;*/
|
|
}
|
|
|
|
h4 {
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
p,
|
|
ul,
|
|
ol {
|
|
margin-bottom: 10px;
|
|
font-weight: normal;
|
|
}
|
|
|
|
p li,
|
|
ul li,
|
|
ol li {
|
|
margin-left: 5px;
|
|
list-style-position: inside;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
LINKS & BUTTONS
|
|
------------------------------------- */
|
|
a {
|
|
color: #348eda;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.btn-primary {
|
|
text-decoration: none;
|
|
color: #FFF;
|
|
background-color: #348eda;
|
|
border: solid #348eda;
|
|
border-width: 10px 20px;
|
|
line-height: 2em;
|
|
/* 2em * 14px = 28px, use px to get airier line-height also in Thunderbird, and Yahoo!, Outlook.com, AOL webmail clients */
|
|
/*line-height: 28px;*/
|
|
font-weight: bold;
|
|
text-align: center;
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
border-radius: 5px;
|
|
text-transform: capitalize;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
OTHER STYLES THAT MIGHT BE USEFUL
|
|
------------------------------------- */
|
|
.last {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.first {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.aligncenter {
|
|
text-align: center;
|
|
}
|
|
|
|
.alignright {
|
|
text-align: right;
|
|
}
|
|
|
|
.alignleft {
|
|
text-align: left;
|
|
}
|
|
|
|
.clear {
|
|
clear: both;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
ALERTS
|
|
Change the class depending on warning email, good email or bad email
|
|
------------------------------------- */
|
|
.alert {
|
|
font-size: 16px;
|
|
color: #fff;
|
|
font-weight: 500;
|
|
padding: 20px;
|
|
text-align: center;
|
|
border-radius: 3px 3px 0 0;
|
|
}
|
|
|
|
.alert a {
|
|
color: #fff;
|
|
text-decoration: none;
|
|
font-weight: 500;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.alert.alert-warning {
|
|
background-color: #E6522C;
|
|
}
|
|
|
|
.alert.alert-bad {
|
|
background-color: #D0021B;
|
|
}
|
|
|
|
.alert.alert-good {
|
|
background-color: #68B90F;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
INVOICE
|
|
Styles for the billing table
|
|
------------------------------------- */
|
|
.invoice {
|
|
margin: 40px auto;
|
|
text-align: left;
|
|
width: 80%;
|
|
}
|
|
|
|
.invoice td {
|
|
padding: 5px 0;
|
|
}
|
|
|
|
.invoice .invoice-items {
|
|
width: 100%;
|
|
}
|
|
|
|
.invoice .invoice-items td {
|
|
border-top: #eee 1px solid;
|
|
}
|
|
|
|
.invoice .invoice-items .total td {
|
|
border-top: 2px solid #333;
|
|
border-bottom: 2px solid #333;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* -------------------------------------
|
|
RESPONSIVE AND MOBILE FRIENDLY STYLES
|
|
------------------------------------- */
|
|
@media only screen and (max-width: 640px) {
|
|
body {
|
|
padding: 0 !important;
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4 {
|
|
font-weight: 800 !important;
|
|
margin: 20px 0 5px !important;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 22px !important;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 18px !important;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 16px !important;
|
|
}
|
|
|
|
.container {
|
|
padding: 0 !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
.content {
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.content-wrap {
|
|
padding: 10px !important;
|
|
}
|
|
|
|
.invoice {
|
|
width: 100% !important;
|
|
}
|
|
}
|
|
|
|
</style>
|
|
</head>
|
|
<body itemscope itemtype="http://schema.org/EmailMessage">
|
|
<table class="body-wrap">
|
|
<tr>
|
|
<td></td>
|
|
<td class="container" width="600">
|
|
<div class="content">
|
|
<table class="main" width="100%" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
{{ if gt (len .Alerts.Firing) 0 }}
|
|
<td class="alert alert-warning">
|
|
{{ else }}
|
|
<td class="alert alert-good">
|
|
{{ end }}
|
|
{{ .Alerts | len }} alert{{ if gt (len .Alerts) 1 }}s{{ end }} for {{ range .GroupLabels.SortedPairs }}
|
|
{{ .Name }}={{ .Value }}
|
|
{{ end }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="content-wrap">
|
|
<table width="100%" cellpadding="0" cellspacing="0">
|
|
{{ if gt (len .Alerts.Firing) 0 }}
|
|
<tr>
|
|
<td class="content-block">
|
|
<strong>[{{ .Alerts.Firing | len }}] Firing</strong>
|
|
</td>
|
|
</tr>
|
|
{{ end }}
|
|
{{ range .Alerts.Firing }}
|
|
<tr>
|
|
<td class="content-block">
|
|
<strong>Labels</strong><br />
|
|
{{ range .Labels.SortedPairs }}{{ .Name }} = {{ .Value }}<br />{{ end }}
|
|
{{ if gt (len .Annotations) 0 }}<strong>Annotations</strong><br />{{ end }}
|
|
{{ range .Annotations.SortedPairs }}{{ .Name }} = {{ .Value }}<br />{{ end }}
|
|
<a href="{{ .GeneratorURL }}">Source</a><br />
|
|
</td>
|
|
</tr>
|
|
{{ end }}
|
|
{{ if gt (len .Alerts.Resolved) 0 }}
|
|
{{ if gt (len .Alerts.Firing) 0 }}
|
|
<tr>
|
|
<td class="content-block">
|
|
<br />
|
|
<hr />
|
|
<br />
|
|
</td>
|
|
</tr>
|
|
{{ end }}
|
|
<tr>
|
|
<td class="content-block">
|
|
<strong>[{{ .Alerts.Resolved | len }}] Resolved</strong>
|
|
</td>
|
|
</tr>
|
|
{{ end }}
|
|
{{ range .Alerts.Resolved }}
|
|
<tr>
|
|
<td class="content-block">
|
|
<strong>Labels</strong><br />
|
|
{{ range .Labels.SortedPairs }}{{ .Name }} = {{ .Value }}<br />{{ end }}
|
|
{{ if gt (len .Annotations) 0 }}<strong>Annotations</strong><br />{{ end }}
|
|
{{ range .Annotations.SortedPairs }}{{ .Name }} = {{ .Value }}<br />{{ end }}
|
|
<a href="{{ .GeneratorURL }}">Source</a><br />
|
|
</td>
|
|
</tr>
|
|
{{ end }}
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>`,
|
|
};
|