Skip to main content

Considerations

If you wish to create custom instrumentations for Go, Java, or PHP applications, you can define a “Custom Instrumentation” rule via the Odigos InstrumentationRule CRD or the Odigos UI. This feature is a great way to extend Odigos’s auto-instrumentation capabilities to cover your specific use cases and application logic. For Go and Java, custom instrumentation is applied dynamically via eBPF. For PHP, probes are delivered as environment variables and require a pod restart to take effect.

Configuration Options

When functionName is specified, receiverName and receiverMethodName must NOT be specified, and vice versa, if receiverName and receiverMethodName are specified, functionName must NOT be specified.packageName is required in all cases.
packageName string - The name of the package containing the function to instrument.
  • This field is required
functionName string - The name of the function to instrument.
  • This field is optional
receiverName string - The name of the receiver type if the function is a method.
  • This field is optional
receiverMethodName string - The name of the method receiver if the function is a method.
  • This field is optional
className string - The fully qualified name of the class containing the method to instrument.
  • This field is required
methodName string - The name of the method to instrument.
  • This field is required
className string - The fully qualified class name to instrument. Leave empty for a global function.
  • This field is optional
functionName string - The name of the function or method to instrument.
  • This field is required

Basic Example

The following example shows how to create a “Custom Instrumentation” rule that instruments a function named ProcessOrder in the github.com/example/ecommerce package.
1
Create a YAML file named custom-instrumentation.yaml with the following content:
2
Apply the action to the cluster: