wso2 / product-microgateway

Choreo Connect is a cloud-native, open-source, and developer-centric API gateway.
https://wso2.com/choreo/choreo-connect/
Apache License 2.0
293 stars 252 forks source link

[Choreo Connect 1.2.0] Analytics - Optimize Custom Data Provider #3526

Open Manasha11 opened 4 months ago

Manasha11 commented 4 months ago

Description

If a Custom Data Provider class is implemented, the method [1] is being invoked twice at [2]. This can be optimzed.

[1] https://github.com/wso2/product-microgateway/blob/main/samples/analytics-custom-data-provider/src/main/java/org/wso2/carbon/apimgt/gateway/sample/publisher/CustomDataProvider.java#L36 [2] https://github.com/wso2/product-microgateway/blob/main/enforcer-parent/enforcer/src/main/java/org/wso2/choreo/connect/enforcer/analytics/ChoreoAnalyticsProvider.java#L227-L228

Steps to Reproduce

  1. Create a Custom Analytics Data Provider JAR similar to [1] and add logs for tracking purposes between lines [2] and [3].
  2. Mount the above Jar to /resources/enforcer/dropins folder.
  3. Create a Custom Reporter JAR similar to [4].
  4. Mount the above Jar to /resources/enforcer/dropins folder.
  5. Add new loggers to the Enforcer by adding the following configuration.
    
    logger.org-wso2-analytics-publisher.name = org.wso2.carbon.apimgt.gateway.sample.publisher
    logger.org-wso2-analytics-publisher.level = TRACE
    logger.org-wso2-analytics-publisher.appenderRef.CARBON_TRACE_LOGFILE.ref = ENFORCER_ANALYTICS

logger.org-wso2-analytics-reporter.name = org.wso2.am.analytics.publisher logger.org-wso2-analytics-reporter.level = TRACE logger.org-wso2-analytics-reporter.appenderRef.CARBON_TRACE_LOGFILE.ref = ENFORCER_ANALYTICS

6. Append the newly added loggers as below.
`loggers = org-wso2-analytics-publisher, org-wso2-analytics-reporter, enforcer, io-swagger-v3, enforcer-interceptors, carbon-apimgt`

7. Update the <CC_HOME>/docker-compose/choreo-connect(-with-apim)/conf/config.toml file with the following configurations.

[analytics] enabled = true type = "ELK" [analytics.adapter] bufferFlushInterval = "1s" bufferSizeBytes = 16384 gRPCRequestTimeout = "20s" [analytics.adapter.customProperties] enabled = true requestHeaders = ["host","content-type","content-length", "authorization","x-forwarded-for","x-original-forwarded-for","x-client-dn", ":path", ":authority"] responseHeaders = ["etag", "content-length"] [analytics.enforcer] [analytics.enforcer.configProperties] "publisher.reporter.class" = "org.wso2.am.analytics.publisher.sample.reporter.CustomReporter" "publisher.custom.data.provider.class" = "org.wso2.carbon.apimgt.gateway.sample.publisher.CustomDataProvider"


8. Deploy an API in Choreo Connect, generate a token and Invoke it.

### Version

1.2.0

### Environment Details (with versions)

_No response_

### Relevant Log Output

_No response_

### Related Issues

_No response_

### Suggested Labels

_No response_