Skip to content

Commit 875e6dd

Browse files
committed
use resourcegraph for servicediscovery (add filter parameter for advanced filtering)
Signed-off-by: Markus Blaschke <mblaschke82@gmail.com>
1 parent b122156 commit 875e6dd

File tree

5 files changed

+78
-62
lines changed

5 files changed

+78
-62
lines changed

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,13 @@ uses dynamically passed workspaces via HTTP query parameter
7878

7979
uses Azure service discovery to find all workspaces in one or multiple subscriptions
8080

81-
| GET parameter | Default | Required | Multiple | Description |
82-
|------------------------|---------------------------|----------|----------|----------------------------------------------------------------------|
83-
| `module` | | no | no | Filter queries by module name |
84-
| `subscription` | | **yes** | yes | Uses all workspaces inside subscription |
85-
| `cache` | | no | no | Use of internal metrics caching (time.Duration) |
86-
| `parallel` | `$LOGANALYTICS_PARALLEL` | no | no | Number (int) of how many workspaces can be queried at the same time |
81+
| GET parameter | Default | Required | Multiple | Description |
82+
|----------------|--------------------------|----------|----------|------------------------------------------------------------------------------------------------------------------------------------------|
83+
| `module` | | no | no | Filter queries by module name |
84+
| `subscription` | | **yes** | yes | Uses all workspaces inside subscription |
85+
| `filter` | | no | no | Advanced filter for `resource \| {filter} \| project id, customerId=properties.customerId` ResoruceGraph query (available with `23.6.0`) |
86+
| `cache` | | no | no | Use of internal metrics caching (time.Duration) |
87+
| `parallel` | `$LOGANALYTICS_PARALLEL` | no | no | Number (int) of how many workspaces can be queried at the same time |
8788

8889
## Global metrics
8990

go.mod

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@ require (
88
github.com/google/uuid v1.3.0
99
github.com/jessevdk/go-flags v1.5.0
1010
github.com/patrickmn/go-cache v2.1.0+incompatible
11-
github.com/prometheus/client_golang v1.15.1
11+
github.com/prometheus/client_golang v1.16.0
1212
github.com/remeh/sizedwaitgroup v1.0.0
13-
github.com/webdevops/go-common v0.0.0-20230514184624-3c9d2cde95f8
13+
github.com/webdevops/go-common v0.0.0-20230612205735-2ee45347be15
1414
go.uber.org/zap v1.24.0
1515
)
1616

1717
require (
18-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 // indirect
18+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0-beta.2 // indirect
1919
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect
2020
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect
21+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.0 // indirect
2122
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 // indirect
22-
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.1.1 // indirect
23+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.2.0 // indirect
2324
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect
2425
github.com/beorn7/perks v1.0.1 // indirect
2526
github.com/cespare/xxhash/v2 v2.2.0 // indirect
@@ -30,14 +31,14 @@ require (
3031
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
3132
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
3233
github.com/prometheus/client_model v0.4.0 // indirect
33-
github.com/prometheus/common v0.43.0 // indirect
34-
github.com/prometheus/procfs v0.9.0 // indirect
34+
github.com/prometheus/common v0.44.0 // indirect
35+
github.com/prometheus/procfs v0.11.0 // indirect
3536
go.uber.org/atomic v1.11.0 // indirect
3637
go.uber.org/multierr v1.11.0 // indirect
37-
golang.org/x/crypto v0.9.0 // indirect
38-
golang.org/x/net v0.10.0 // indirect
39-
golang.org/x/sys v0.8.0 // indirect
40-
golang.org/x/text v0.9.0 // indirect
38+
golang.org/x/crypto v0.10.0 // indirect
39+
golang.org/x/net v0.11.0 // indirect
40+
golang.org/x/sys v0.9.0 // indirect
41+
golang.org/x/text v0.10.0 // indirect
4142
google.golang.org/protobuf v1.30.0 // indirect
4243
gopkg.in/yaml.v3 v3.0.1 // indirect
4344
)

go.sum

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 h1:8kDqDngH+DmVBiCtIjCFTGa7MBnsIOkF9IccInFEbjk=
2-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
1+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0-beta.2 h1:C3zKsGguxcLd8a2uEytB8+TFtBGd75bXRxEs0QBwsv0=
2+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0-beta.2/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
33
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg=
44
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U=
55
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY=
@@ -10,10 +10,12 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNL
1010
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o=
1111
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/operationalinsights/armoperationalinsights v1.1.1 h1:2fNJSfRbULkn3BzwWcA5WO1wHDr6E14LkCiWHdkpfR4=
1212
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/operationalinsights/armoperationalinsights v1.1.1/go.mod h1:A5GfDiLHjdNwpQ2DLX6QNKt/wJJfOoLz4cB7JyUapxw=
13+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.0 h1:+fxpya1I3WJEvl+qzET7NO2MkjtYkiZJxIcEN690W64=
14+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.0/go.mod h1:1wZ2sD5NUZGEk/RVNxjBFPqVHC39ekUDtmNnWhKhrGY=
1315
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU=
1416
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw=
15-
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.1.1 h1:A+a54F7ygu4ANdV9hYsLMfiHFgjuwIUCG+6opLAvxJE=
16-
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.1.1/go.mod h1:ThfyMjs6auYrWPnYJjI3H4H++oVPrz01pizpu8lfl3A=
17+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.2.0 h1:Pmy0+3ox1IC3sp6musv87BFPIdQbqyPFjn7I8I0o2Js=
18+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions v1.2.0/go.mod h1:ThfyMjs6auYrWPnYJjI3H4H++oVPrz01pizpu8lfl3A=
1719
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY=
1820
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o=
1921
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
@@ -49,38 +51,38 @@ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9
4951
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
5052
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
5153
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
52-
github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI=
53-
github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
54+
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
55+
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
5456
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
5557
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
56-
github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us=
57-
github.com/prometheus/common v0.43.0/go.mod h1:NCvr5cQIh3Y/gy73/RdVtC9r8xxrxwJnB+2lB3BxrFc=
58-
github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
59-
github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
58+
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
59+
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
60+
github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk=
61+
github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
6062
github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E=
6163
github.com/remeh/sizedwaitgroup v1.0.0/go.mod h1:3j2R4OIe/SeS6YDhICBy22RWjJC5eNCJ1V+9+NVNYlo=
6264
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
63-
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
64-
github.com/webdevops/go-common v0.0.0-20230514184624-3c9d2cde95f8 h1:PV3JDjPJ+CaUrra3omUx6pwo7ALacgb7VUNmLUpORgE=
65-
github.com/webdevops/go-common v0.0.0-20230514184624-3c9d2cde95f8/go.mod h1:Jyf1rCdjOxgJuwTuZy4l0xOm30FTEa3QV3fQZdySKdw=
65+
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
66+
github.com/webdevops/go-common v0.0.0-20230612205735-2ee45347be15 h1:3+zCVejFHGmjWyEIbrid1d483SJOvYgLW7q3xEYchjE=
67+
github.com/webdevops/go-common v0.0.0-20230612205735-2ee45347be15/go.mod h1:KUQ7bNZHIHSU4BryRq2E77ob0hrXWZ6CtSbcnqKlUyw=
6668
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
6769
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
6870
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
6971
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
7072
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
7173
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
7274
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
73-
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
74-
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
75-
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
76-
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
75+
golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM=
76+
golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I=
77+
golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU=
78+
golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
7779
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
7880
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7981
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
80-
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
81-
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
82-
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
83-
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
82+
golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
83+
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
84+
golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58=
85+
golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
8486
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
8587
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
8688
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=

loganalytics/servicediscovery.go

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010

1111
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/operationalinsights/armoperationalinsights"
1212
"github.com/webdevops/go-common/azuresdk/armclient"
13-
"github.com/webdevops/go-common/utils/to"
1413
"go.uber.org/zap"
1514
)
1615

@@ -100,7 +99,7 @@ func (sd *LogAnalyticsServiceDiscovery) ServiceDiscovery() {
10099
serviceDiscoveryCacheDuration = prober.Conf.Azure.ServiceDiscovery.CacheDuration
101100
cacheKey = fmt.Sprintf(
102101
"sd:%x",
103-
string(sha1.New().Sum([]byte(fmt.Sprintf("%v", subscriptionList)))),
102+
string(sha1.New().Sum([]byte(fmt.Sprintf("%v:%v", subscriptionList, prober.request.URL.String())))),
104103
) // #nosec
105104

106105
// try cache
@@ -118,7 +117,7 @@ func (sd *LogAnalyticsServiceDiscovery) ServiceDiscovery() {
118117
}
119118

120119
contextLogger.Debug("requesting list for workspaces via Azure API")
121-
sd.requestWorkspacesFromAzure(contextLogger, subscriptionList)
120+
sd.findWorkspaces(contextLogger, subscriptionList)
122121

123122
// store to cache (if enabeld)
124123
if serviceDiscoveryCacheDuration != nil {
@@ -131,28 +130,33 @@ func (sd *LogAnalyticsServiceDiscovery) ServiceDiscovery() {
131130
}
132131
}
133132

134-
func (sd *LogAnalyticsServiceDiscovery) requestWorkspacesFromAzure(logger *zap.SugaredLogger, subscriptionList []string) {
133+
func (sd *LogAnalyticsServiceDiscovery) findWorkspaces(logger *zap.SugaredLogger, subscriptionList []string) {
135134
prober := sd.prober
136135

137-
for _, subscriptionId := range subscriptionList {
138-
subscriptionLogger := logger.With(zap.String("subscription", subscriptionId))
139-
140-
pager := sd.ResourcesClient(subscriptionId).NewListPager(nil)
141-
for pager.More() {
142-
result, err := pager.NextPage(prober.ctx)
143-
if err != nil {
144-
subscriptionLogger.Panic(err)
145-
}
146-
147-
for _, workspace := range result.Value {
148-
if workspace.Properties.CustomerID != nil {
149-
prober.workspaceList = append(
150-
prober.workspaceList,
151-
to.String(workspace.Properties.CustomerID),
152-
)
153-
}
154-
}
136+
query := "resources \n"
137+
query += "| where type =~ \"Microsoft.OperationalInsights/workspaces\" \n"
138+
if filter := prober.request.URL.Query().Get("filter"); len(filter) > 0 {
139+
filter = strings.TrimSpace(filter)
140+
filter = strings.TrimLeft(filter, "|")
141+
if len(filter) >= 1 {
142+
query += fmt.Sprintf("| %s \n", filter)
155143
}
156144
}
145+
query += "| project id, customerId=properties.customerId"
157146

147+
result, err := prober.Azure.Client.ExecuteResourceGraphQuery(
148+
prober.ctx,
149+
subscriptionList,
150+
query,
151+
)
152+
if err != nil {
153+
logger.Panic(err)
154+
}
155+
156+
for _, row := range result {
157+
prober.workspaceList = append(
158+
prober.workspaceList,
159+
row["customerId"].(string),
160+
)
161+
}
158162
}

templates/query.html

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ <h3>General</h3>
157157
</div>
158158
</div>
159159

160-
<div class="mb-3 row">
160+
<div class="mb-3 row" query-endpoint="/probe/workspace">
161161
<label for="workspace" class="col-sm-2 col-form-label">workspace</label>
162162
<div class="col-sm-10">
163163
<textarea class="form-control" id="workspace" rows="3"></textarea>
@@ -185,6 +185,14 @@ <h3>Service Discovery</h3>
185185
</div>
186186
</div>
187187

188+
<div class="mb-3 row" query-endpoint="/probe/subscription">
189+
<label for="filter" class="col-sm-2 col-form-label">filter</label>
190+
<div class="col-sm-10">
191+
<input type="text" class="form-control" id="filter" value="">
192+
<div class="form-text">ResourceGraph filter</div>
193+
</div>
194+
</div>
195+
188196
<div class="mb-3 row">
189197
<div class="offset-sm-2 col-sm-10">
190198
<button type="button" class="btn btn-primary mb-3" id="sendQuery">Execute query</button>
@@ -277,8 +285,8 @@ <h2>Prometheus scrape_config</h2>
277285
let formSetVisibility = () => {
278286
let endpoint = $("#endpoint:input").val().trim();
279287
$("form.query div.row").removeClass("hidden");
280-
$("form.query div.row[query-endpoint]:not([query-endpoint*=\"" + endpoint + "\"])").addClass("hidden");
281-
$("form.query div.row[query-endpoint-exclude][query-endpoint-exclude*=\"" + endpoint + "\"]").addClass("hidden");
288+
$("form.query div.row[query-endpoint]:not([query-endpoint~=\"" + endpoint + "\"])").addClass("hidden");
289+
$("form.query div.row[query-endpoint-exclude][query-endpoint-exclude~=\"" + endpoint + "\"]").addClass("hidden");
282290
};
283291

284292
let buildPrometheusScrapeConfig = (queryEndpoint, queryParams) => {

0 commit comments

Comments
 (0)