From 630d99e191612d0065f4826f64d9d31abd0509c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Thu, 13 Jan 2022 19:25:28 +0100 Subject: [PATCH] feat(alertmanager): alert via irc --- systems/makanek/monitoring/default.nix | 68 ++++++++------------------ systems/makanek/weechat.nix | 5 +- 2 files changed, 24 insertions(+), 49 deletions(-) diff --git a/systems/makanek/monitoring/default.nix b/systems/makanek/monitoring/default.nix index 2fc5ab0..17bc397 100644 --- a/systems/makanek/monitoring/default.nix +++ b/systems/makanek/monitoring/default.nix @@ -113,48 +113,24 @@ in }]; })]; - systemd.services.alertmanager-bot-telegram = - let - alertmanager-bot-telegram = pkgs.buildGoModule rec { - pname = "alertmanager-bot"; - version = "2020-07-13"; - src = pkgs.fetchFromGitHub { - owner = "metalmatze"; - repo = "alertmanager-bot"; - rev = "5efc0bbbf8023d4324e9da98562f064a714a7206"; - sha256 = "09cciml1j8x76jpm2v5v6h2q6j1fkhsz1kswslmx8wl4wk40xgp4"; - }; - vendorSha256 = "1v0fgin8dn81b559zz4lqmrl7hikr46g4gb18sci4riql5qs1isj"; - postInstall = '' - install -D ./default.tmpl $out/templates/default.tmpl - ''; - }; - in { + systemd.services.alertmanager-irc = { wantedBy = [ "multi-user.target" ]; after = [ "ip-up.target" ]; - environment.TELEGRAM_ADMIN = "18980945"; - environment.TELEGRAM_TOKEN = lib.strings.fileContents ; serviceConfig = { DynamicUser = true; - StateDirectory = "alertbot"; - ExecStart = ''${alertmanager-bot-telegram}/bin/alertmanager-bot \ - --alertmanager.url=http://localhost:9093 --log.level=info \ - --store=bolt --bolt.path=/var/lib/alertbot/bot.db \ - --listen.addr="0.0.0.0:16320" \ - --template.paths=${pkgs.writeText "template.tmpl" '' - {{ define "telegram.default" }} - {{range .Alerts -}} - {{ if eq .Status "firing" }} - ⚠ {{ index .Annotations "summary"}} - {{ index .Annotations "description" }} - - See on Grafana: http://${config.services.grafana.domain}/d/alpUteInz/niveum - {{ else -}} - RESOLVED 😌 {{ index .Annotations "summary"}} - {{- end }} - {{end -}} - {{end}} - ''}''; + StateDirectory = "alert-irc"; + ExecStart = ''${pkgs.alertmanager-irc-relay}/bin/alertmanager-irc-relay \ + --config ${(pkgs.formats.yaml {}).generate "config.yaml" { + http_host = "0.0.0.0"; + http_port = 16330; + irc_host = "irc.r"; + irc_port = 6667; + irc_use_ssl = false; + irc_nickname = "niveum"; + irc_channels = [ { name = "#niveum"; } ]; + msg_template = ''{{ index .Annotations "summary" }} ({{ .Status }})''; + }} + ''; }; }; @@ -169,20 +145,16 @@ in }; receivers = [{ name = "me"; - webhook_configs = [{ - url = "http://localhost:16320"; - send_resolved = true; - }]; + webhook_configs = [ + { + url = "http://localhost:16330/niveum"; + send_resolved = true; + } + ]; }]; }; }; - services.prometheus.alertmanagers = [{ - scheme = "http"; - path_prefix = "/"; - static_configs = [ { targets = [ "localhost:9093" ]; } ]; - }]; - services.prometheus.scrapeConfigs = [ { job_name = "makanek"; diff --git a/systems/makanek/weechat.nix b/systems/makanek/weechat.nix index c54089a..08fc4f9 100644 --- a/systems/makanek/weechat.nix +++ b/systems/makanek/weechat.nix @@ -32,6 +32,9 @@ in { weechat = { look.mouse = true; color.chat_nick_colors = lib.lists.subtractLists (lib.range 52 69 ++ lib.range 231 248) (lib.range 31 254); + look.highlight_tags = [ + "irc_notice+nick_niveum" + ]; }; irc = { look = { @@ -79,7 +82,7 @@ in { retiolum = { autoconnect = true; address = "irc.r"; - autojoin = [ "#xxx" "#brockman" "#flix" "#autowifi" ]; + autojoin = [ "#xxx" "#brockman" "#flix" "#niveum" ]; command = lib.concatStringsSep "\\;" [ "/oper admin aidsballs" "/msg nickserv always-on true"