Closed smith closed 1 month ago
Should the grid be an embeddable?
@crespocarlos you mean lens embeddable?
@kpatticha more like if we should also make this inventory grid an embeddable so that people could add it to their dashboards - for the future, obviously
@crespocarlos that's a good point but given the time constraints I would suggest to focus on the table, since it's needed anyways and revisit the idea of embeddable later.
Unless you believe we need to do the other way around to avoid technical depth?
@kpatticha Yeah, let's leave it for later.
The new inventory page we should show the list of entities from EEM using the latest index
We should specify how we're doing this. I'm assuming we're using an ES client configured with the entity indexes. If possible, we should do search, pagination, and sorting through ES|QL and the filtering through the KQL bar. I guess that means we need a server internal API endpoint?
If possible, we should do search, pagination, and sorting through ES|QL and the filtering through the KQL bar.
ES|QL doesn't support pagination yet (see https://github.com/elastic/elasticsearch/issues/100000).
Ability to sort by any column
Are we sorting on the server or the 500 returned items on the client?
Are we sorting on the server or the 500 returned items on the client?
We should specify how we're doing this. I'm assuming we're using an ES client configured with the entity indexes.
Reuse the entity client we created for the new service inventory page.
const entitiesESClient = await createEntitiesESClient({
request,
esClient: coreContext.elasticsearch.client.asCurrentUser,
});
If possible, we should do search, pagination, and sorting through ES|QL and the filtering through the KQL bar. I guess that means we need a server internal API endpoint?
If I'm not mistaken, Caue previously attempted to use ES|QL with the new service inventory page and logs but encountered some limitations. Given the time constraints, it may not be feasible to explore this further right now. I think it would be best to stick with the solutions we already have in place and explore ES|QL in the future, what do you think @smith ?
fwiw, there's references here: https://github.com/elastic/kibana/pull/193082. using ES|QL is fairly easy and you can combine it with ES DSL (and thus KQL).
Display 500 entities (the user will only be able to paginate through the first 500)
What is this limit based on?
Entities with multiple datastream types should be listed in separate rows.
I don't understand the thinking on this, the goal of using entities is to make the signal types more opaque, it's the same entity so why split it across two rows?
The design shows only host/container/service but this should be built for any type of entity being present in the system, not just based on the built in definitions the stack will ship with.
It looks like the names are links, do they open some kind of details flyout or are they meant to link to another page? If a user has a custom entity definition, what happens to this link? If the user has their own definition for type host
, does the entity details page for type host
still work?
Similarly, I can see that the type
row has some custom icons and labelling but that row will have to account for the fact that a user might install a custom definition of an unexpected type. The type filter selector also needs to show all those options.
Also, consider that there may be users who also run a security use case in the same cluster (since EEM is not space aware), you'll end up with whatever entities the Security solution finds as well, so the solution needs to account for this as well.
Why is cloud.availability_zone
there and why are we assuming it's a single value for all entity types (it obviously isn't for services and not sure if we can guarantee it for hosts and containers)? And what is the value to the user? It feels like we are just trying to fill up the table with content.
I don't understand the thinking on this, the goal of using entities is to make the signal types more opaque, it's the same entity so why split it across two rows?
To link to the appropriate page.
The design shows only host/container/service but this should be built for any type of entity being present in the system, not just based on the built in definitions the stack will ship with.
We won't be adding any filter to only display these entities, we just mentioned that because this will be supported at this point.
It looks like the names are links, do they open some kind of details flyout or are they meant to link to another page? If a user has a custom entity definition, what happens to this link? If the user has their own definition for type host, does the entity details page for type host still work?
They will link to each solution, apm/hosts/discover... We're not worried about the edge case at this point.
Similarly, I can see that the type row has some custom icons and labelling but that row will have to account for the fact that a user might install a custom definition of an unexpected type. The type filter selector also needs to show all those options.
The icon is there but we're still evaluating and thinking about this. For this first iteration, I won't be adding any icons.
Why is cloud.availability_zone there
@roshan-elastic šš»
Why is cloud.availability_zone there and why are we assuming it's a single value for all entity types (it obviously isn't for services and not sure if we can guarantee it for hosts and containers)?
I'm not assuming this will be a single value, I'll ungroup it to show one per line.
I'm not assuming this will be a single value, I'll ungroup it to show one per line.
We'll deal with it in the same way as with e.g. environments in APM? show tags for each value, in the same row?
They will link to each solution, apm/hosts/discover... We're not worried about the edge case at this point.
It's not the edge case, trust me š
We'll deal with it in the same way as with e.g. environments in APM? show tags for each value, in the same row?
No, we'll have a new row for each item.
e.g: foo | central-foo-1 foo | central-foo-2 foo | central-foo-3
Why is cloud.availability_zone there
@cauemarcondes - Is there a complication with including it? If so, we can remove it.
The question is not about being easy or not, is more about does it make sense to have it on the table or are we just adding to fill up the table with content?
It will be helpful for some users - not others. It depends :)
If it's trivial to add it - I'd like to add it. If we can save a bunch of time then I'd prefer to descope it.
I suggest leaving it out for now.
Cool let's remove it then @cauemarcondes
We had a discussion and we agreed:
Hey, thank you @kpatticha for the update on Figma.
Summary
The new inventory page we should show the list of entities from EEM using the latest index
Designs
(Screenshot taken on 12.09.2024)
Column names and popovers
entity. displayName
)entity.type
)entity.lastSeenTimestamp
)Acceptance criteria
Entities with multiple datastream types should be listed in separate rows.Columns formatting
cloud.availability_zones
- https://github.com/elastic/kibana/issues/192975I created a separate ticket for formatting the columns, as I think it will be easier to review and test it separately. However, whoever picks this ticket feel free to work on both ticket if you think it's better.