Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Security Solution] AI Assistant telemetry #162653

Merged
merged 46 commits into from
Aug 15, 2023

Conversation

stephmilovic
Copy link
Contributor

@stephmilovic stephmilovic commented Jul 27, 2023

Summary

  1. Adds Event Based Telemetry for AI Assistant:
  • Assistant Invoked
  • Assistant Message Sent
  • Assistant Quick Prompt

Update 8/2: @andrew-goldstein pointed out that user input should not be tracked, and we allow custom input for both conversationId and quick prompt titles. I added a commit to mask any user input id/quick prompt title with "Custom"

  1. Enhances current usage collection telemetry for actions:
  • Includes the apiProvider in a new field in the response-ops telemetry index this field is mapped to: connectors.all.totalByGenAiProviderType
  • Here is the PR in telemetry where the new field is mapped: https://github.com/elastic/telemetry/pull/2424
  • And here is our new field showing in telemetry-v2-staging:
    Screenshot 2023-08-02 at 11 16 17 AM

I've created a gorgeous Dashboard to show off this new telemetry. The top 3 visualizations are from the connector usage collector telemetry (Data View: response-ops) and the bottom 3 visualizations are the new EBT (Data View: ebt-kibana-browser)

a

@stephmilovic stephmilovic added release_note:skip Skip the PR/issue when compiling release notes Team:Threat Hunting Security Solution Threat Hunting Team Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. Team:Threat Hunting:Explore v8.10.0 labels Jul 27, 2023
@stephmilovic stephmilovic requested review from a team as code owners July 27, 2023 17:01
@elasticmachine
Copy link
Contributor

Pinging @elastic/security-solution (Team: SecuritySolution)

@elasticmachine
Copy link
Contributor

Pinging @elastic/security-threat-hunting (Team:Threat Hunting)

@@ -548,6 +548,15 @@
},
"actionTypeId": {
"type": "keyword"
},
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a change in x-pack/plugins/actions/server/saved_objects/mappings.ts, so I believe i will need it here too?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd really prefer the mappings not be extended. Can you not access this field from the script in action_telemetry.ts? If for some reason it's not in doc, it should be in source. I suspect you could also "add" a field during the telemetry query as a runtime-field added to the search.

@@ -352,7 +355,13 @@ const TabsContentComponent: React.FC<BasicTimelineTab> = ({

const setSecurityAssistantAsActiveTab = useCallback(() => {
setActiveTab(TimelineTabs.securityAssistant);
}, [setActiveTab]);
if (activeTab !== TimelineTabs.securityAssistant) {
reportAssistantInvoked({
Copy link
Contributor Author

@stephmilovic stephmilovic Jul 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to do all of the telemetry from the assistant package, but the rendering in timeline proved difficult and I did not want a bunch of consumer related code (ie: isTimeline) in the assistant package. Therefore, this is the sole EBT tracker called from security solution for assistant

state.types.put(actionType, state.types.containsKey(actionType) ? state.types.get(actionType) + 1 : 1);
if (actionType =~ /.gen-ai/) {
String genAiActionType = actionType +"__"+ doc['action.config.apiProvider'].value;
state.types.put(genAiActionType, state.types.containsKey(genAiActionType) ? state.types.get(genAiActionType) + 1 : 1);
Copy link
Contributor Author

@stephmilovic stephmilovic Jul 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ymao1 The only enhancement I needed to make to this telemetry was to answer the question, what apiProvider is the connector? In order to stay out of the telemetry repo and change as little as possible, I decided to split the .gen-ai connectors count up by the provider. Please let me know if you agree with that approach or if there is any impact I may not have considered? I'm wondering about the response-ops data view and if I need to do something to get those fields to be in that data view by default, I currently added them as Runtime Fields to get my dashboard working

before:

count_by_type: {
  '__gen-ai': 2,
}

after:

count_by_type: {
  '__gen-ai__Azure OpenAI': 1,
  '__gen-ai__OpenAI': 1
}

In my dashboard, I accounted for the sum of the three possible values to count the total of GenAI connectors for pre 8.10 data:
Screenshot 2023-07-27 at 1 18 08 PM

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, I am now creating a new field countGenAiProviderTypes. I am still doing the key as explained above in painless, but putting the data in the agreed structure with JS below. This is tested in actions_telemetry.test.ts by it('getCounts' ...

Copy link
Member

@pmuellr pmuellr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we'd prefer to not modify the connector mappings. Changing the telemetry keys for gen-ai to include the provider in they key could also be problematic/confusing.

Makes me wonder if we should really be doing this as a completely separate piece of telemetry, vs part of the connector telemetry.

Not sure. Thoughts @mikecote?

@@ -66,7 +66,7 @@ export const stateSchemaByVersion = {
avg_execution_time_by_type_per_day: schema.recordOf(schema.string(), schema.number()),
count_connector_types_by_action_run_outcome_per_day: schema.recordOf(
schema.string(),
schema.number()
schema.recordOf(schema.string(), schema.number())
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

huh, same change is being made in this PR #161096 ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏎️

@@ -548,6 +548,15 @@
},
"actionTypeId": {
"type": "keyword"
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd really prefer the mappings not be extended. Can you not access this field from the script in action_telemetry.ts? If for some reason it's not in doc, it should be in source. I suspect you could also "add" a field during the telemetry query as a runtime-field added to the search.

x-pack/plugins/actions/server/usage/actions_telemetry.ts Outdated Show resolved Hide resolved
Copy link
Member

@pmuellr pmuellr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - noticed there's a typo I often make in regexp's; not escaping ., as typically it matches any single char. Code will work as is, since . matches "any single char", but we probably want to fix that, as it matches too widely.

x-pack/plugins/actions/server/usage/actions_telemetry.ts Outdated Show resolved Hide resolved
x-pack/plugins/actions/server/usage/actions_telemetry.ts Outdated Show resolved Hide resolved
}): { fn: keyof AssistantTelemetry; params: AssistantTelemetry[keyof AssistantTelemetry] } =>
fn({
...rest,
conversationId: getAnonymizedConversationId(conversationId),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this maps all non-default conversationIds that flow through the useAssistantTelemetry hook to a single value: Custom

@stephmilovic
Copy link
Contributor Author

@elasticmachine merge upstream

@stephmilovic
Copy link
Contributor Author

@elasticmachine merge upstream

@angorayc
Copy link
Contributor

angorayc commented Aug 14, 2023

I did an experiment on this PR, added an extra telemetry field context.batchId, so I can match my logged event to staging.

Data can be found on staging

Test 1

assistant_telemetry.mov
{
    "ebt_event": {
        "timestamp": "2023-08-14T09:04:49.310Z",
        "event_type": "Assistant Invoked",
        "context": {
            "isDev": true,
            "isDistributable": false,
            "version": "8.10.0",
            "branch": "main",
            "buildNum": 9007199254740991,
            "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
            "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
            "preferred_language": "en-US",
            "preferred_languages": [
                "en-US",
                "en"
            ],
            "viewport_width": 2560,
            "viewport_height": 934,
            "cluster_name": "elasticsearch",
            "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
            "cluster_version": "8.10.0-SNAPSHOT",
            "pageName": "application:securitySolutionUI:app",
            "applicationId": "securitySolutionUI",
            "page": "app",
            "entityId": "new",
            "page_title": "Elastic",
            "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
            "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
            "license_status": "active",
            "license_type": "trial",
            "labels": {},
            "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
            "isElasticCloudUser": false
        },
        "properties": {
            "batchId": "2bd7f34f-297e-4e4e-a4b3-a35a0d534cca",
            "conversationId": "Alert summary",
            "invokedBy": "click"
        }
    }
}

{
    "timestamp": "2023-08-14T09:05:09.235Z",
    "event_type": "Assistant Quick Prompt",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "a27f33db-f0a3-4620-9baf-7b52857cfb3e",
        "conversationId": "Data Quality dashboard",
        "promptTitle": "Agent integration advice"
    }
}

{
    "timestamp": "2023-08-14T09:05:27.685Z",
    "event_type": "Assistant Quick Prompt",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "f80eb5b1-c72c-463a-8c58-5cb705c11edf",
        "conversationId": "Data Quality dashboard",
        "promptTitle": "Workflow suggestions"
    }
}

{
    "timestamp": "2023-08-14T09:05:41.023Z",
    "event_type": "Assistant Message Sent",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "180c5d7a-64c3-4b2a-a81d-a10caa01c244",
        "conversationId": "Data Quality dashboard",
        "role": "user"
    }
}

{
    "timestamp": "2023-08-14T09:06:06.291Z",
    "event_type": "Assistant Message Sent",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "c7c89b84-9ff7-48ba-aa87-877610a7da98",
        "conversationId": "Data Quality dashboard",
        "role": "assistant"
    }
}

Test 2

assistant_telemetry_2.mov
{
    "ebt_event": {
        "timestamp": "2023-08-14T09:08:23.653Z",
        "event_type": "Assistant Invoked",
        "context": {
            "isDev": true,
            "isDistributable": false,
            "version": "8.10.0",
            "branch": "main",
            "buildNum": 9007199254740991,
            "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
            "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
            "preferred_language": "en-US",
            "preferred_languages": [
                "en-US",
                "en"
            ],
            "viewport_width": 2560,
            "viewport_height": 934,
            "cluster_name": "elasticsearch",
            "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
            "cluster_version": "8.10.0-SNAPSHOT",
            "pageName": "application:securitySolutionUI:app",
            "applicationId": "securitySolutionUI",
            "page": "app",
            "entityId": "new",
            "page_title": "Elastic",
            "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
            "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
            "license_status": "active",
            "license_type": "trial",
            "labels": {},
            "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
            "isElasticCloudUser": false
        },
        "properties": {
            "batchId": "e411a861-727c-4066-b3e7-7a7fd8f820f1",
            "conversationId": "Alert summary",
            "invokedBy": "click"
        }
    }
}

{
    "timestamp": "2023-08-14T09:08:35.686Z",
    "event_type": "Assistant Quick Prompt",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "1b35fa3c-2854-4917-a032-b2c781c2bc58",
        "conversationId": "Alert summary",
        "promptTitle": "Query conversion"
    }
}

{
    "timestamp": "2023-08-14T09:08:48.575Z",
    "event_type": "Assistant Message Sent",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "b53407c7-6305-4c2d-9637-4c60df7cc55a",
        "conversationId": "Alert summary",
        "role": "user"
    }
}

{
    "timestamp": "2023-08-14T09:08:52.374Z",
    "event_type": "Assistant Message Sent",
    "context": {
        "isDev": true,
        "isDistributable": false,
        "version": "8.10.0",
        "branch": "main",
        "buildNum": 9007199254740991,
        "buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "session_id": "dd833747-7c9c-4e5e-9cf0-6167cf212f55",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "preferred_language": "en-US",
        "preferred_languages": [
            "en-US",
            "en"
        ],
        "viewport_width": 2560,
        "viewport_height": 934,
        "cluster_name": "elasticsearch",
        "cluster_uuid": "nHRXpAf0QjGk7Laa67gzPg",
        "cluster_version": "8.10.0-SNAPSHOT",
        "pageName": "application:securitySolutionUI:app",
        "applicationId": "securitySolutionUI",
        "page": "app",
        "entityId": "new",
        "page_title": "Elastic",
        "page_url": "/app/security/alerts#?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))",
        "license_id": "a0e41567-23cd-4d36-95b1-855f65e072f0",
        "license_status": "active",
        "license_type": "trial",
        "labels": {},
        "userId": "986051385feae5b9850804db2d701c0b029ad24f09bce340c12aee7a5c8a0391",
        "isElasticCloudUser": false
    },
    "properties": {
        "batchId": "18c6a95e-63d3-4c5b-9e14-0d478ae6b98a",
        "conversationId": "Alert summary",
        "role": "assistant"
    }
}

Copy link
Contributor

@andrew-goldstein andrew-goldstein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @stephmilovic for adding this telemetry 🙏
LGTM

@stephmilovic
Copy link
Contributor Author

@elasticmachine merge upstream

@stephmilovic
Copy link
Contributor Author

@elasticmachine merge upstream

@stephmilovic stephmilovic enabled auto-merge (squash) August 15, 2023 01:03
@stephmilovic stephmilovic merged commit d829927 into elastic:main Aug 15, 2023
@kibana-ci
Copy link
Collaborator

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] Explore - Security Solution Cypress Tests #1 / Alerts timeline Privileges: can crud "before each" hook for "should allow a user with crud privileges to attach alerts to cases" "before each" hook for "should allow a user with crud privileges to attach alerts to cases"
  • [job] [logs] Explore - Security Solution Cypress Tests #1 / Alerts timeline Privileges: read only "before each" hook for "should not allow user with read only privileges to attach alerts to existing cases" "before each" hook for "should not allow user with read only privileges to attach alerts to existing cases"
  • [job] [logs] Security Solution Cypress Tests #2 / Detections : Page Filters with data modificiation Alert list is updated when the alerts are updated Alert list is updated when the alerts are updated
  • [job] [logs] Defend Workflows Cypress Tests #1 / Endpoint Policy Response from Endpoint List page should display policy response with errors should display policy response with errors
  • [job] [logs] Defend Workflows Cypress Tests #1 / Endpoint Policy Response from Fleet Agent Details page should display policy response with errors should display policy response with errors

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
securitySolution 4409 4412 +3

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/elastic-assistant 45 58 +13

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
securitySolution 15.6MB 15.6MB +7.1KB

Public APIs missing exports

Total count of every type that is part of your API that should be exported but is not. This will cause broken links in the API documentation system. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats exports for more detailed information.

id before after diff
@kbn/elastic-assistant 3 4 +1

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
securitySolution 61.3KB 62.5KB +1.2KB
Unknown metric groups

API count

id before after diff
@kbn/elastic-assistant 64 77 +13

ESLint disabled in files

id before after diff
@kbn/elastic-assistant 0 1 +1

Total ESLint disabled count

id before after diff
@kbn/elastic-assistant 18 19 +1

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport:skip This commit does not require backporting release_note:skip Skip the PR/issue when compiling release notes Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. Team:Threat Hunting:Explore Team:Threat Hunting Security Solution Threat Hunting Team v8.10.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants