Troubleshoot > Work with Diagnostic ProvidersCreate a Diagnostic Provider
Use Diagnostic Providers to query the startup configuration, current configuration, and current state of a diagnostic domain. Diagnostic Providers also provide access to any self diagnostic tests available from a diagnostic domain.
To complete this task we must have programming knowledge of the system and the proper authorities to perform the following steps.
The steps that follow outline a general process for creating Diagnostic Providers (DP).
- Determine your diagnostic domain. Look for configuration MBeans that control a similar domain in the same component. Extending an existing configuration MBean with a DP interface avoids proliferation of new MBeans and has the benefit that mapping from a diagnostic MBean to a configuration MBean requires no additional information.
- Determine what configuration attributes to expose. Include information used to configure your component from the configuration MBeans.
- Determine what state attributes to expose. Anything we might want to know about the state of your component for troubleshooting can go here.
- Determine what self diagnostic tests you will expose.
- Determine what test attributes you will return for each self diagnostic.
- Create your DP registration XML file.
- Create your DP implementation.
- To see an example, refer to Implement a Diagnostic Provider and keep in mind that most things that a Diagnostic Provider should do are already done for you in the DiagnosticProviderHelper class.
- To ensure that we do not collect unwanted data, add hooks in your component code where we need to collect state data using the DiagnosticConfig object.
- Add hooks in your component code where we need to store or be able to access configuration data.
- Add code to register your DP implementation.
Typically, the best place to do this is where your component is initialized.
- Add Diagnostic Provider IDs (DPID) to the logged messages. Registering a DPID with a logger makes that information available in any messages logged with this logger. This enables fast paths in the DP utility to function on this particular Diagnostic Provider.
- Register your DPID with your loggers (for any of your loggers that we only want to associate a single DPID with).
- When we use multiple DPIDs with the same Logger, we can (instead of registering a single DPID with a Logger) add DPIDs to individual logging calls in the parm[0] position. Do not put {0} in the corresponding localized messages. It is bad practice to print the DPID in your messages as this would be inconsistent with messages from loggers with statically assigned DPIDs.
Subtopics
- Diagnostic Provider Extensible Markup Language
- Choose a Diagnostic Provider name
- Implement a Diagnostic Provider
- Create a Diagnostic Provider registration XML file