IngressMonitorController
IngressMonitorController copied to clipboard
Add Instana support
Instana: https://www.instana.com/
Here is a suggestion for a basic implementation of an Instana monitor. Note that there are a couple of questions included in the text where there are some uncertainties.
The aim of this implementation is to create a basic monitor for Instana APM.
Basically, the implementation will use the Instana API for adding Application perspectives: https://instana.github.io/openapi/#tag/Application-Settings
The application perspective id:s provided by Instana will be used as identifiers for Remove and Update operations. Question: Is persistency of id:s something that needs to be considered? E.g. in case the process is restarted and the monitor id:s are only stored in memory.
The mapping of the monitor interface methods to Instana operations is fairly straightforward:
GetAll -> GET All Application Configurations
Add -> POST Add application configuration
Comment: In this first simple implementation, boundaryScope will be set to "DEFAULT" and scope will be set to "INCLUDE_ALL_DOWNSTREAM". The application perspective label (visible name in Instana) will be provided in monitor config. A cluster name (provided in monitor config) and a cluster namespace (provided from EndpointMonitor) will be used as matching parameters for Instanas service discovery.
Update -> PUT Update application configuration
Comment: In this basic version of the implementation, only updating label will be supported (in case the application changes name).
GetByName -> GET Application configuration
Remove -> DEL Delete application configuration
Setup -> No instana API connection.
Comment: Setup authentication params for Instana API. An apiToken needs to be provided to this method. https://instana.github.io/openapi/#section/Authentication
Equal -> No instana API connection
Comment: This method is either missing or just returning false in other implementations. Question: Can we implement with simple "return false"?
In the current implementation we are aiming to pass namespace and clustername to Instana for the setup of monitoring. The question is how these values will be available during runtime execution? Will the be included in the monitor passed as an argument to the Add method? Or will they be provided through some configuration YAML?
Hi @hanlin513, hope you are doing well.
in case the process is restarted and the monitor id:s are only stored in memory.
We can add monitor id to the status of EndpointMonitor CR in that case
Question: Can we implement with simple "return false"?
This I a very vital method and is supposed to be implemented to save redundant API calls etc. It was left empty because we don't have active access to all the service providers that we support atm. So, it becomes difficult to implement and maintain. We expect it to be maintained by our community.
pass namespace and clustername to Instana for the setup of monitoring
Are these values supposed to change at runtime and during the execution of the pod? Considering that ideally, EndpointMonitors should be independent of cluster-specific details/bindings(coming from global config) they will be better of in the InstanaConfig which will be similar to this
Although if you think it shouldn't be tied to each EndpointMonitor CR and should be the same for an instance of IMC. Then you should define that in the config similar to this
This issue is stale because it has been open for 60 days with no activity.
This issue was closed because it has been inactive for 30 days since being marked as stale.
Reopening issues that inadvertently were closed as stale
This issue is stale because it has been open for 60 days with no activity.