mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[ResponseOps][Alerting] Store rule name in alerting event log documents (#140441)
* Removing secondary query * Adding field to agg * Removing log statement * Fixing types * Adding rule name to function tests
This commit is contained in:
parent
4c6dc3c86d
commit
286d542635
8 changed files with 37 additions and 35 deletions
|
@ -49,6 +49,7 @@ export interface IExecutionLog {
|
|||
schedule_delay_ms: number;
|
||||
timed_out: boolean;
|
||||
rule_id: string;
|
||||
rule_name: string;
|
||||
}
|
||||
|
||||
export interface IExecutionErrors {
|
||||
|
|
|
@ -278,6 +278,7 @@ describe('getExecutionLogAggregation', () => {
|
|||
'error.message',
|
||||
'kibana.version',
|
||||
'rule.id',
|
||||
'rule.name',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -482,6 +483,7 @@ describe('getExecutionLogAggregation', () => {
|
|||
'error.message',
|
||||
'kibana.version',
|
||||
'rule.id',
|
||||
'rule.name',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -686,6 +688,7 @@ describe('getExecutionLogAggregation', () => {
|
|||
'error.message',
|
||||
'kibana.version',
|
||||
'rule.id',
|
||||
'rule.name',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -776,7 +779,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'S4wIZX8B8TGQpG7XQZns',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -860,7 +863,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'a4wIZX8B8TGQpG7Xwpnz',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
|
||||
event: {
|
||||
outcome: 'success',
|
||||
|
@ -940,6 +943,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3074,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
{
|
||||
id: '41b2755e-765a-4044-9745-b03875d5e79a',
|
||||
|
@ -961,6 +965,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
@ -1015,7 +1020,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'S4wIZX8B8TGQpG7XQZns',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'failure',
|
||||
},
|
||||
|
@ -1102,7 +1107,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'a4wIZX8B8TGQpG7Xwpnz',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -1181,6 +1186,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3074,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
{
|
||||
id: '41b2755e-765a-4044-9745-b03875d5e79a',
|
||||
|
@ -1202,6 +1208,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
@ -1256,7 +1263,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'dJkWa38B1ylB1EvsAckB',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -1335,7 +1342,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'a4wIZX8B8TGQpG7Xwpnz',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -1414,6 +1421,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: true,
|
||||
schedule_delay_ms: 3074,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
{
|
||||
id: '41b2755e-765a-4044-9745-b03875d5e79a',
|
||||
|
@ -1435,6 +1443,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
@ -1489,7 +1498,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: '7xKcb38BcntAq5ycFwiu',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -1573,7 +1582,7 @@ describe('formatExecutionLogResult', () => {
|
|||
_id: 'zRKbb38BcntAq5ycOwgk',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule_name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -1652,6 +1661,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
{
|
||||
id: '61bb867b-661a-471f-bf92-23471afa10b3',
|
||||
|
@ -1673,6 +1683,7 @@ describe('formatExecutionLogResult', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3133,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
|
|
@ -17,6 +17,7 @@ import { IExecutionLog, IExecutionLogResult } from '../../common';
|
|||
const DEFAULT_MAX_BUCKETS_LIMIT = 1000; // do not retrieve more than this number of executions
|
||||
|
||||
const RULE_ID_FIELD = 'rule.id';
|
||||
const RULE_NAME_FIELD = 'rule.name';
|
||||
const PROVIDER_FIELD = 'event.provider';
|
||||
const START_FIELD = 'event.start';
|
||||
const ACTION_FIELD = 'event.action';
|
||||
|
@ -265,6 +266,7 @@ export function getExecutionLogAggregation({
|
|||
ERROR_MESSAGE_FIELD,
|
||||
VERSION_FIELD,
|
||||
RULE_ID_FIELD,
|
||||
RULE_NAME_FIELD,
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -336,6 +338,7 @@ function formatExecutionLogAggBucket(bucket: IExecutionUuidAggBucket): IExecutio
|
|||
const version = outcomeAndMessage ? outcomeAndMessage?.kibana?.version ?? '' : '';
|
||||
|
||||
const ruleId = outcomeAndMessage ? outcomeAndMessage?.rule?.id ?? '' : '';
|
||||
const ruleName = outcomeAndMessage ? outcomeAndMessage?.rule?.name ?? '' : '';
|
||||
return {
|
||||
id: bucket?.key ?? '',
|
||||
timestamp: bucket?.ruleExecution?.executeStartTime.value_as_string ?? '',
|
||||
|
@ -355,6 +358,7 @@ function formatExecutionLogAggBucket(bucket: IExecutionUuidAggBucket): IExecutio
|
|||
schedule_delay_ms: scheduleDelayUs / Millis2Nanos,
|
||||
timed_out: timedOut,
|
||||
rule_id: ruleId,
|
||||
rule_name: ruleName,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ describe('getRuleExecutionLogRoute', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule-name',
|
||||
},
|
||||
{
|
||||
id: '41b2755e-765a-4044-9745-b03875d5e79a',
|
||||
|
@ -67,6 +68,7 @@ describe('getRuleExecutionLogRoute', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3008,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule-name',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
|
@ -47,6 +47,7 @@ describe('getRuleExecutionLogRoute', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
{
|
||||
id: '41b2755e-765a-4044-9745-b03875d5e79a',
|
||||
|
@ -68,6 +69,7 @@ describe('getRuleExecutionLogRoute', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3008,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule_name',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
|
@ -944,32 +944,7 @@ export class RulesClient {
|
|||
}
|
||||
);
|
||||
|
||||
const formattedResult = formatExecutionLogResult(aggResult);
|
||||
const ruleIds = [...new Set(formattedResult.data.map((l) => l.rule_id))].filter(
|
||||
Boolean
|
||||
) as string[];
|
||||
const ruleNameIdEntries = await Promise.all(
|
||||
ruleIds.map(async (id) => {
|
||||
try {
|
||||
const result = await this.get({ id });
|
||||
return [id, result.name];
|
||||
} catch (e) {
|
||||
return [id, id];
|
||||
}
|
||||
})
|
||||
);
|
||||
const ruleNameIdMap: Record<string, string> = ruleNameIdEntries.reduce(
|
||||
(result, [key, val]) => ({ ...result, [key]: val }),
|
||||
{}
|
||||
);
|
||||
|
||||
return {
|
||||
...formattedResult,
|
||||
data: formattedResult.data.map((entry) => ({
|
||||
...entry,
|
||||
rule_name: ruleNameIdMap[entry.rule_id!],
|
||||
})),
|
||||
};
|
||||
return formatExecutionLogResult(aggResult);
|
||||
} catch (err) {
|
||||
this.logger.debug(
|
||||
`rulesClient.getGlobalExecutionLogWithAuth(): error searching global event log: ${err.message}`
|
||||
|
|
|
@ -145,6 +145,7 @@ const aggregateResults = {
|
|||
_source: {
|
||||
rule: {
|
||||
id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
name: 'rule-name',
|
||||
},
|
||||
event: {
|
||||
outcome: 'success',
|
||||
|
@ -248,7 +249,7 @@ const aggregateResults = {
|
|||
_id: 'a4wIZX8B8TGQpG7Xwpnz',
|
||||
_score: 1.0,
|
||||
_source: {
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef' },
|
||||
rule: { id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef', name: 'rule-name' },
|
||||
event: {
|
||||
outcome: 'success',
|
||||
},
|
||||
|
@ -377,6 +378,7 @@ describe('getExecutionLogForRule()', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3126,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule-name',
|
||||
},
|
||||
{
|
||||
id: '41b2755e-765a-4044-9745-b03875d5e79a',
|
||||
|
@ -398,6 +400,7 @@ describe('getExecutionLogForRule()', () => {
|
|||
timed_out: false,
|
||||
schedule_delay_ms: 3345,
|
||||
rule_id: 'a348a740-9e2c-11ec-bd64-774ed95c43ef',
|
||||
rule_name: 'rule-name',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
|
|
@ -74,6 +74,7 @@ export default function createGetExecutionLogTests({ getService }: FtrProviderCo
|
|||
|
||||
let previousTimestamp: string | null = null;
|
||||
for (const log of execLogs) {
|
||||
expect(log.rule_name).to.equal('abc');
|
||||
if (previousTimestamp) {
|
||||
// default sort is `desc` by timestamp
|
||||
expect(Date.parse(log.timestamp)).to.be.lessThan(Date.parse(previousTimestamp));
|
||||
|
@ -177,6 +178,7 @@ export default function createGetExecutionLogTests({ getService }: FtrProviderCo
|
|||
expect(execLogs.length).to.eql(1);
|
||||
|
||||
for (const log of execLogs) {
|
||||
expect(log.rule_name).to.equal('abc');
|
||||
expect(log.duration_ms).to.be.greaterThan(0);
|
||||
expect(log.schedule_delay_ms).to.be.greaterThan(0);
|
||||
expect(log.status).to.equal('success');
|
||||
|
@ -314,6 +316,7 @@ export default function createGetExecutionLogTests({ getService }: FtrProviderCo
|
|||
expect(execLogs.length).to.eql(1);
|
||||
|
||||
for (const log of execLogs) {
|
||||
expect(log.rule_name).to.equal('abc');
|
||||
expect(log.status).to.equal('success');
|
||||
|
||||
expect(log.num_active_alerts).to.equal(1);
|
||||
|
@ -372,6 +375,7 @@ export default function createGetExecutionLogTests({ getService }: FtrProviderCo
|
|||
expect(execLogs.length).to.eql(1);
|
||||
|
||||
for (const log of execLogs) {
|
||||
expect(log.rule_name).to.equal('abc');
|
||||
expect(log.status).to.equal('success');
|
||||
|
||||
expect(log.num_active_alerts).to.equal(1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue