Skip to content

Commit

Permalink
chore: add prometheus and refactor (#43)
Browse files Browse the repository at this point in the history
* feat: add Prometheus client

* chore: use generics in silence command

* chore: use generics in silence_create commands

* chore: use generics in silence_list command

* chore: use generics in silence_delete command

* chore: fixed silencing via callback
  • Loading branch information
freak12techno authored Nov 3, 2024
1 parent 874ae6a commit e572d45
Show file tree
Hide file tree
Showing 14 changed files with 408 additions and 341 deletions.
17 changes: 17 additions & 0 deletions pkg/alertmanager/alertmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"fmt"
"io"
"main/pkg/config"
"main/pkg/constants"
"main/pkg/types"
"net/http"

Expand All @@ -29,6 +30,22 @@ func (g *Alertmanager) Enabled() bool {
return g.Config.User != "" && g.Config.Password != ""
}

func (g *Alertmanager) Name() string {
return "Alertmanager"
}

func (g *Alertmanager) GetUnsilencePrefix() string {
return constants.AlertmanagerUnsilencePrefix
}

func (g *Alertmanager) GetSilencePrefix() string {
return constants.AlertmanagerSilencePrefix
}

func (g *Alertmanager) GetMutesDurations() []string {
return g.Config.MutesDurations
}

func (g *Alertmanager) CreateSilence(silence types.Silence) (types.SilenceCreateResponse, error) {
url := g.RelativeLink("/api/v2/silences")
res := types.SilenceCreateResponse{}
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/alert_show.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func (a *App) HandleSingleAlert(c tele.Context) error {
return c.Reply("Usage: /alert <alert name>")
}

rules, err := a.Grafana.GetAllAlertingRules()
rules, err := a.GetAllAlertingRules()
if err != nil {
return c.Reply(fmt.Sprintf("Error querying alerts: %s", err))
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/alerts_firing.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ func (a *App) HandleListFiringAlerts(c tele.Context) error {
Str("text", c.Text()).
Msg("Got firing alerts query")

grafanaGroups, err := a.Grafana.GetGrafanaAlertingRules()
grafanaGroups, err := a.Grafana.GetAlertingRules()
if err != nil {
return c.Reply(fmt.Sprintf("Error querying alerts: %s", err))
}

prometheusGroups, err := a.Grafana.GetPrometheusAlertingRules()
prometheusGroups, err := a.Prometheus.GetAlertingRules()
if err != nil {
return c.Reply(fmt.Sprintf("Error querying alerts: %s", err))
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/alerts_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ func (a *App) HandleListAlerts(c tele.Context) error {
Str("text", c.Text()).
Msg("Got alerts query")

grafanaGroups, err := a.Grafana.GetGrafanaAlertingRules()
grafanaGroups, err := a.Grafana.GetAlertingRules()
if err != nil {
return c.Reply(fmt.Sprintf("Error querying alerts: %s", err))
}

prometheusGroups, err := a.Grafana.GetPrometheusAlertingRules()
prometheusGroups, err := a.Prometheus.GetAlertingRules()
if err != nil {
return c.Reply(fmt.Sprintf("Error querying alerts: %s", err))
}
Expand Down
27 changes: 16 additions & 11 deletions pkg/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"main/pkg/constants"
grafanaPkg "main/pkg/grafana"
loggerPkg "main/pkg/logger"
prometheusPkg "main/pkg/prometheus"
"main/pkg/templates"
"strings"
"time"
Expand All @@ -21,6 +22,7 @@ type App struct {
Config *configPkg.Config
Grafana *grafanaPkg.Grafana
Alertmanager *alertmanagerPkg.Alertmanager
Prometheus *prometheusPkg.Prometheus
TemplateManager *templates.TemplateManager
Logger *zerolog.Logger
Bot *tele.Bot
Expand All @@ -33,6 +35,7 @@ func NewApp(config *configPkg.Config, version string) *App {
logger := loggerPkg.GetLogger(config.Log)
grafana := grafanaPkg.InitGrafana(config.Grafana, logger)
alertmanager := alertmanagerPkg.InitAlertmanager(config.Alertmanager, logger)
prometheus := prometheusPkg.InitPrometheus(config.Prometheus, logger)
templateManager := templates.NewTemplateManager(timezone)

bot, err := tele.NewBot(tele.Settings{
Expand All @@ -56,6 +59,7 @@ func NewApp(config *configPkg.Config, version string) *App {
Logger: logger,
Grafana: grafana,
Alertmanager: alertmanager,
Prometheus: prometheus,
TemplateManager: templateManager,
Bot: bot,
Version: version,
Expand All @@ -72,19 +76,20 @@ func (a *App) Start() {
a.Bot.Handle("/alerts", a.HandleListAlerts)
a.Bot.Handle("/firing", a.HandleListFiringAlerts)
a.Bot.Handle("/alert", a.HandleSingleAlert)
a.Bot.Handle("/silences", a.HandleGrafanaListSilences)
a.Bot.Handle("/silence", a.HandleGrafanaNewSilence)
a.Bot.Handle("/unsilence", a.HandleGrafanaDeleteSilence)
a.Bot.Handle("/alertmanager_silences", a.HandleAlertmanagerListSilences)
a.Bot.Handle("/alertmanager_silence", a.HandleAlertmanagerNewSilence)
a.Bot.Handle("/alertmanager_unsilence", a.HandleAlertmanagerDeleteSilence)
a.Bot.Handle("/silences", a.HandleListSilences(a.Grafana))
a.Bot.Handle("/silence", a.HandleNewSilenceViaCommand(a.Grafana))
a.Bot.Handle("/unsilence", a.HandleDeleteSilenceViaCommand(a.Grafana))
a.Bot.Handle("/alertmanager_silences", a.HandleListSilences(a.Alertmanager))
a.Bot.Handle("/alertmanager_silence", a.HandleNewSilenceViaCommand(a.Alertmanager))
a.Bot.Handle("/alertmanager_unsilence", a.HandleDeleteSilenceViaCommand(a.Alertmanager))

// Callbacks
a.Bot.Handle("\f"+constants.GrafanaUnsilencePrefix, a.HandleGrafanaCallbackDeleteSilence)
a.Bot.Handle("\f"+constants.AlertmanagerUnsilencePrefix, a.HandleAlertmanagerCallbackDeleteSilence)
a.Bot.Handle("\f"+constants.AlertmanagerPrepareSilencePrefix, a.HandleAlertmanagerPrepareNewSilenceFromCallback)
a.Bot.Handle("\f"+constants.GrafanaSilencePrefix, a.HandleGrafanaCallbackNewSilence)
a.Bot.Handle("\f"+constants.AlertmanagerSilencePrefix, a.HandleAlertmanagerCallbackNewSilence)
a.Bot.Handle("\f"+constants.GrafanaUnsilencePrefix, a.HandleCallbackDeleteSilence(a.Grafana))
a.Bot.Handle("\f"+constants.AlertmanagerUnsilencePrefix, a.HandleCallbackDeleteSilence(a.Alertmanager))
a.Bot.Handle("\f"+constants.GrafanaPrepareSilencePrefix, a.HandlePrepareNewSilenceFromCallback(a.Grafana, a.Grafana))
a.Bot.Handle("\f"+constants.AlertmanagerPrepareSilencePrefix, a.HandlePrepareNewSilenceFromCallback(a.Alertmanager, a.Prometheus))
a.Bot.Handle("\f"+constants.GrafanaSilencePrefix, a.HandleCallbackNewSilence(a.Grafana, a.Grafana))
a.Bot.Handle("\f"+constants.AlertmanagerSilencePrefix, a.HandleCallbackNewSilence(a.Alertmanager, a.Prometheus))

a.Logger.Info().Msg("Telegram bot listening")

Expand Down
Loading

0 comments on commit e572d45

Please sign in to comment.