-
Notifications
You must be signed in to change notification settings - Fork 281
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
Entity relationship synthesis with the New Relic eBPF agent
#1421
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Missing required creator property 'name' (index 0)
at [Source: (StringReader); line: 37, column: 38] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["name"])
* Error PARSING domainType: 'ebpf-redis_server' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Missing required creator property 'name' (index 0)
at [Source: (StringReader); line: 44, column: 34] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["name"])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Missing required creator property 'name' (index 0)
at [Source: (StringReader); line: 37, column: 38] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["name"])
* Error PARSING domainType: 'ebpf-redis_server' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Missing required creator property 'name' (index 0)
at [Source: (StringReader); line: 44, column: 34] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["name"])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.JsonMappingException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 5, column 1:
# Client Entity for Server-Cap ...
^
at [Source: (StringReader); line: 4, column: 8] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"])
* Error PARSING domainType: 'ebpf-redis_server' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.JsonMappingException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 5, column 1:
# Server Entity for Server-Cap ...
^
at [Source: (StringReader); line: 4, column: 8] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.JsonMappingException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 5, column 1:
# Client Entity for Server-Cap ...
^
at [Source: (StringReader); line: 4, column: 8] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"])
* Error PARSING domainType: 'ebpf-redis_server' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.JsonMappingException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 5, column 1:
# Server Entity for Server-Cap ...
^
at [Source: (StringReader); line: 4, column: 8] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"])
Let's validate those changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `String` from Object value (token `JsonToken.START_OBJECT`)
at [Source: (StringReader); line: 8, column: 9] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["identifier"])
Let's validate those changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `String` from Object value (token `JsonToken.START_OBJECT`)
at [Source: (StringReader); line: 8, column: 9] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["identifier"])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `String` from Object value (token `JsonToken.START_OBJECT`)
at [Source: (StringReader); line: 8, column: 9] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[0]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["identifier"])
Let's validate those changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-client' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Missing required creator property 'name' (index 0)
at [Source: (StringReader); line: 37, column: 36] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[1]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["name"])
* Error PARSING domainType: 'ebpf-redis_server' on entitydefinitionemitter.models.BaseEntityDefinition - jackson.databind.exc.MismatchedInputException: Missing required creator property 'name' (index 0)
at [Source: (StringReader); line: 44, column: 32] (through reference chain: entitydefinitionemitter.models.BaseEntityDefinition["synthesis"]->entitydefinitionemitter.models.CustomEntitySynthesisRules["rules"]->ArrayList[1]->entitydefinitionsclientsynthesis.models.definitions.EntitySynthesisRule["name"])
Let's validate those changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beep boop bop.
I have found some errors processing these changes:
* Error PARSING domainType: 'ebpf-redis_server' on dashboards for key 'newRelic' - entitydefinitionemitter.repositories.github.FileNotFoundException: No file dashboard.json on repository folder ebpf-redis_server
5f2836e
to
a7aab51
Compare
Signed-off-by: Benjamin Kilimnik <[email protected]>
a7aab51
to
ad8b47b
Compare
Relevant information
This PR provides initial prototype entity definitions for the eBPF agent.
Main ideas:
Note that in the agent, one span represents both a request and response. Currently, we cannot create two entities from a single span with NR synthesis rules. We can, however, trace a span from the client’s perspective and from the server’s point of view, as long as the ebpf agent is deployed on all hosts. Thus for entity and relationship synthesis, we can connect these two spans, one client-side and one server-side. If one side of the connection is missing, we create an uninstrumented entity for it. Ideally, we'd want to create both entities from one span, but we cannot have two rules that match the same thing with current NR entity synthesis rules.
In the current prototype, we create a
server
entity from the server-captured span, and aclient
entity from the client-captured span.Cases:
1. Both client and server-side spans present
Note that the direction of the connection is arbitrary, we could flip it and see the same result.
Likewise, if the client and server are on the same host, the ebpf agent will still provide two spans.
2. Span missing on the client-side
If we fail to capture a client-side span because, for instance, there is no ebpf agent deployed on that host, then we create a server entity from the server-side span, and an uninstrumented entity for the client.
3. Span missing on the server-side
If the server-side span is missing, then we create a client entity from the client-side span, and an uninstrumented entity for the server.
Checklist
identifier
will be unique and valid.