Skip to content

Commit

Permalink
Changed to primary average instead of total
Browse files Browse the repository at this point in the history
  • Loading branch information
igoristic committed Apr 6, 2021
1 parent febe3f9 commit 290259a
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 13 deletions.
4 changes: 2 additions & 2 deletions docs/user/monitoring/kibana-alerts.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ by running checks on a schedule time of 1 minute with a re-notify interval of 6
[[kibana-alerts-large-shard-size]]
== Large shard size

This alert is triggered if a large (primary) shard size is found on any of the
specified index patterns. The trigger condition is met if an index's shard size is
This alert is triggered if a large average shard size (across associated primaries) is found on any of the
specified index patterns. The trigger condition is met if an index's (primary average) shard size is
55gb or higher in the last 5 minutes. The alert is grouped across all indices that match
the default patter of `*` by running checks on a schedule time of 1 minute with a re-notify
interval of 12 hours.
Expand Down
4 changes: 2 additions & 2 deletions x-pack/plugins/monitoring/common/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ export const ALERT_DETAILS = {
paramDetails: {
threshold: {
label: i18n.translate('xpack.monitoring.alerts.shardSize.paramDetails.threshold.label', {
defaultMessage: `Notify when average shard size exceeds this size`,
defaultMessage: `Notify when primary average shard size exceeds this value`,
}),
type: AlertParamType.Number,
append: 'GB',
Expand All @@ -494,7 +494,7 @@ export const ALERT_DETAILS = {
defaultMessage: 'Shard size',
}),
description: i18n.translate('xpack.monitoring.alerts.shardSize.description', {
defaultMessage: 'Alert if an index (primary) shard is oversize.',
defaultMessage: 'Alert if an index (primary) shard average is oversize.',
}),
},
};
Expand Down
2 changes: 1 addition & 1 deletion x-pack/plugins/monitoring/common/types/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ export interface ElasticsearchNodeStats {
export interface ElasticsearchIndexStats {
index?: string;
shards: {
total: number;
primaries: number;
};
primaries?: {
docs?: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ export class LargeShardSizeAlert extends BaseAlert {
description: i18n.translate(
'xpack.monitoring.alerts.shardSize.actionVariables.shardIndex',
{
defaultMessage: 'List of indices which are experiencing large shard size.',
defaultMessage:
'List of indices which are experiencing large (primary average) shard size.',
}
),
},
Expand Down Expand Up @@ -100,7 +101,7 @@ export class LargeShardSizeAlert extends BaseAlert {
const { shardIndex, shardSize } = item.meta as IndexShardSizeUIMeta;
return {
text: i18n.translate('xpack.monitoring.alerts.shardSize.ui.firingMessage', {
defaultMessage: `The following index: #start_link{shardIndex}#end_link has a large shard size of: {shardSize}GB at #absolute`,
defaultMessage: `The following index: #start_link{shardIndex}#end_link has a large (primary average) shard size of: {shardSize}GB at #absolute`,
values: {
shardIndex,
shardSize,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ export async function fetchIndexShardSize(
_source: {
includes: [
'_index',
'index_stats.shards.total',
'index_stats.total.store.size_in_bytes',
'index_stats.shards.primaries',
'index_stats.primaries.store.size_in_bytes',
'source_node.name',
'source_node.uuid',
],
Expand Down Expand Up @@ -137,13 +137,17 @@ export async function fetchIndexShardSize(
_source: { source_node: sourceNode, index_stats: indexStats },
} = topHit;

const { total: totalShards } = indexStats?.shards;
const { size_in_bytes: shardSizeBytes = 0 } = indexStats?.total?.store!;
if (!shardSizeBytes) {
if (!indexStats || !indexStats.primaries) {
continue;
}

const { primaries: totalPrimaryShards } = indexStats.shards;
const { size_in_bytes: primaryShardSizeBytes = 0 } = indexStats.primaries.store!;
if (!primaryShardSizeBytes) {
continue;
}
const { name: nodeName, uuid: nodeId } = sourceNode;
const avgShardSize = shardSizeBytes ? shardSizeBytes / totalShards : 0;
const avgShardSize = primaryShardSizeBytes ? primaryShardSizeBytes / totalPrimaryShards : 0;
const shardSize = +(avgShardSize / gbMultiplier).toFixed(2);
if (shardSize < thresholdGB) {
continue;
Expand Down

0 comments on commit 290259a

Please sign in to comment.