Merge pull request #1688 from grafana/gareth/add-feature-tracking

track executed queries and panel clicks
This commit is contained in:
Gareth Dawson
2023-09-28 13:41:50 +01:00
committed by GitHub
4 changed files with 60 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import {
toDataFrame, toDataFrame,
} from '@grafana/data'; } from '@grafana/data';
import { AnnotationQueryEditor } from './components/AnnotationQueryEditor'; import { AnnotationQueryEditor } from './components/AnnotationQueryEditor';
import { trackRequest } from './tracking';
export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDSOptions> { export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDSOptions> {
name: string; name: string;
@@ -113,6 +114,8 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
* @return {Object} Grafana metrics object with timeseries data for each target. * @return {Object} Grafana metrics object with timeseries data for each target.
*/ */
query(request: DataQueryRequest<ZabbixMetricsQuery>) { query(request: DataQueryRequest<ZabbixMetricsQuery>) {
trackRequest(request);
// Migrate old targets // Migrate old targets
const requestTargets = request.targets.map((t) => { const requestTargets = request.targets.map((t) => {
// Prevent changes of original object // Prevent changes of original object

View File

@@ -15,6 +15,7 @@ jest.mock(
getTemplateSrv: () => ({ getTemplateSrv: () => ({
replace: jest.fn().mockImplementation((query) => query), replace: jest.fn().mockImplementation((query) => query),
}), }),
reportInteraction: jest.fn(),
}), }),
{ virtual: true } { virtual: true }
); );

View File

@@ -0,0 +1,46 @@
import { DataQueryRequest } from '@grafana/data';
import { ZabbixMetricsQuery } from './types';
import { reportInteraction } from '@grafana/runtime';
import {
MODE_ITEMID,
MODE_ITSERVICE,
MODE_MACROS,
MODE_METRICS,
MODE_PROBLEMS,
MODE_TEXT,
MODE_TRIGGERS,
} from './constants';
export const trackRequest = (request: DataQueryRequest<ZabbixMetricsQuery>): void => {
request.targets.forEach((target) => {
const properties: any = {
app: request.app,
};
switch (target.queryType) {
case MODE_METRICS:
properties.queryType = 'Metrics';
break;
case MODE_ITSERVICE:
properties.queryType = 'Services';
break;
case MODE_TEXT:
properties.queryType = 'Text';
break;
case MODE_ITEMID:
properties.queryType = 'Item Id';
break;
case MODE_TRIGGERS:
properties.queryType = 'Triggers';
break;
case MODE_PROBLEMS:
properties.queryType = 'Problems';
break;
case MODE_MACROS:
properties.queryType = 'Macros';
break;
}
reportInteraction('grafana_zabbix_query_executed', properties);
});
};

View File

@@ -14,6 +14,7 @@ import { ProblemDTO, ZBXAlert, ZBXEvent, ZBXTag } from '../../../datasource/type
import { APIExecuteScriptResponse, ZBXScript } from '../../../datasource/zabbix/connectors/zabbix_api/types'; import { APIExecuteScriptResponse, ZBXScript } from '../../../datasource/zabbix/connectors/zabbix_api/types';
import { AckCell } from './AckCell'; import { AckCell } from './AckCell';
import { DataSourceRef, TimeRange } from '@grafana/data'; import { DataSourceRef, TimeRange } from '@grafana/data';
import { reportInteraction } from '@grafana/runtime';
export interface ProblemListProps { export interface ProblemListProps {
problems: ProblemDTO[]; problems: ProblemDTO[];
@@ -77,6 +78,8 @@ export default class ProblemList extends PureComponent<ProblemListProps, Problem
}; };
handleExpandedChange = (expanded: any, event: any) => { handleExpandedChange = (expanded: any, event: any) => {
reportInteraction('grafana_zabbix_panel_row_expanded', {});
const { problems, pageSize } = this.props; const { problems, pageSize } = this.props;
const { page } = this.state; const { page } = this.state;
const expandedProblems = {}; const expandedProblems = {};
@@ -259,7 +262,13 @@ export default class ProblemList extends PureComponent<ProblemListProps, Problem
)} )}
expanded={this.getExpandedPage(this.state.page)} expanded={this.getExpandedPage(this.state.page)}
onExpandedChange={this.handleExpandedChange} onExpandedChange={this.handleExpandedChange}
onPageChange={(page) => this.setState({ page })} onPageChange={(page) => {
reportInteraction('grafana_zabbix_panel_page_change', {
action: page > this.state.page ? 'next' : 'prev',
});
this.setState({ page });
}}
onPageSizeChange={this.handlePageSizeChange} onPageSizeChange={this.handlePageSizeChange}
onResizedChange={this.handleResizedChange} onResizedChange={this.handleResizedChange}
/> />