Skip to content

Commit

Permalink
Add observer entity to synthrace
Browse files Browse the repository at this point in the history
  • Loading branch information
gbamparop committed May 20, 2022
1 parent 9445e65 commit 98f4ee4
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 31 deletions.
2 changes: 1 addition & 1 deletion packages/elastic-apm-synthtrace/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
export { timerange } from './lib/timerange';
export { apm } from './lib/apm';
export { stackMonitoring } from './lib/stack_monitoring';
export { agentConfig } from './lib/agent_config';
export { observer } from './lib/agent_config';
export { cleanWriteTargets } from './lib/utils/clean_write_targets';
export { createLogger, LogLevel } from './lib/utils/create_logger';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,19 @@
* Side Public License, v 1.
*/

import { Entity } from '../entity';
import { AgentConfigFields } from './agent_config_fields';
import { AgentConfigMetrics } from './agent_config_metrics';
import { Metricset } from '../apm/metricset';

export class AgentConfig extends Entity<AgentConfigFields> {
metrics() {
return new AgentConfigMetrics({
...this.fields,
export class AgentConfig extends Metricset<AgentConfigFields> {
constructor() {
super({
'metricset.name': 'agent_config',
agent_config_applied: 1,
});
}
}

export function agentConfig(etag: string) {
return new AgentConfig({
'labels.etag': etag,
});
etag(etag: string) {
this.fields['labels.etag'] = etag;
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
* Side Public License, v 1.
*/

export { agentConfig } from './agent_config';
export { observer } from './observer';
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,16 @@
* Side Public License, v 1.
*/

import { Metricset } from '../apm/metricset';
import { AgentConfigFields } from './agent_config_fields';
import { AgentConfig } from './agent_config';
import { Entity } from '../entity';

export class AgentConfigMetrics extends Metricset<AgentConfigFields> {
constructor(fields: AgentConfigFields) {
super({
'metricset.name': 'agent_config',
...fields,
});
export class Observer extends Entity<AgentConfigFields> {
agentConfig() {
return new AgentConfig();
}
}

timestamp(timestamp: number): this {
super.timestamp(timestamp);
this.fields['event.ingested'] = new Date(timestamp).getTime();
return this;
}
export function observer() {
return new Observer({});
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Side Public License, v 1.
*/

import { agentConfig, timerange } from '../..';
import { observer, timerange } from '../..';
import { Scenario } from '../scenario';
import { getLogger } from '../utils/get_common_services';
import { RunOptions } from '../utils/parse_run_cli_flags';
Expand All @@ -17,15 +17,15 @@ const scenario: Scenario<AgentConfigFields> = async (runOptions: RunOptions) =>

return {
generate: ({ from, to }) => {
const agentConfigMetrics = agentConfig('test-etag').metrics();
const agentConfig = observer().agentConfig();

const range = timerange(from, to);
return range
.interval('30s')
.rate(1)
.generator((timestamp) => {
const events = logger.perf('generating_agent_config_events', () => {
return agentConfigMetrics.timestamp(timestamp);
return agentConfig.etag('test-etag').timestamp(timestamp);
});
return events;
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { timerange, agentConfig } from '@elastic/apm-synthtrace';
import { timerange, observer } from '@elastic/apm-synthtrace';
import type { ApmSynthtraceEsClient } from '@elastic/apm-synthtrace';

export async function addAgentConfigMetrics({
Expand All @@ -18,13 +18,13 @@ export async function addAgentConfigMetrics({
end: number;
etag?: string;
}) {
const agentConfigMetrics = agentConfig(etag ?? 'test-etag').metrics();
const agentConfig = observer().agentConfig();

const agentConfigEvents = [
timerange(start, end)
.interval('1m')
.rate(1)
.generator((timestamp) => agentConfigMetrics.timestamp(timestamp)),
.generator((timestamp) => agentConfig.etag(etag ?? 'test-etag').timestamp(timestamp)),
];

await synthtraceEsClient.index(agentConfigEvents);
Expand Down

0 comments on commit 98f4ee4

Please sign in to comment.