mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-05 17:53:12 +02:00
chore: add unknown flag metric for unique flag names (#10601)
https://linear.app/unleash/issue/2-3845/add-metric-for-unique-unknown-flag-names Adds a new unknown flag metric for unique unknown flag names. <img width="864" height="126" alt="image" src="https://github.com/user-attachments/assets/c20ce53e-eff3-4cda-af4b-f2c2aae8575c" />
This commit is contained in:
parent
778eaa9873
commit
d5f834e851
@ -37,12 +37,16 @@ export type QueryParams = {
|
|||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type CountParams = {
|
||||||
|
unique?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
export interface IUnknownFlagsStore {
|
export interface IUnknownFlagsStore {
|
||||||
insert(flags: UnknownFlagReport[]): Promise<void>;
|
insert(flags: UnknownFlagReport[]): Promise<void>;
|
||||||
getAll(params?: QueryParams): Promise<UnknownFlag[]>;
|
getAll(params?: QueryParams): Promise<UnknownFlag[]>;
|
||||||
clear(hoursAgo: number): Promise<void>;
|
clear(hoursAgo: number): Promise<void>;
|
||||||
deleteAll(): Promise<void>;
|
deleteAll(): Promise<void>;
|
||||||
count(): Promise<number>;
|
count(params?: CountParams): Promise<number>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class UnknownFlagsStore implements IUnknownFlagsStore {
|
export class UnknownFlagsStore implements IUnknownFlagsStore {
|
||||||
@ -157,8 +161,12 @@ export class UnknownFlagsStore implements IUnknownFlagsStore {
|
|||||||
await this.db(TABLE).delete();
|
await this.db(TABLE).delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
async count(): Promise<number> {
|
async count({ unique }: CountParams = {}): Promise<number> {
|
||||||
const row = await this.db(TABLE).count('* as count').first();
|
const countQuery = unique
|
||||||
|
? this.db(TABLE).countDistinct({ count: 'name' }).first()
|
||||||
|
: this.db(TABLE).count('* as count').first();
|
||||||
|
|
||||||
|
const row = await countQuery;
|
||||||
return Number(row?.count ?? 0);
|
return Number(row?.count ?? 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -761,7 +761,12 @@ export function registerPrometheusMetrics(
|
|||||||
|
|
||||||
const unknownFlagsGauge = createGauge({
|
const unknownFlagsGauge = createGauge({
|
||||||
name: 'unknown_flags',
|
name: 'unknown_flags',
|
||||||
help: 'Number of unknown flags reported in the last 24 hours, if any. Maximum of 1000.',
|
help: 'Number of unknown flag reports (name + app + env) in the last 24 hours, if any.',
|
||||||
|
});
|
||||||
|
|
||||||
|
const unknownFlagsUniqueNamesGauge = createGauge({
|
||||||
|
name: 'unknown_flags_unique_names',
|
||||||
|
help: 'Number of unique unknown flag names reported in the last 24 hours, if any.',
|
||||||
});
|
});
|
||||||
|
|
||||||
// register event listeners
|
// register event listeners
|
||||||
@ -1230,6 +1235,11 @@ export function registerPrometheusMetrics(
|
|||||||
const unknownFlags = await stores.unknownFlagsStore.count();
|
const unknownFlags = await stores.unknownFlagsStore.count();
|
||||||
unknownFlagsGauge.reset();
|
unknownFlagsGauge.reset();
|
||||||
unknownFlagsGauge.set(unknownFlags);
|
unknownFlagsGauge.set(unknownFlags);
|
||||||
|
|
||||||
|
const unknownFlagsUniqueNames =
|
||||||
|
await stores.unknownFlagsStore.count({ unique: true });
|
||||||
|
unknownFlagsUniqueNamesGauge.reset();
|
||||||
|
unknownFlagsUniqueNamesGauge.set(unknownFlagsUniqueNames);
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user