Update arc dashboards to use logs/metrics links from status (#12673)

* Update arc dashboards to use logs/metrics links from status

* remove unused

* Fix loading
This commit is contained in:
Charles Gagnon
2020-10-01 10:20:19 -07:00
committed by GitHub
parent 39e43d2401
commit 2da0fafcd5
3 changed files with 44 additions and 58 deletions

View File

@@ -8,7 +8,7 @@ import * as azdataExt from 'azdata-ext';
import * as azurecore from 'azurecore';
import * as vscode from 'vscode';
import { getDatabaseStateDisplayText, promptForInstanceDeletion } from '../../../common/utils';
import { cssStyles, Endpoints, IconPathHelper, miaaTroubleshootDocsUrl } from '../../../constants';
import { cssStyles, IconPathHelper, miaaTroubleshootDocsUrl } from '../../../constants';
import * as loc from '../../../localizedConstants';
import { ControllerModel } from '../../../models/controllerModel';
import { MiaaModel } from '../../../models/miaaModel';
@@ -352,19 +352,13 @@ export class MiaaDashboardOverviewPage extends DashboardPage {
}
private refreshDashboardLinks(): void {
const kibanaEndpoint = this._controllerModel.getEndpoint(Endpoints.logsui);
if (kibanaEndpoint && this._miaaModel.config) {
const kibanaQuery = `kubernetes_namespace:"${this._miaaModel.config.metadata.namespace}" and custom_resource_name :"${this._miaaModel.config.metadata.name}"`;
const kibanaUrl = `${kibanaEndpoint.endpoint}/app/kibana#/discover?_a=(query:(language:kuery,query:'${kibanaQuery}'))`;
if (this._miaaModel.config) {
const kibanaUrl = this._miaaModel.config.status.logSearchDashboard ?? '';
this._kibanaLink.label = kibanaUrl;
this._kibanaLink.url = kibanaUrl;
this._kibanaLoading!.loading = false;
}
const grafanaEndpoint = this._controllerModel.getEndpoint(Endpoints.metricsui);
if (grafanaEndpoint && this._miaaModel.config) {
const grafanaQuery = `var-hostname=${this._miaaModel.info.name}-0`;
const grafanaUrl = grafanaEndpoint ? `${grafanaEndpoint.endpoint}/d/40q72HnGk/sql-managed-instance-metrics?${grafanaQuery}` : '';
const grafanaUrl = this._miaaModel.config.status.metricsDashboard ?? '';
this._grafanaLink.label = grafanaUrl;
this._grafanaLink.url = grafanaUrl;
this._grafanaLoading!.loading = false;

View File

@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
import * as azdata from 'azdata';
import * as azdataExt from 'azdata-ext';
import * as loc from '../../../localizedConstants';
import { IconPathHelper, cssStyles, Endpoints } from '../../../constants';
import { IconPathHelper, cssStyles } from '../../../constants';
import { DashboardPage } from '../../components/dashboardPage';
import { ControllerModel } from '../../../models/controllerModel';
import { PostgresModel } from '../../../models/postgresModel';
@@ -16,13 +16,13 @@ import { ResourceType } from 'arc';
export class PostgresOverviewPage extends DashboardPage {
private propertiesLoading?: azdata.LoadingComponent;
private kibanaLoading?: azdata.LoadingComponent;
private grafanaLoading?: azdata.LoadingComponent;
private propertiesLoading!: azdata.LoadingComponent;
private kibanaLoading!: azdata.LoadingComponent;
private grafanaLoading!: azdata.LoadingComponent;
private properties?: azdata.PropertiesContainerComponent;
private kibanaLink?: azdata.HyperlinkComponent;
private grafanaLink?: azdata.HyperlinkComponent;
private properties!: azdata.PropertiesContainerComponent;
private kibanaLink!: azdata.HyperlinkComponent;
private grafanaLink!: azdata.HyperlinkComponent;
private readonly _azdataApi: azdataExt.IExtension;
@@ -31,7 +31,6 @@ export class PostgresOverviewPage extends DashboardPage {
this._azdataApi = vscode.extensions.getExtension(azdataExt.extension.name)?.exports;
this.disposables.push(
this._controllerModel.onEndpointsUpdated(() => this.eventuallyRunOnInitialized(() => this.handleEndpointsUpdated())),
this._controllerModel.onRegistrationsUpdated(() => this.eventuallyRunOnInitialized(() => this.handleRegistrationsUpdated())),
this._postgresModel.onConfigUpdated(() => this.eventuallyRunOnInitialized(() => this.handleConfigUpdated())));
}
@@ -74,29 +73,26 @@ export class PostgresOverviewPage extends DashboardPage {
CSSStyles: titleCSS
}).component());
this.kibanaLink = this.modelView.modelBuilder.hyperlink()
.withProperties<azdata.HyperlinkComponentProperties>({
label: this.getKibanaLink(),
url: this.getKibanaLink()
}).component();
this.kibanaLink = this.modelView.modelBuilder.hyperlink().component();
this.grafanaLink = this.modelView.modelBuilder.hyperlink()
.withProperties<azdata.HyperlinkComponentProperties>({
label: this.getGrafanaLink(),
url: this.getGrafanaLink()
}).component();
this.grafanaLink = this.modelView.modelBuilder.hyperlink().component();
this.kibanaLoading = this.modelView.modelBuilder.loadingComponent()
.withItem(this.kibanaLink)
.withProperties<azdata.LoadingComponentProperties>({
loading: !this._controllerModel.endpointsLastUpdated
}).component();
.withProperties<azdata.LoadingComponentProperties>(
{ loading: !this._postgresModel?.configLastUpdated }
)
.component();
this.grafanaLoading = this.modelView.modelBuilder.loadingComponent()
.withItem(this.grafanaLink)
.withProperties<azdata.LoadingComponentProperties>({
loading: !this._controllerModel.endpointsLastUpdated
}).component();
.withProperties<azdata.LoadingComponentProperties>(
{ loading: !this._postgresModel?.configLastUpdated }
)
.component();
this.refreshDashboardLinks();
this.kibanaLoading.component = this.kibanaLink;
this.grafanaLoading.component = this.grafanaLink;
const endpointsTable = this.modelView.modelBuilder.declarativeTable().withProperties<azdata.DeclarativeTableProperties>({
width: '100%',
@@ -271,27 +267,18 @@ export class PostgresOverviewPage extends DashboardPage {
];
}
private getKibanaLink(): string {
const namespace = this._postgresModel.config?.metadata.namespace;
const kibanaQuery = `kubernetes_namespace:"${namespace}" and custom_resource_name:"${this._postgresModel.info.name}"`;
return `${this._controllerModel.getEndpoint(Endpoints.logsui)?.endpoint}/app/kibana#/discover?_a=(query:(language:kuery,query:'${kibanaQuery}'))`;
private refreshDashboardLinks(): void {
if (this._postgresModel.config) {
const kibanaUrl = this._postgresModel.config.status.logSearchDashboard ?? '';
this.kibanaLink.label = kibanaUrl;
this.kibanaLink.url = kibanaUrl;
this.kibanaLoading.loading = false;
}
private getGrafanaLink(): string {
const namespace = this._postgresModel.config?.metadata.namespace;
const grafanaQuery = `var-Namespace=${namespace}&var-Name=${this._postgresModel.info.name}`;
return `${this._controllerModel.getEndpoint(Endpoints.metricsui)?.endpoint}/d/postgres-metrics?${grafanaQuery}`;
}
private handleEndpointsUpdated() {
this.kibanaLink!.label = this.getKibanaLink();
this.kibanaLink!.url = this.getKibanaLink();
this.kibanaLoading!.loading = false;
this.grafanaLink!.label = this.getGrafanaLink();
this.grafanaLink!.url = this.getGrafanaLink();
this.grafanaLoading!.loading = false;
const grafanaUrl = this._postgresModel.config.status.metricsDashboard ?? '';
this.grafanaLink.label = grafanaUrl;
this.grafanaLink.url = grafanaUrl;
this.grafanaLoading.loading = false;
}
}
private handleRegistrationsUpdated() {
@@ -302,5 +289,6 @@ export class PostgresOverviewPage extends DashboardPage {
private handleConfigUpdated() {
this.properties!.propertyItems = this.getProperties();
this.propertiesLoading!.loading = false;
this.refreshDashboardLinks();
}
}

View File

@@ -143,7 +143,9 @@ declare module 'azdata-ext' {
},
status: {
readyReplicas: string, // "1/1"
state: string, // "Ready"
state: string, // "Ready",
logSearchDashboard: string, // https://127.0.0.1:30777/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:miaa1'))
metricsDashboard: string, // https://127.0.0.1:30777/grafana/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=miaa1-0
externalEndpoint?: string // "10.91.86.39:32718"
}
}
@@ -208,7 +210,9 @@ declare module 'azdata-ext' {
status: {
externalEndpoint: string, // "10.130.12.136:26630"
readyPods: string, // "1/1",
state: string // "Ready"
state: string, // "Ready"
logSearchDashboard: string, // https://127.0.0.1:30777/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:pg1'))
metricsDashboard: string, // https://127.0.0.1:30777/grafana/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=pg1
}
}