148 lines
3.6 KiB
Plaintext
148 lines
3.6 KiB
Plaintext
{
|
|
_config+:: {
|
|
namespace: 'default',
|
|
|
|
versions+:: {
|
|
alertmanager: 'v0.21.0',
|
|
},
|
|
|
|
imageRepos+:: {
|
|
alertmanager: 'quay.io/prometheus/alertmanager',
|
|
},
|
|
|
|
alertmanager+:: {
|
|
name: 'main',
|
|
config: {
|
|
global: {
|
|
resolve_timeout: '5m',
|
|
},
|
|
inhibit_rules: [{
|
|
source_match: {
|
|
severity: 'critical',
|
|
},
|
|
target_match_re: {
|
|
severity: 'warning|info',
|
|
},
|
|
equal: ['namespace', 'alertname'],
|
|
}, {
|
|
source_match: {
|
|
severity: 'warning',
|
|
},
|
|
target_match_re: {
|
|
severity: 'info',
|
|
},
|
|
equal: ['namespace', 'alertname'],
|
|
}],
|
|
route: {
|
|
group_by: ['namespace'],
|
|
group_wait: '30s',
|
|
group_interval: '5m',
|
|
repeat_interval: '12h',
|
|
receiver: 'Default',
|
|
routes: [
|
|
{ receiver: 'Watchdog', match: { alertname: 'Watchdog' } },
|
|
{ receiver: 'Critical', match: { severity: 'critical' } },
|
|
],
|
|
},
|
|
receivers: [
|
|
{ name: 'Default' },
|
|
{ name: 'Watchdog' },
|
|
{ name: 'Critical' },
|
|
],
|
|
},
|
|
replicas: 3,
|
|
},
|
|
},
|
|
|
|
alertmanager+:: {
|
|
secret: {
|
|
apiVersion: 'v1',
|
|
kind: 'Secret',
|
|
type: 'Opaque',
|
|
metadata: {
|
|
name: 'alertmanager-' + $._config.alertmanager.name,
|
|
namespace: $._config.namespace,
|
|
},
|
|
stringData: {
|
|
'alertmanager.yaml': if std.type($._config.alertmanager.config) == 'object'
|
|
then
|
|
std.manifestYamlDoc($._config.alertmanager.config)
|
|
else
|
|
$._config.alertmanager.config,
|
|
},
|
|
},
|
|
|
|
serviceAccount: {
|
|
apiVersion: 'v1',
|
|
kind: 'ServiceAccount',
|
|
metadata: {
|
|
name: 'alertmanager-' + $._config.alertmanager.name,
|
|
namespace: $._config.namespace,
|
|
},
|
|
},
|
|
|
|
service: {
|
|
apiVersion: 'v1',
|
|
kind: 'Service',
|
|
metadata: {
|
|
name: 'alertmanager-' + $._config.alertmanager.name,
|
|
namespace: $._config.namespace,
|
|
labels: { alertmanager: $._config.alertmanager.name },
|
|
},
|
|
spec: {
|
|
ports: [
|
|
{ name: 'web', targetPort: 'web', port: 9093 },
|
|
],
|
|
selector: { app: 'alertmanager', alertmanager: $._config.alertmanager.name },
|
|
sessionAffinity: 'ClientIP',
|
|
},
|
|
},
|
|
|
|
serviceMonitor: {
|
|
apiVersion: 'monitoring.coreos.com/v1',
|
|
kind: 'ServiceMonitor',
|
|
metadata: {
|
|
name: 'alertmanager',
|
|
namespace: $._config.namespace,
|
|
labels: {
|
|
'k8s-app': 'alertmanager',
|
|
},
|
|
},
|
|
spec: {
|
|
selector: {
|
|
matchLabels: {
|
|
alertmanager: $._config.alertmanager.name,
|
|
},
|
|
},
|
|
endpoints: [
|
|
{ port: 'web', interval: '30s' },
|
|
],
|
|
},
|
|
},
|
|
|
|
alertmanager: {
|
|
apiVersion: 'monitoring.coreos.com/v1',
|
|
kind: 'Alertmanager',
|
|
metadata: {
|
|
name: $._config.alertmanager.name,
|
|
namespace: $._config.namespace,
|
|
labels: {
|
|
alertmanager: $._config.alertmanager.name,
|
|
},
|
|
},
|
|
spec: {
|
|
replicas: $._config.alertmanager.replicas,
|
|
version: $._config.versions.alertmanager,
|
|
image: $._config.imageRepos.alertmanager + ':' + $._config.versions.alertmanager,
|
|
nodeSelector: { 'kubernetes.io/os': 'linux' },
|
|
serviceAccountName: 'alertmanager-' + $._config.alertmanager.name,
|
|
securityContext: {
|
|
runAsUser: 1000,
|
|
runAsNonRoot: true,
|
|
fsGroup: 2000,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|