-
Notifications
You must be signed in to change notification settings - Fork 12
Add observability backend #236
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
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| final sql:Client credentialsDbClient = check new jdbc:Client( | ||
| "jdbc:h2:file:./database/credentialsdb;MODE=MySQL;AUTO_SERVER=TRUE", | ||
| "sa", | ||
| "jdbc:h2:file:./database/credentialsdb;MODE=MySQL;AUTO_SERVER=TRUE", | ||
| "sa", | ||
| "" | ||
| ); |
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.
Log Improvement Suggestion No: 1
| final sql:Client credentialsDbClient = check new jdbc:Client( | |
| "jdbc:h2:file:./database/credentialsdb;MODE=MySQL;AUTO_SERVER=TRUE", | |
| "sa", | |
| "jdbc:h2:file:./database/credentialsdb;MODE=MySQL;AUTO_SERVER=TRUE", | |
| "sa", | |
| "" | |
| ); | |
| final sql:Client credentialsDbClient = check new jdbc:Client( | |
| "jdbc:h2:file:./database/credentialsdb;MODE=MySQL;AUTO_SERVER=TRUE", | |
| "sa", | |
| "" | |
| ); | |
| log:printInfo("Successfully initialized credentials database client"); |
| // HTTP service configuration | ||
| listener http:Listener observabilityListener = new (observabilityServerPort, | ||
| config = { | ||
| host: serverHost, | ||
| secureSocket: { | ||
| key: { | ||
| path: keystorePath, | ||
| password: keystorePassword | ||
| } | ||
| } | ||
| } |
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.
Log Improvement Suggestion No: 2
| // HTTP service configuration | |
| listener http:Listener observabilityListener = new (observabilityServerPort, | |
| config = { | |
| host: serverHost, | |
| secureSocket: { | |
| key: { | |
| path: keystorePath, | |
| password: keystorePassword | |
| } | |
| } | |
| } | |
| listener http:Listener observabilityListener = new (observabilityServerPort, | |
| config = { | |
| host: serverHost, | |
| secureSocket: { | |
| key: { | |
| path: keystorePath, | |
| password: keystorePassword | |
| } | |
| } | |
| } | |
| ); | |
| log:printInfo("Initializing observability listener on port: " + observabilityServerPort.toString()); |
| resource function post logs(http:Request request, types:LogEntryRequest logRequest) returns types:LogEntriesResponse|error { | ||
| log:printInfo("Received log request for component: " + logRequest.componentId); | ||
|
|
||
| // Invoke observability backend | ||
| return check observabilityClient->post("/observability/logs/", logRequest); | ||
| } |
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.
Log Improvement Suggestion No: 3
| resource function post logs(http:Request request, types:LogEntryRequest logRequest) returns types:LogEntriesResponse|error { | |
| log:printInfo("Received log request for component: " + logRequest.componentId); | |
| // Invoke observability backend | |
| return check observabilityClient->post("/observability/logs/", logRequest); | |
| } | |
| resource function post logs(http:Request request, types:LogEntryRequest logRequest) returns types:LogEntriesResponse|error { | |
| log:printInfo("Received log request for component: " + logRequest.componentId); | |
| // Invoke observability backend | |
| return check observabilityClient->post("/observability/logs/", logRequest); | |
| log:printDebug("Forwarding log request to observability backend for component: " + logRequest.componentId); | |
| types:LogEntriesResponse|error response = observabilityClient->post("/observability/logs/", logRequest); | |
| if response is error { | |
| log:printError("Failed to forward log request: " + response.message()); | |
| return response; | |
| } | |
| log:printDebug("Successfully processed log request for component: " + logRequest.componentId); | |
| return response; |
| log:printDebug("OpenSearch query: " + searchRequest.toJsonString()); | ||
|
|
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.
Log Improvement Suggestion No: 4
| log:printDebug("OpenSearch query: " + searchRequest.toJsonString()); | |
| resource function post logs(@http:Header {name: "X-API-Key"} string? apiKeyHeader, http:Request request, types:LogEntryRequest logRequest) returns types:LogEntriesResponse|error { | |
| log:printInfo("Received log request for component: " + logRequest.componentId); | |
| // Build OpenSearch query | |
| json query = buildLogQuery(logRequest); | |
| // Execute search against OpenSearch | |
| string sortOrder = logRequest.sort == "asc" ? "asc" : "desc"; | |
| json searchRequest = { | |
| "query": query, | |
| "size": logRequest.'limit, | |
| "sort": [ | |
| {"@timestamp": sortOrder} | |
| ] | |
| }; | |
| log:printDebug("OpenSearch query: " + searchRequest.toJsonString()); | |
| // Call OpenSearch | |
| json searchResponse = check opensearchClient->post("/ballerina-application-logs-*/_search", searchRequest); | |
| log:printDebug("OpenSearch search completed successfully"); |
| } | ||
|
|
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.
Log Improvement Suggestion No: 5
| } | |
| // Helper function to construct log entry string from OpenSearch document | |
| function constructLogEntry(map<json> sourceData) returns string|error { | |
| log:printDebug("Constructing log entry from source data"); |
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.
AI Agent Log Improvement Checklist
- The log-related comments and suggestions in this review were generated by an AI tool to assist with identifying potential improvements. Purpose of reviewing the code for log improvements is to improve the troubleshooting capabilities of our products.
- Please make sure to manually review and validate all suggestions before applying any changes. Not every code suggestion would make sense or add value to our purpose. Therefore, you have the freedom to decide which of the suggestions are helpful.
✅ Before merging this pull request:
- Review all AI-generated comments for accuracy and relevance.
- Complete and verify the table below. We need your feedback to measure the accuracy of these suggestions and the value they add. If you are rejecting a certain code suggestion, please mention the reason briefly in the suggestion for us to capture it.
Purpose