Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

K8s native notification management with multi-tenancy support

License

NotificationsYou must be signed in to change notification settings

ClearTax/notification-manager

 
 

Repository files navigation

Overview

Notification Manager manages notifications in multi-tenant K8s environment. It receives alerts, cloud event, and others (such as auditing, k8s events)from different senders and then send notifications to various tenant receivers based on tenant label likenamespace oruser.

Supported senders includes:

  • Prometheus Alertmanager
  • Custom sender
  • Prometheus (Coming soon)
  • Cloud Event (Coming soon)

Supported receivers includes:

Architecture

Notification Manager usesReceiver andConfig CRDs to store notification configslike email, WeChat and slack. It also includes an operator to create and reconcileNotificationManagerCRD which watches allreceivers andconfigs, updates notification settings accordingly and sends notifications to users.

Architecture

Process

The incoming data (alert, cloud event and others) will cache in the cache firstly, then goes through steps such assilence, inhibit (coming soon),route,filter,aggregation, etc. Notifications will generate from data usingtemplate,then send to receivers andhistory webhook (if set).

Architecture

Silence

Silence is a straightforward way to simply mute notifications for a given time. It usesSilence CRD to definethe silence policy. If incoming data matches an active silence, no notifications will be sent out for that data.

Route

Route find all receivers the notifications will send to.There are two ways to determine which receivers the notifications will send to, one is viaRouter CRD,and the other is auto-matching via thenamespace label in the notification.

Usually the incoming data contains anamespace label, Notification Manager uses this label to decide which receiver to use for sending notifications:

  • For KubeSphere, Notification Manager will try to find tenants with the right to access the namespace fromsidecarand then find receivers withuser = xxx label.
  • For Kubernetes, Notification Manager will try to find receivers withnamespace = xxx label.

For data without anamespace label, for example alerts of node or kubelet, user can set up a receiver withtype = global label to receive notifications without anamespace label. A global receiver sends notifications for all notifications received regardless any label. A global receiver usually set for an admin role.

How the two methods work together is determined by theroutePolicy.

Filter

Filter filters the notifications sent to receivers. There are two ways to filter notifications. One is usingalertSelector in the receiver,the other is usingtenant silence.

Aggregation

Aggregation groups notifications bygroupLabels. Notifications in the same group will send together.

History

History is a webhook used to collect all notifications sent to receivers, it can be set viahistory.

QuickStart

Install

We assume you already have a Kubernetes cluster (v1.16+). You can install one usingKubeKey if you haven't.

Install with yaml

# Deploy CRDs and the Notification Manager Operator:kubectl apply -f https://github.com/kubesphere/notification-manager/releases/download/v2.5.2/bundle.yaml# Deploy default template:kubectl apply -f https://github.com/kubesphere/notification-manager/releases/download/v2.5.2/template.yaml# Deploy built-in language packs.kubectl apply -f https://github.com/kubesphere/notification-manager/releases/download/v2.5.2/zh-cn.yaml

Install with helm

helm install notification-manager --create-namespace -n kubesphere-monitoring-system https://github.com/kubesphere/notification-manager/releases/download/v2.5.2/notification-manager.tgz

Configure NotificationManager

NotificationManager CRD Defines the desired notification manager deployment. The Notification Manager Operatorensures a deployment meeting the resource requirements is running.

We should create a NotificationManager CR first, skip this when using helm install.

kubectl apply -f https://github.com/kubesphere/notification-manager/releases/download/v2.5.2/notification_manager.yaml

Configure sender

Notification Manager uses port19093 and API path/api/v2/alerts to receive alerts sent from Alertmanager.

Config Alertmanager to send alerts to Notification Manager

To receive Alertmanager alerts, add webhook config like below to thereceivers section of Alertmanager configuration file:

"receivers":     -"name":"notification-manager""webhook_configs":       -"url":"http://notification-manager-svc.kubesphere-monitoring-system.svc:19093/api/v2/alerts"

Customize sender

Below is the data structure passed to the notification manager, please refer toData for more details.

{"alerts":[{"status":"firing","labels":{"alertname":"KubePodCrashLooping","container":"busybox-3jb7u6","instance":"10.233.71.230:8080","job":"kube-state-metrics","namespace":"pp1","pod":"dd1-0","prometheus":"kubesphere-monitoring-system/k8s","severity":"critical"},"annotations":{"message":"Pod pp1/dd1-0 (busybox-3jb7u6) is restarting 1.07 times / 5 minutes.",},"startsAt":"2020-02-26T07:05:04.989876849Z","endsAt":"0001-01-01T00:00:00Z",}],}

A custom senders can send notifications using notification manager simply by sending data tohttp://notification-manager-svc.kubesphere-monitoring-system.svc:19093/api/v2/alerts.

Create receiver and config

Now it's time to create the receiver and config to receive notifications, you can find guides to create them inreceiver andconfig.

Customize template

To customize the notification template, please refer totemplate.

Development

# Build notification-manager-operator and notification-manager docker imagesmake build # Push built docker images to docker registrymake push

Documentation

About

K8s native notification management with multi-tenancy support

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go90.5%
  • Shell6.3%
  • Makefile1.7%
  • Dockerfile1.3%
  • Smarty0.2%

[8]ページ先頭

©2009-2025 Movatter.jp