IRC bot that sends grafana alerts to IRC Planned Features:
Bot stuff
-
connect to IRC (SASL preferred)
-
IRC commands:
-
alert rate [alertname] [duration]
: set a rate limit on an alert -
alert mute alertname [duration]
: mute an alert for a certain period of time [ ] default value for mute duration? -
alert unmute alertname
: unmute a currently muted alert (same asalert mute alertname 0m
) -
alert list
list alerts which are muted -
alert info alertname
: report current [mute, last seen, rate limit] record -
join / part channel, defaults to current channel if none given
-
quit command
-
-
IRC command to temporarily mute bot for a period of time.
-
possible format request: 10h10m30s etc (supported up to hours. Days+ not supported)
-
Authentication based on who has +o, +a, etc
-
Autojoin channels
-
reports firing alerts on channel
Graphana stuff
- Host simple web endpoint to receive JSON post requests ( to receive an alert from grafana )
- JSON parsing of alerts
- Rate Limiting: Determine if the alert has been reported within configurable time window. If not, report to IRC.
- Rate Limiting duration configurable per alert.
- default, global rate limit
Other
- connect to postgresQL to store IRC bot settings(blacklist)
- take startup configs (IRC server, username, password) from a yaml file
- Dockerize
Notes: Alerts should have:
- Alert_name
- Rate_limit ( eg, report only every 15m )
- Mute_until: timestamp, stored as unix timestamp.
- Last_seen : last time we observed this alert
- Last_reported : last time we reported ( subject to mute / rate limits )