app/vmalert: do not show system links at http://vmalert:8880/ page when it is requested via proxy

The system links are absolute, e.g. they start from `/`, so there are high chances
they won't work as expected when requested via proxy such as vmselect with -vmalert.proxyURL
command-line flag.

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3424
This commit is contained in:
Aliaksandr Valialkin 2022-12-09 11:43:54 -08:00
parent 385d082bca
commit 650d1d1ae5
No known key found for this signature in database
GPG Key ID: A72BEC6CD3D0DED1
3 changed files with 553 additions and 519 deletions

View File

@ -8,7 +8,6 @@ import (
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
"sync"
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/notifier" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/notifier"
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/tpl" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/tpl"
@ -18,20 +17,14 @@ import (
) )
var ( var (
once = sync.Once{}
apiLinks [][2]string
navItems []tpl.NavItem
)
func initLinks() {
apiLinks = [][2]string{ apiLinks = [][2]string{
// api links are relative since they can be used by external clients, // api links are relative since they can be used by external clients,
// such as Grafana, and proxied via vmselect. // such as Grafana, and proxied via vmselect.
{"api/v1/rules", "list all loaded groups and rules"}, {"api/v1/rules", "list all loaded groups and rules"},
{"api/v1/alerts", "list all active alerts"}, {"api/v1/alerts", "list all active alerts"},
{fmt.Sprintf("api/v1/alert?%s=<int>&%s=<int>", paramGroupID, paramAlertID), "get alert status by group and alert ID"}, {fmt.Sprintf("api/v1/alert?%s=<int>&%s=<int>", paramGroupID, paramAlertID), "get alert status by group and alert ID"},
}
// system links systemLinks = [][2]string{
{"/flags", "command-line flags"}, {"/flags", "command-line flags"},
{"/metrics", "list of application metrics"}, {"/metrics", "list of application metrics"},
{"/-/reload", "reload configuration"}, {"/-/reload", "reload configuration"},
@ -43,7 +36,7 @@ func initLinks() {
{Name: "Notifiers", Url: "notifiers"}, {Name: "Notifiers", Url: "notifiers"},
{Name: "Docs", Url: "https://docs.victoriametrics.com/vmalert.html"}, {Name: "Docs", Url: "https://docs.victoriametrics.com/vmalert.html"},
} }
} )
type requestHandler struct { type requestHandler struct {
m *manager m *manager
@ -57,10 +50,6 @@ var (
) )
func (rh *requestHandler) handler(w http.ResponseWriter, r *http.Request) bool { func (rh *requestHandler) handler(w http.ResponseWriter, r *http.Request) bool {
once.Do(func() {
initLinks()
})
if strings.HasPrefix(r.URL.Path, "/vmalert/static") { if strings.HasPrefix(r.URL.Path, "/vmalert/static") {
staticServer.ServeHTTP(w, r) staticServer.ServeHTTP(w, r)
return true return true

View File

@ -16,11 +16,16 @@
<p> <p>
API:<br> API:<br>
{% for _, p := range apiLinks %} {% for _, p := range apiLinks %}
{%code {%code p, doc := p[0], p[1] %}
p, doc := p[0], p[1] <a href="{%s p %}">{%s p %}</a> - {%s doc %}<br/>
%}
<a href="{%s p %}">{%s p %}</a> - {%s doc %}<br/>
{% endfor %} {% endfor %}
{% if r.Header.Get("X-Forwarded-For") == "" %}
System:<br>
{% for _, p := range systemLinks %}
{%code p, doc := p[0], p[1] %}
<a href="{%s p %}">{%s p %}</a> - {%s doc %}<br/>
{% endfor %}
{% endif %}
</p> </p>
{%= tpl.Footer(r) %} {%= tpl.Footer(r) %}
{% endfunc %} {% endfunc %}

File diff suppressed because it is too large Load Diff