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

Tracee Configuration API #636

Closed
5 tasks
itaysk opened this issue Mar 22, 2021 · 12 comments
Closed
5 tasks

Tracee Configuration API #636

itaysk opened this issue Mar 22, 2021 · 12 comments

Comments

@itaysk
Copy link
Collaborator

itaysk commented Mar 22, 2021

In order to allow configuration of tracee-ebpf during runtime, for example to change filters, an API definition is required to communicate to tracee-ebpf.
This API can then be implemented through gRPC, HTTP or any other integration method deemed appropriate.

work breakdown from #636 (comment):

  • Load/unload a bpf program in runtime
  • Attach/detach an event to a bpf program in runtime
  • (depends on 1+2) - enable/disable events in runtime
  • Update filters in runtime (Tracee-eBPF Filter configuration API #1726 )
  • Update capture options in runtime
@yanivagman
Copy link
Collaborator

Having a unix socket may be a better fit for this use case

@grantseltzer
Copy link
Contributor

What is the use case for this where tracee couldn't just restart? Could we start a new instance of tracee-ebpf and then close the old one?

@itaysk
Copy link
Collaborator Author

itaysk commented Mar 24, 2021

+ @eidans

@itaysk
Copy link
Collaborator Author

itaysk commented May 18, 2021

@itaysk
Copy link
Collaborator Author

itaysk commented Sep 15, 2021

related discussions:
#405
#454

@rafaeldtinoco
Copy link
Contributor

One thing that will allow this to happen is the discussion being made at:

aquasecurity/libbpfgo#78 (comment)

which will allow links to be detached/destroyed and re-attached/created again.

@yanivagman
Copy link
Collaborator

This issue is too big. I think we should split it to the following issues:

  1. Load/unload a bpf program in runtime
  2. Attach/detach an event to a bpf program in runtime
  3. (depends on 1+2) - enable/disable events in runtime
  4. Update filters in runtime
  5. Update capture options in runtime

@itaysk
Copy link
Collaborator Author

itaysk commented Oct 23, 2021

I get that the PR that will fix this issue is too big. but do you think the issue is too big as well? If we split it into multiple issues, are they meaningful on their own or only in the context of this feature request? for now I've created your breakdown suggestion as subtasks under this issue. If you/others prefer it as individual issues, go for it! (you can click the "covert to issue" button next to each task)

@mtcherni95
Copy link
Contributor

I think we should achieve most of the requirements by for example adding a gRPC server within tracee-ebpf. We can define in a proto a grpc service like "Configuration" with many rpcs, each of them regarding a "domain" like update of filter, captures, events and so on.

@itaysk
Copy link
Collaborator Author

itaysk commented Nov 12, 2021

We should consider what's the widest common interface that tracee's users would like. I'm not sure that's GRPC

@yanivagman
Copy link
Collaborator

Updated the issue to include things from #1725, which is a dup

@yanivagman yanivagman modified the milestones: v0.13.0, v0.14.0 Mar 1, 2023
@yanivagman yanivagman modified the milestones: v0.14.0, v0.15.0 Mar 22, 2023
@yanivagman yanivagman mentioned this issue Apr 9, 2023
4 tasks
@yanivagman yanivagman removed this from the v0.15.0 milestone Apr 9, 2023
@yanivagman
Copy link
Collaborator

Closing in favor of #2991

@yanivagman yanivagman closed this as not planned Won't fix, can't repro, duplicate, stale Apr 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants