[8.6] [Fleet] Fix agent status computation to support agent v2 uppercase (#146757) (#146789)

# Backport

This will backport the following commits from `main` to `8.6`:
- [[Fleet] Fix agent status computation to support agent v2 uppercase
(#146757)](https://github.com/elastic/kibana/pull/146757)

<!--- Backport version: 8.9.7 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Nicolas
Chaulet","email":"nicolas.chaulet@elastic.co"},"sourceCommit":{"committedDate":"2022-12-01T14:12:53Z","message":"[Fleet]
Fix agent status computation to support agent v2 uppercase
(#146757)","sha":"11451129d2b3c14e989a4071d188937af98a614d","branchLabelMapping":{"^v8.7.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Fleet","v8.6.0","v8.7.0"],"number":146757,"url":"https://github.com/elastic/kibana/pull/146757","mergeCommit":{"message":"[Fleet]
Fix agent status computation to support agent v2 uppercase
(#146757)","sha":"11451129d2b3c14e989a4071d188937af98a614d"}},"sourceBranch":"main","suggestedTargetBranches":["8.6"],"targetPullRequestStates":[{"branch":"8.6","label":"v8.6.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.7.0","labelRegex":"^v8.7.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/146757","number":146757,"mergeCommit":{"message":"[Fleet]
Fix agent status computation to support agent v2 uppercase
(#146757)","sha":"11451129d2b3c14e989a4071d188937af98a614d"}}]}]
BACKPORT-->

Co-authored-by: Nicolas Chaulet <nicolas.chaulet@elastic.co>
This commit is contained in:
Kibana Machine 2022-12-01 10:53:30 -05:00 committed by GitHub
parent 37558e76f1
commit fa936350f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 77 additions and 9 deletions

View file

@ -33,10 +33,10 @@ export function getAgentStatus(agent: Agent | FleetServerAgent): AgentStatus {
return 'unenrolling';
}
if (agent.last_checkin_status === 'error') {
if (agent.last_checkin_status?.toLowerCase() === 'error') {
return 'error';
}
if (agent.last_checkin_status === 'degraded') {
if (agent.last_checkin_status?.toLowerCase() === 'degraded') {
return 'degraded';
}
@ -61,10 +61,10 @@ export function getPreviousAgentStatusForOfflineAgents(
return 'unenrolling';
}
if (agent.last_checkin_status === 'error') {
if (agent.last_checkin_status?.toLowerCase() === 'error') {
return 'error';
}
if (agent.last_checkin_status === 'degraded') {
if (agent.last_checkin_status?.toLowerCase() === 'degraded') {
return 'degraded';
}
@ -96,7 +96,7 @@ export function buildKueryForOnlineAgents(path: string = ''): string {
}
export function buildKueryForErrorAgents(path: string = ''): string {
return `(${path}last_checkin_status:error or ${path}last_checkin_status:degraded) ${addExclusiveKueryFilter(
return `(${path}last_checkin_status:error or ${path}last_checkin_status:degraded or ${path}last_checkin_status:DEGRADED or ${path}last_checkin_status:ERROR) ${addExclusiveKueryFilter(
[buildKueryForOfflineAgents, buildKueryForUnenrollingAgents],
path
)}`;

View file

@ -372,6 +372,30 @@ describe('test endpoint routes', () => {
minimum_should_match: 1,
},
},
{
bool: {
should: [
{
match: {
'united.agent.last_checkin_status': 'DEGRADED',
},
},
],
minimum_should_match: 1,
},
},
{
bool: {
should: [
{
match: {
'united.agent.last_checkin_status': 'ERROR',
},
},
],
minimum_should_match: 1,
},
},
],
minimum_should_match: 1,
},

View file

@ -170,6 +170,32 @@ export const expectedCompleteUnitedIndexQuery = {
minimum_should_match: 1,
},
},
{
bool: {
should: [
{
match: {
'united.agent.last_checkin_status':
'DEGRADED',
},
},
],
minimum_should_match: 1,
},
},
{
bool: {
should: [
{
match: {
'united.agent.last_checkin_status':
'ERROR',
},
},
],
minimum_should_match: 1,
},
},
],
minimum_should_match: 1,
},
@ -248,6 +274,24 @@ export const expectedCompleteUnitedIndexQuery = {
minimum_should_match: 1,
},
},
{
bool: {
should: [
{
match: { 'united.agent.last_checkin_status': 'DEGRADED' },
},
],
minimum_should_match: 1,
},
},
{
bool: {
should: [
{ match: { 'united.agent.last_checkin_status': 'ERROR' } },
],
minimum_should_match: 1,
},
},
],
minimum_should_match: 1,
},

View file

@ -93,7 +93,7 @@ describe('test filtering endpoint hosts by agent status', () => {
const status = ['healthy'];
const kuery = buildStatusesKuery(status);
expect(kuery).toMatchInlineSnapshot(
`"(united.agent.last_checkin:* AND not ((united.agent.last_checkin < now-300s) or ((((united.agent.upgrade_started_at:*) and not (united.agent.upgraded_at:*)) or (not (united.agent.last_checkin:*)) or (united.agent.unenrollment_started_at:*) or (not united.agent.policy_revision_idx:*)) AND not ((united.agent.last_checkin < now-300s) or ((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*))))) or ((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))))"`
`"(united.agent.last_checkin:* AND not ((united.agent.last_checkin < now-300s) or ((((united.agent.upgrade_started_at:*) and not (united.agent.upgraded_at:*)) or (not (united.agent.last_checkin:*)) or (united.agent.unenrollment_started_at:*) or (not united.agent.policy_revision_idx:*)) AND not ((united.agent.last_checkin < now-300s) or ((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded or united.agent.last_checkin_status:DEGRADED or united.agent.last_checkin_status:ERROR) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*))))) or ((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded or united.agent.last_checkin_status:DEGRADED or united.agent.last_checkin_status:ERROR) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))))"`
);
});
@ -107,7 +107,7 @@ describe('test filtering endpoint hosts by agent status', () => {
const status = ['unhealthy'];
const kuery = buildStatusesKuery(status);
expect(kuery).toMatchInlineSnapshot(
`"((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))"`
`"((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded or united.agent.last_checkin_status:DEGRADED or united.agent.last_checkin_status:ERROR) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))"`
);
});
@ -115,7 +115,7 @@ describe('test filtering endpoint hosts by agent status', () => {
const status = ['updating'];
const kuery = buildStatusesKuery(status);
expect(kuery).toMatchInlineSnapshot(
`"((((united.agent.upgrade_started_at:*) and not (united.agent.upgraded_at:*)) or (not (united.agent.last_checkin:*)) or (united.agent.unenrollment_started_at:*) or (not united.agent.policy_revision_idx:*)) AND not ((united.agent.last_checkin < now-300s) or ((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))))"`
`"((((united.agent.upgrade_started_at:*) and not (united.agent.upgraded_at:*)) or (not (united.agent.last_checkin:*)) or (united.agent.unenrollment_started_at:*) or (not united.agent.policy_revision_idx:*)) AND not ((united.agent.last_checkin < now-300s) or ((united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded or united.agent.last_checkin_status:DEGRADED or united.agent.last_checkin_status:ERROR) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))))"`
);
});
@ -130,7 +130,7 @@ describe('test filtering endpoint hosts by agent status', () => {
const statuses = ['offline', 'unhealthy'];
const kuery = buildStatusesKuery(statuses);
expect(kuery).toMatchInlineSnapshot(
`"(united.agent.last_checkin < now-300s OR (united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))"`
`"(united.agent.last_checkin < now-300s OR (united.agent.last_checkin_status:error or united.agent.last_checkin_status:degraded or united.agent.last_checkin_status:DEGRADED or united.agent.last_checkin_status:ERROR) AND not ((united.agent.last_checkin < now-300s) or (united.agent.unenrollment_started_at:*)))"`
);
});
});