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

Group events in (live) data view #3713

Closed
johanstokking opened this issue Jan 29, 2021 · 4 comments
Closed

Group events in (live) data view #3713

johanstokking opened this issue Jan 29, 2021 · 4 comments
Assignees
Labels
blocked This can't continue until another issue or pull request is done c/console This is related to the Console ui/web This is related to a web interface

Comments

@johanstokking
Copy link
Member

Summary

Group events in (live) data view.

Why do we need this?

With multiple active devices, the application and gateway live traffic view becomes quite overwhelming soon.

What is already there? What do you see now?

One gateway uplink message emits three events: the receive, and two identical forwards (NS and PB, but that isn't shown). The gateway status also comes in threefold, one receive and two forwards:

Screenshot 2021-01-29 at 11 36 13

One data uplink message emits at least six events, including storage. We may emit more events from integrations and packages.

Screenshot 2021-01-29 at 11 35 41

With data downlink message we also have a bunch:

Screenshot 2021-01-29 at 11 44 35

Same with join-request and join-accept.

What is missing? What do you want to see?

I would like to see grouping of events. Suggesting the following:

  1. Gateway live data

    1. Group events gs.{up,status}.{receive,forward,drop} by correlation ID gs:uplink:XXX
    2. We cannot group gs.down.* events yet. Needs Send Tx events upstream #76, specifically that GS needs to correlate the correlation ID of the downlink message to the TX acknowledgment
  2. Application and end device live data

    1. Group activation events ns.up.join.{receive,drop,process,accept.forward}, ns.up.join.{cluster,interop}.{attempt,success,fail} and ns.down.join.schedule.{attempt,success,fail} by correlation ID ns:uplink:XXX
    2. Group uplink message events ns.up.data.{receive,process,drop,forward}, as.up.data.{receive,drop,forward}, as.up.service.forward and as.up.data.decode.{fail,warning} events by correlation ID ns:uplink:XXX
    3. Group downlink message events as.down.data.{receive,forward,drop}, as.down.data.encode.{fail,warning} and ns.down.data.schedule.{attempt,success,fail} events by correlation ID as:downlink:XXX

Notes:

  • This doesn't cover all events, but that's fine for now
  • Grouping under (2) only works if both NS and AS are in the cluster. If it's NS or AS only, don't group

How do you propose to implement this?

For each of the groupings above, show one row, with icons and text to show what happened. For example, for each gs.up.forward event, put a forward icon in the row, and same for a failure.

It should still be possible to somehow expand or list the grouped events.

Implementation notes:

  • This really needs to be implemented in the front-end; I don't see a role for the Event Server for this, as that is a proprietary component
  • Historical events may be loaded, on which grouping should be applied in retrospect
  • Events may arrive out-of-order, so grouping may happen in retrospect

How do you propose to test this?

Integration testing.

@rvolosatovs @adriansmares can help with all the scenarios and see if everything works as expected.

Can you do this yourself and submit a Pull Request?

Can review, test and provide input here if needed.

@johanstokking johanstokking added c/console This is related to the Console ui/web This is related to a web interface labels Jan 29, 2021
@johanstokking johanstokking added this to the February 2021 milestone Jan 29, 2021
@kschiffer
Copy link
Contributor

kschiffer commented Feb 15, 2021

In the console meeting today, we concluded that we will want to solve the immediate issue by adding event filters first (which will be set by default, based on the number of entities in the event scope). Also we need to look into solving some performance issues of the event stream that might warrant some store and display logic refactors (see #2887). After this we should be good to take a look into grouping, which is unfortunately not straightforward and needs some proper planning both in terms of UX and implementation-wise.

@kschiffer kschiffer added the blocked This can't continue until another issue or pull request is done label Feb 15, 2021
@htdvisser htdvisser modified the milestones: February 2021, March 2021 Mar 1, 2021
@johanstokking johanstokking modified the milestones: March 2021, Next Up Mar 1, 2021
@kschiffer kschiffer modified the milestones: Next Up, 2021 Q3 Jun 1, 2021
@kschiffer
Copy link
Contributor

Related: #3817

@johanstokking johanstokking removed this from the 2021 Q3 milestone Jul 13, 2021
@johanstokking
Copy link
Member Author

johanstokking commented Jul 13, 2021

Planning gets tracked in #3817

@NicolasMrad
Copy link
Contributor

Given the new verbose filter, which addresses some of the issues, this is not in the current plan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked This can't continue until another issue or pull request is done c/console This is related to the Console ui/web This is related to a web interface
Projects
None yet
Development

No branches or pull requests

5 participants