diff --git a/pkg/api/api.go b/pkg/api/api.go
index d131d32aedb..cb7676312b5 100644
--- a/pkg/api/api.go
+++ b/pkg/api/api.go
@@ -203,6 +203,8 @@ func (hs *HTTPServer) registerRoutes() {
r.Get("/library-panels/", reqSignedIn, hs.Index)
r.Get("/monitoring/", reqSignedIn, hs.Index)
r.Get("/monitoring/*", reqSignedIn, hs.Index)
+ r.Get("/observability/", reqSignedIn, hs.Index)
+ r.Get("/observability/*", reqSignedIn, hs.Index)
r.Get("/alerts-and-incidents", reqSignedIn, hs.Index)
r.Get("/alerts-and-incidents/*", reqSignedIn, hs.Index)
diff --git a/pkg/services/navtree/models.go b/pkg/services/navtree/models.go
index 5af7d6dbeb7..5514705ed9a 100644
--- a/pkg/services/navtree/models.go
+++ b/pkg/services/navtree/models.go
@@ -21,7 +21,7 @@ const (
WeightAlertsAndIncidents
WeightAIAndML
WeightTestingAndSynthetics
- WeightMonitoring
+ WeightObservability
WeightCloudServiceProviders
WeightInfrastructure
WeightApplication
@@ -44,7 +44,7 @@ const (
NavIDAlertsAndIncidents = "alerts-and-incidents"
NavIDTestingAndSynthetics = "testing-and-synthetics"
NavIDAlerting = "alerting"
- NavIDMonitoring = "monitoring"
+ NavIDObservability = "observability"
NavIDInfrastructure = "infrastructure"
NavIDFrontend = "frontend"
NavIDReporting = "reports"
diff --git a/pkg/services/navtree/navtreeimpl/applinks.go b/pkg/services/navtree/navtreeimpl/applinks.go
index 66e656ac262..e1baffd48f2 100644
--- a/pkg/services/navtree/navtreeimpl/applinks.go
+++ b/pkg/services/navtree/navtreeimpl/applinks.go
@@ -223,15 +223,15 @@ func (s *ServiceImpl) addPluginToSection(c *contextmodel.ReqContext, treeRoot *n
SortWeight: navtree.WeightApps,
Url: s.cfg.AppSubURL + "/apps",
})
- case navtree.NavIDMonitoring:
+ case navtree.NavIDObservability:
treeRoot.AddSection(&navtree.NavLink{
Text: "Observability",
- Id: navtree.NavIDMonitoring,
+ Id: navtree.NavIDObservability,
SubTitle: "Observability and infrastructure apps",
Icon: "heart-rate",
- SortWeight: navtree.WeightMonitoring,
+ SortWeight: navtree.WeightObservability,
Children: []*navtree.NavLink{appLink},
- Url: s.cfg.AppSubURL + "/monitoring",
+ Url: s.cfg.AppSubURL + "/observability",
})
case navtree.NavIDInfrastructure:
treeRoot.AddSection(&navtree.NavLink{
@@ -305,14 +305,16 @@ func (s *ServiceImpl) hasAccessToInclude(c *contextmodel.ReqContext, pluginID st
func (s *ServiceImpl) readNavigationSettings() {
s.navigationAppConfig = map[string]NavigationAppConfig{
- "grafana-k8s-app": {SectionID: navtree.NavIDInfrastructure, SortWeight: 1, Text: "Kubernetes"},
- "grafana-dbo11y-app": {SectionID: navtree.NavIDInfrastructure, SortWeight: 2, Text: "Databases"},
- "grafana-app-observability-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightApplication, Text: "Application", Icon: "graph-bar"},
+ "grafana-asserts-app": {SectionID: navtree.NavIDObservability, SortWeight: 1, Icon: "asserts"},
+ "grafana-app-observability-app": {SectionID: navtree.NavIDObservability, SortWeight: 2, Text: "Application"},
+ "grafana-csp-app": {SectionID: navtree.NavIDObservability, SortWeight: 3, Icon: "cloud-provider"},
+ "grafana-k8s-app": {SectionID: navtree.NavIDObservability, SortWeight: 4, Text: "Kubernetes"},
+ "grafana-dbo11y-app": {SectionID: navtree.NavIDObservability, SortWeight: 5, Text: "Databases"},
+ "grafana-kowalski-app": {SectionID: navtree.NavIDObservability, SortWeight: 6, Text: "Frontend"},
"grafana-metricsdrilldown-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 1, Text: "Metrics"},
"grafana-lokiexplore-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 2, Text: "Logs"},
"grafana-exploretraces-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 3, Text: "Traces"},
"grafana-pyroscope-app": {SectionID: navtree.NavIDDrilldown, SortWeight: 4, Text: "Profiles"},
- "grafana-kowalski-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightFrontend, Text: "Frontend", Icon: "frontend-observability"},
"grafana-synthetic-monitoring-app": {SectionID: navtree.NavIDTestingAndSynthetics, SortWeight: 2, Text: "Synthetics"},
"grafana-irm-app": {SectionID: navtree.NavIDAlertsAndIncidents, SortWeight: 3, Text: "IRM"},
"grafana-oncall-app": {SectionID: navtree.NavIDAlertsAndIncidents, SortWeight: 4, Text: "OnCall"},
@@ -328,8 +330,6 @@ func (s *ServiceImpl) readNavigationSettings() {
"grafana-logvolumeexplorer-app": {SectionID: navtree.NavIDCfg, Text: "Log Volume Explorer"},
"grafana-easystart-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightApps + 1, Text: "Connections", Icon: "adjust-circle"},
"k6-app": {SectionID: navtree.NavIDTestingAndSynthetics, SortWeight: 1, Text: "Performance"},
- "grafana-asserts-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightAsserts, Icon: "asserts"},
- "grafana-csp-app": {SectionID: navtree.NavIDRoot, SortWeight: navtree.WeightCloudServiceProviders, Icon: "cloud-provider"},
}
if s.features.IsEnabledGlobally(featuremgmt.FlagGrafanaAdvisor) {
diff --git a/pkg/services/navtree/navtreeimpl/applinks_test.go b/pkg/services/navtree/navtreeimpl/applinks_test.go
index a5a7fc15e99..87b0276f370 100644
--- a/pkg/services/navtree/navtreeimpl/applinks_test.go
+++ b/pkg/services/navtree/navtreeimpl/applinks_test.go
@@ -207,21 +207,21 @@ func TestAddAppLinks(t *testing.T) {
t.Run("Should only add an 'Observability' section if a plugin exists that wants to live there", func(t *testing.T) {
service.navigationAppConfig = map[string]NavigationAppConfig{}
- // Check if the Monitoring section is not there if no apps try to register to it
+ // Check if the Observability section is not there if no apps try to register to it
treeRoot := navtree.NavTreeRoot{}
err := service.addAppLinks(&treeRoot, reqCtx)
require.NoError(t, err)
- monitoringNode := treeRoot.FindById(navtree.NavIDMonitoring)
+ monitoringNode := treeRoot.FindById(navtree.NavIDObservability)
require.Nil(t, monitoringNode)
// It should appear and once an app tries to register to it
treeRoot = navtree.NavTreeRoot{}
service.navigationAppConfig = map[string]NavigationAppConfig{
- "test-app1": {SectionID: navtree.NavIDMonitoring},
+ "test-app1": {SectionID: navtree.NavIDObservability},
}
err = service.addAppLinks(&treeRoot, reqCtx)
require.NoError(t, err)
- monitoringNode = treeRoot.FindById(navtree.NavIDMonitoring)
+ monitoringNode = treeRoot.FindById(navtree.NavIDObservability)
require.NotNil(t, monitoringNode)
require.Len(t, monitoringNode.Children, 1)
require.Equal(t, "Test app1 name", monitoringNode.Children[0].Text)
@@ -277,15 +277,15 @@ func TestAddAppLinks(t *testing.T) {
t.Run("Should be able to control app sort order with SortWeight (smaller SortWeight displayed first)", func(t *testing.T) {
service.navigationAppConfig = map[string]NavigationAppConfig{
- "test-app2": {SectionID: navtree.NavIDMonitoring, SortWeight: 2},
- "test-app1": {SectionID: navtree.NavIDMonitoring, SortWeight: 3},
- "test-app3": {SectionID: navtree.NavIDMonitoring, SortWeight: 1},
+ "test-app2": {SectionID: navtree.NavIDObservability, SortWeight: 2},
+ "test-app1": {SectionID: navtree.NavIDObservability, SortWeight: 3},
+ "test-app3": {SectionID: navtree.NavIDObservability, SortWeight: 1},
}
treeRoot := navtree.NavTreeRoot{}
err := service.addAppLinks(&treeRoot, reqCtx)
treeRoot.Sort()
- monitoringNode := treeRoot.FindById(navtree.NavIDMonitoring)
+ monitoringNode := treeRoot.FindById(navtree.NavIDObservability)
require.NoError(t, err)
require.Equal(t, "Test app3 name", monitoringNode.Children[0].Text)
@@ -367,7 +367,7 @@ func TestReadingNavigationSettings(t *testing.T) {
_, _ = service.cfg.Raw.NewSection("navigation.app_sections")
service.readNavigationSettings()
- require.Equal(t, "infrastructure", service.navigationAppConfig["grafana-k8s-app"].SectionID)
+ require.Equal(t, "observability", service.navigationAppConfig["grafana-k8s-app"].SectionID)
})
t.Run("Can add additional overrides via ini system", func(t *testing.T) {
@@ -387,7 +387,7 @@ func TestReadingNavigationSettings(t *testing.T) {
require.Equal(t, "dashboards", service.navigationAppConfig["grafana-k8s-app"].SectionID)
require.Equal(t, "admin", service.navigationAppConfig["other-app"].SectionID)
- require.Equal(t, int64(1), service.navigationAppConfig["grafana-k8s-app"].SortWeight)
+ require.Equal(t, int64(4), service.navigationAppConfig["grafana-k8s-app"].SortWeight)
require.Equal(t, int64(12), service.navigationAppConfig["other-app"].SortWeight)
require.Equal(t, "admin", service.navigationAppPathConfig["/a/grafana-k8s-app/foo"].SectionID)
diff --git a/public/app/routes/routes.tsx b/public/app/routes/routes.tsx
index 249a12c4354..90b70ca5a9c 100644
--- a/public/app/routes/routes.tsx
+++ b/public/app/routes/routes.tsx
@@ -188,7 +188,11 @@ export function getAppRoutes(): RouteDescriptor[] {
},
{
path: '/monitoring',
- component: () => ,
+ component: () => ,
+ },
+ {
+ path: '/observability',
+ component: () => ,
},
{
path: '/infrastructure',