Skip to content

Commit

Permalink
feat: refactor /render to allow choosing dashboard and panel (#63)
Browse files Browse the repository at this point in the history
* feat: refactor /render to allow choosing dashboard and panel

* chore: add tests

* chore: delete previous message correctly and refactor
  • Loading branch information
freak12techno authored Nov 18, 2024
1 parent a0c3107 commit a00e12f
Show file tree
Hide file tree
Showing 18 changed files with 1,198 additions and 75 deletions.
27 changes: 26 additions & 1 deletion assets/alertmanager-silences-ok.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
{
"id": "af780078-c86b-4c0d-bfbb-3edd72922f6c",
"status": {
"state": "expired"
"state": "active"
},
"updatedAt": "2024-10-30T18:31:08.944Z",
"comment": "Muted using grafana-interacter for 300h0m0s by Sergey | 🐹 Quokka Stake",
Expand Down Expand Up @@ -238,5 +238,30 @@
}
],
"startsAt": "2024-10-31T17:26:00.184Z"
},
{
"id": "af780078-c86b-4c0d-bfbb-3edd72922f6d",
"status": {
"state": "expired"
},
"updatedAt": "2024-10-30T18:31:08.944Z",
"comment": "Muted using grafana-interacter for 300h0m0s by Sergey | 🐹 Quokka Stake",
"createdBy": "Sergey | 🐹 Quokka Stake",
"endsAt": "2024-11-12T10:01:08.933+03:30",
"matchers": [
{
"isEqual": true,
"isRegex": false,
"name": "network",
"value": "pion"
},
{
"isEqual": true,
"isRegex": false,
"name": "alertname",
"value": "CosmosNodeNotLatestBinary"
}
],
"startsAt": "2024-10-30T18:31:08.944Z"
}
]
23 changes: 23 additions & 0 deletions assets/grafana-dashboards-ok-single.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[
{
"id": 9,
"uid": "alertmanager",
"title": "Alertmanager",
"uri": "db/alertmanager",
"url": "/d/alertmanager/alertmanager",
"slug": "",
"type": "dash-db",
"tags": [
"alerting",
"alertmanager",
"prometheus"
],
"isStarred": false,
"folderId": 8,
"folderUid": "df50f3d7-0010-488e-a4c7-9c512faed337",
"folderTitle": "monitoring",
"folderUrl": "/dashboards/f/df50f3d7-0010-488e-a4c7-9c512faed337/monitoring",
"sortMeta": 0,
"isDeleted": false
}
]
24 changes: 1 addition & 23 deletions assets/grafana-dashboards-ok.json
Original file line number Diff line number Diff line change
@@ -1,23 +1 @@
[
{
"id": 9,
"uid": "alertmanager",
"title": "Alertmanager",
"uri": "db/alertmanager",
"url": "/d/alertmanager/alertmanager",
"slug": "",
"type": "dash-db",
"tags": [
"alerting",
"alertmanager",
"prometheus"
],
"isStarred": false,
"folderId": 8,
"folderUid": "df50f3d7-0010-488e-a4c7-9c512faed337",
"folderTitle": "monitoring",
"folderUrl": "/dashboards/f/df50f3d7-0010-488e-a4c7-9c512faed337/monitoring",
"sortMeta": 0,
"isDeleted": false
}
]
[{"id":9,"uid":"alertmanager","title":"Alertmanager","uri":"db/alertmanager","url":"/d/alertmanager/alertmanager","slug":"","type":"dash-db","tags":["alerting","alertmanager","prometheus"],"isStarred":false,"folderId":8,"folderUid":"df50f3d7-0010-488e-a4c7-9c512faed337","folderTitle":"monitoring","folderUrl":"/dashboards/f/df50f3d7-0010-488e-a4c7-9c512faed337/monitoring","sortMeta":0,"isDeleted":false},{"id":19,"uid":"balances","title":"balances","uri":"db/balances","url":"/d/balances/balances","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":18,"folderUid":"ae55fbf5-ba17-4c4b-a730-486b7a52bd66","folderTitle":"analytics","folderUrl":"/dashboards/f/ae55fbf5-ba17-4c4b-a730-486b7a52bd66/analytics","sortMeta":0,"isDeleted":false},{"id":24,"uid":"blackbox-exporte","title":"blackbox_exporter","uri":"db/blackbox-exporter","url":"/d/blackbox-exporte/blackbox-exporter","slug":"","type":"dash-db","tags":["blackbox_exporter","http/https","prometheus","web"],"isStarred":false,"folderId":6,"folderUid":"a6db2fb0-63ac-4d6e-b132-fb11196bb54a","folderTitle":"http","folderUrl":"/dashboards/f/a6db2fb0-63ac-4d6e-b132-fb11196bb54a/http","sortMeta":0,"isDeleted":false},{"id":32,"uid":"cadvisor","title":"Cadvisor exporter","uri":"db/cadvisor-exporter","url":"/d/cadvisor/cadvisor-exporter","slug":"","type":"dash-db","tags":["cadvisor","docker"],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":20,"uid":"cosmos-dashboard","title":"Cosmos Dashboard","uri":"db/cosmos-dashboard","url":"/d/cosmos-dashboard/cosmos-dashboard","slug":"","type":"dash-db","tags":["Blockchain","Cosmos"],"isStarred":false,"folderId":2,"folderUid":"eafc9e2c-27d8-4ea3-a5ce-4fbe1439a4b4","folderTitle":"fullnodes","folderUrl":"/dashboards/f/eafc9e2c-27d8-4ea3-a5ce-4fbe1439a4b4/fullnodes","sortMeta":0,"isDeleted":false},{"id":3,"uid":"cosmos-node-stats","title":"Cosmos Node Stats","uri":"db/cosmos-node-stats","url":"/d/cosmos-node-stats/cosmos-node-stats","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":2,"folderUid":"eafc9e2c-27d8-4ea3-a5ce-4fbe1439a4b4","folderTitle":"fullnodes","folderUrl":"/dashboards/f/eafc9e2c-27d8-4ea3-a5ce-4fbe1439a4b4/fullnodes","sortMeta":0,"isDeleted":false},{"id":26,"uid":"cosmos-transactions-bot","title":"cosmos-transactions-bot","uri":"db/cosmos-transactions-bot","url":"/d/cosmos-transactions-bot/cosmos-transactions-bot","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":16,"folderUid":"d5df9cbf-6513-42c3-b595-f22b959eeb85","folderTitle":"misc","folderUrl":"/dashboards/f/d5df9cbf-6513-42c3-b595-f22b959eeb85/misc","sortMeta":0,"isDeleted":false},{"id":14,"uid":"fullnode-metrics-logs","title":"fullnode metrics + logs","uri":"db/fullnode-metrics-2b-logs","url":"/d/fullnode-metrics-logs/fullnode-metrics-2b-logs","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":13,"folderUid":"b7fc23ea-bc41-4299-b012-0cb6507307fc","folderTitle":"logs","folderUrl":"/dashboards/f/b7fc23ea-bc41-4299-b012-0cb6507307fc/logs","sortMeta":0,"isDeleted":false},{"id":17,"uid":"general","title":"general","uri":"db/general","url":"/d/general/general","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":16,"folderUid":"d5df9cbf-6513-42c3-b595-f22b959eeb85","folderTitle":"misc","folderUrl":"/dashboards/f/d5df9cbf-6513-42c3-b595-f22b959eeb85/misc","sortMeta":0,"isDeleted":false},{"id":31,"uid":"hermes","title":"Hermes","uri":"db/hermes","url":"/d/hermes/hermes","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":16,"folderUid":"d5df9cbf-6513-42c3-b595-f22b959eeb85","folderTitle":"misc","folderUrl":"/dashboards/f/d5df9cbf-6513-42c3-b595-f22b959eeb85/misc","sortMeta":0,"isDeleted":false},{"id":33,"uid":"f350cf3a-f3d3-4fab-974d-300a7f30532a","title":"logs test","uri":"db/logs-test","url":"/d/f350cf3a-f3d3-4fab-974d-300a7f30532a/logs-test","slug":"","type":"dash-db","tags":[],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":21,"uid":"machine-metrics","title":"machine metrics","uri":"db/machine-metrics","url":"/d/machine-metrics/machine-metrics","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":4,"folderUid":"ba4ba000-2a2b-4ed8-894d-f25e2f541ea8","folderTitle":"hardware","folderUrl":"/dashboards/f/ba4ba000-2a2b-4ed8-894d-f25e2f541ea8/hardware","sortMeta":0,"isDeleted":false},{"id":25,"uid":"missed-blocks-checker","title":"missed-blocks-checker","uri":"db/missed-blocks-checker","url":"/d/missed-blocks-checker/missed-blocks-checker","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":16,"folderUid":"d5df9cbf-6513-42c3-b595-f22b959eeb85","folderTitle":"misc","folderUrl":"/dashboards/f/d5df9cbf-6513-42c3-b595-f22b959eeb85/misc","sortMeta":0,"isDeleted":false},{"id":15,"uid":"nginx","title":"Nginx analytics","uri":"db/nginx-analytics","url":"/d/nginx/nginx-analytics","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":13,"folderUid":"b7fc23ea-bc41-4299-b012-0cb6507307fc","folderTitle":"logs","folderUrl":"/dashboards/f/b7fc23ea-bc41-4299-b012-0cb6507307fc/logs","sortMeta":0,"isDeleted":false},{"id":34,"uid":"cdfbuxh8jj7k0f","title":"node all stats","uri":"db/node-all-stats","url":"/d/cdfbuxh8jj7k0f/node-all-stats","slug":"","type":"dash-db","tags":[],"isStarred":true,"sortMeta":0,"isDeleted":false},{"id":11,"uid":"disk-graphs","title":"node-exporter disk graphs","uri":"db/node-exporter-disk-graphs","url":"/d/disk-graphs/node-exporter-disk-graphs","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":4,"folderUid":"ba4ba000-2a2b-4ed8-894d-f25e2f541ea8","folderTitle":"hardware","folderUrl":"/dashboards/f/ba4ba000-2a2b-4ed8-894d-f25e2f541ea8/hardware","sortMeta":0,"isDeleted":false},{"id":37,"uid":"fdlfkgegjzw1sb","title":"OnCall Insights","uri":"db/oncall-insights","url":"/d/fdlfkgegjzw1sb/oncall-insights","slug":"","type":"dash-db","tags":["oncall"],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":10,"uid":"prometheus","title":"Prometheus 2.0 Overview","uri":"db/prometheus-2-0-overview","url":"/d/prometheus/prometheus-2-0-overview","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":8,"folderUid":"df50f3d7-0010-488e-a4c7-9c512faed337","folderTitle":"monitoring","folderUrl":"/dashboards/f/df50f3d7-0010-488e-a4c7-9c512faed337/monitoring","sortMeta":0,"isDeleted":false},{"id":22,"uid":"node-exporter","title":"Prometheus Node Exporter Full","uri":"db/prometheus-node-exporter-full","url":"/d/node-exporter/prometheus-node-exporter-full","slug":"","type":"dash-db","tags":["linux"],"isStarred":false,"folderId":4,"folderUid":"ba4ba000-2a2b-4ed8-894d-f25e2f541ea8","folderTitle":"hardware","folderUrl":"/dashboards/f/ba4ba000-2a2b-4ed8-894d-f25e2f541ea8/hardware","sortMeta":0,"isDeleted":false},{"id":12,"uid":"proxmox","title":"proxmox","uri":"db/proxmox","url":"/d/proxmox/proxmox","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":4,"folderUid":"ba4ba000-2a2b-4ed8-894d-f25e2f541ea8","folderTitle":"hardware","folderUrl":"/dashboards/f/ba4ba000-2a2b-4ed8-894d-f25e2f541ea8/hardware","sortMeta":0,"isDeleted":false},{"id":5,"uid":"proxmox-vm-metrics","title":"proxmox + vms metrics","uri":"db/proxmox-2b-vms-metrics","url":"/d/proxmox-vm-metrics/proxmox-2b-vms-metrics","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":4,"folderUid":"ba4ba000-2a2b-4ed8-894d-f25e2f541ea8","folderTitle":"hardware","folderUrl":"/dashboards/f/ba4ba000-2a2b-4ed8-894d-f25e2f541ea8/hardware","sortMeta":0,"isDeleted":false},{"id":7,"uid":"public-nodes-uptime","title":"Public nodes uptime","uri":"db/public-nodes-uptime","url":"/d/public-nodes-uptime/public-nodes-uptime","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":6,"folderUid":"a6db2fb0-63ac-4d6e-b132-fb11196bb54a","folderTitle":"http","folderUrl":"/dashboards/f/a6db2fb0-63ac-4d6e-b132-fb11196bb54a/http","sortMeta":0,"isDeleted":false},{"id":39,"uid":"fdxwftdbg00sge","title":"rly","uri":"db/rly","url":"/d/fdxwftdbg00sge/rly","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":16,"folderUid":"d5df9cbf-6513-42c3-b595-f22b959eeb85","folderTitle":"misc","folderUrl":"/dashboards/f/d5df9cbf-6513-42c3-b595-f22b959eeb85/misc","sortMeta":0,"isDeleted":false},{"id":38,"uid":"cdr9whr0y3ri8e","title":"Slinky","uri":"db/slinky","url":"/d/cdr9whr0y3ri8e/slinky","slug":"","type":"dash-db","tags":[],"isStarred":false,"folderId":2,"folderUid":"eafc9e2c-27d8-4ea3-a5ce-4fbe1439a4b4","folderTitle":"fullnodes","folderUrl":"/dashboards/f/eafc9e2c-27d8-4ea3-a5ce-4fbe1439a4b4/fullnodes","sortMeta":0,"isDeleted":false},{"id":29,"uid":"unpoller-dpi","title":"UniFi-Poller: Client DPI - Prometheus","uri":"db/unifi-poller3a-client-dpi-prometheus","url":"/d/unpoller-dpi/unifi-poller3a-client-dpi-prometheus","slug":"","type":"dash-db","tags":["unifi","unifi-poller"],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":27,"uid":"unpoller-clients","title":"UniFi-Poller: Client Insights - Prometheus","uri":"db/unifi-poller3a-client-insights-prometheus","url":"/d/unpoller-clients/unifi-poller3a-client-insights-prometheus","slug":"","type":"dash-db","tags":["unifi","unifi-poller"],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":28,"uid":"unpoller-uap","title":"UniFi-Poller: UAP Insights - Prometheus","uri":"db/unifi-poller3a-uap-insights-prometheus","url":"/d/unpoller-uap/unifi-poller3a-uap-insights-prometheus","slug":"","type":"dash-db","tags":["uap","unifi","unifi-poller"],"isStarred":false,"sortMeta":0,"isDeleted":false},{"id":23,"uid":"validators-overall","title":"validators overall","uri":"db/validators-overall","url":"/d/validators-overall/validators-overall","slug":"","type":"dash-db","tags":[],"isStarred":true,"folderId":18,"folderUid":"ae55fbf5-ba17-4c4b-a730-486b7a52bd66","folderTitle":"analytics","folderUrl":"/dashboards/f/ae55fbf5-ba17-4c4b-a730-486b7a52bd66/analytics","sortMeta":0,"isDeleted":false}]
29 changes: 28 additions & 1 deletion assets/responses/dashboards-list-ok.html
Original file line number Diff line number Diff line change
@@ -1,2 +1,29 @@
<strong>Dashboards list</strong>
- <a href='https://example.com/d/alertmanager/alertmanager'>Alertmanager</a>
- <a href='https://example.com/d/alertmanager/alertmanager'>Alertmanager</a>
- <a href='https://example.com/d/balances/balances'>balances</a>
- <a href='https://example.com/d/blackbox-exporte/blackbox-exporter'>blackbox_exporter</a>
- <a href='https://example.com/d/cadvisor/cadvisor-exporter'>Cadvisor exporter</a>
- <a href='https://example.com/d/cosmos-dashboard/cosmos-dashboard'>Cosmos Dashboard</a>
- <a href='https://example.com/d/cosmos-node-stats/cosmos-node-stats'>Cosmos Node Stats</a>
- <a href='https://example.com/d/cosmos-transactions-bot/cosmos-transactions-bot'>cosmos-transactions-bot</a>
- <a href='https://example.com/d/fullnode-metrics-logs/fullnode-metrics-2b-logs'>fullnode metrics + logs</a>
- <a href='https://example.com/d/general/general'>general</a>
- <a href='https://example.com/d/hermes/hermes'>Hermes</a>
- <a href='https://example.com/d/f350cf3a-f3d3-4fab-974d-300a7f30532a/logs-test'>logs test</a>
- <a href='https://example.com/d/machine-metrics/machine-metrics'>machine metrics</a>
- <a href='https://example.com/d/missed-blocks-checker/missed-blocks-checker'>missed-blocks-checker</a>
- <a href='https://example.com/d/nginx/nginx-analytics'>Nginx analytics</a>
- <a href='https://example.com/d/cdfbuxh8jj7k0f/node-all-stats'>node all stats</a>
- <a href='https://example.com/d/disk-graphs/node-exporter-disk-graphs'>node-exporter disk graphs</a>
- <a href='https://example.com/d/fdlfkgegjzw1sb/oncall-insights'>OnCall Insights</a>
- <a href='https://example.com/d/prometheus/prometheus-2-0-overview'>Prometheus 2.0 Overview</a>
- <a href='https://example.com/d/node-exporter/prometheus-node-exporter-full'>Prometheus Node Exporter Full</a>
- <a href='https://example.com/d/proxmox/proxmox'>proxmox</a>
- <a href='https://example.com/d/proxmox-vm-metrics/proxmox-2b-vms-metrics'>proxmox + vms metrics</a>
- <a href='https://example.com/d/public-nodes-uptime/public-nodes-uptime'>Public nodes uptime</a>
- <a href='https://example.com/d/fdxwftdbg00sge/rly'>rly</a>
- <a href='https://example.com/d/cdr9whr0y3ri8e/slinky'>Slinky</a>
- <a href='https://example.com/d/unpoller-dpi/unifi-poller3a-client-dpi-prometheus'>UniFi-Poller: Client DPI - Prometheus</a>
- <a href='https://example.com/d/unpoller-clients/unifi-poller3a-client-insights-prometheus'>UniFi-Poller: Client Insights - Prometheus</a>
- <a href='https://example.com/d/unpoller-uap/unifi-poller3a-uap-insights-prometheus'>UniFi-Poller: UAP Insights - Prometheus</a>
- <a href='https://example.com/d/validators-overall/validators-overall'>validators overall</a>
7 changes: 7 additions & 0 deletions pkg/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"main/pkg/alert_source"
"main/pkg/clients"
configPkg "main/pkg/config"
"main/pkg/constants"
loggerPkg "main/pkg/logger"
"main/pkg/silence_manager"
"main/pkg/templates"
Expand Down Expand Up @@ -85,6 +86,7 @@ func NewApp(config *configPkg.Config, version string) *App {
}

func (a *App) Start() {
// Commands
a.Bot.Handle("/start", a.HandleHelp)
a.Bot.Handle("/help", a.HandleHelp)
a.Bot.Handle("/dashboards", a.HandleListDashboards)
Expand All @@ -96,6 +98,11 @@ func (a *App) Start() {
a.Bot.Handle("/alert", a.HandleSingleAlert)
a.Bot.Handle("/silences", a.HandleChooseSilenceManagerForListSilences)

// Callbacks
a.Bot.Handle("\f"+constants.GrafanaRenderChooseDashboardPrefix, a.HandleRenderChooseDashboardFromCallback)
a.Bot.Handle("\f"+constants.GrafanaRenderChoosePanelPrefix, a.HandleRenderPanelChoosePanelFromCallback)
a.Bot.Handle("\f"+constants.GrafanaRenderRenderPanelPrefix, a.HandleRenderPanelFromCallback)

for _, alertSourceWithSilenceManager := range a.AlertSourcesWithSilenceManager {
alertSource := alertSourceWithSilenceManager.AlertSource
silenceManager := alertSourceWithSilenceManager.SilenceManager
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/dashboards_show_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ func TestAppShowDashboardDashboardNotFound(t *testing.T) {
ID: 1,
Message: &tele.Message{
Sender: &tele.User{Username: "testuser"},
Text: "/dashboard test",
Text: "/dashboard asdasdasd",
Chat: &tele.Chat{ID: 2},
},
})
Expand Down
Loading

0 comments on commit a00e12f

Please sign in to comment.