{"id":20207764,"url":"https://github.com/exasol/cloudwatch-adapter","last_synced_at":"2025-04-10T12:43:13.407Z","repository":{"id":38306884,"uuid":"294333947","full_name":"exasol/cloudwatch-adapter","owner":"exasol","description":"Makes Exasol database monitoring data available in AWS CloudWatch","archived":false,"fork":false,"pushed_at":"2025-03-21T02:31:53.000Z","size":217,"stargazers_count":2,"open_issues_count":3,"forks_count":1,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-24T11:38:11.593Z","etag":null,"topics":["aws-cloudwatch","aws-cloudwatch-metrics","exasol-integration","monitoring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exasol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-10T07:20:22.000Z","updated_at":"2025-02-13T16:20:35.000Z","dependencies_parsed_at":"2024-03-14T13:31:13.185Z","dependency_job_id":"36c736e0-6850-41cb-8388-091c166a2d76","html_url":"https://github.com/exasol/cloudwatch-adapter","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fcloudwatch-adapter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fcloudwatch-adapter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fcloudwatch-adapter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fcloudwatch-adapter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exasol","download_url":"https://codeload.github.com/exasol/cloudwatch-adapter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248217160,"owners_count":21066634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-cloudwatch","aws-cloudwatch-metrics","exasol-integration","monitoring"],"created_at":"2024-11-14T05:31:59.446Z","updated_at":"2025-04-10T12:43:13.383Z","avatar_url":"https://github.com/exasol.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exasol – AWS Cloudwatch Adapter\n\n[![Build Status](https://github.com/exasol/cloudwatch-adapter/actions/workflows/ci-build.yml/badge.svg)](https://github.com/exasol/cloudwatch-adapter/actions/workflows/ci-build.yml)\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Acloudwatch-adapter\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=com.exasol%3Acloudwatch-adapter)\n\nThis adapter transfers the statistics from the Exasol database to [AWS CloudWatch](https://aws.amazon.com/de/cloudwatch/) metrics. This adapter runs independently of the Exasol database in an AWS Lambda function.\n\n## Setup\n\n### Create an Exasol User\n\nThe CloudWatch adapter accesses your Exasol database via its SQL interface. For that it needs credentials. We recommend creating a dedicated user for that purpose:\n\n```sql\nCREATE USER CLOUDWATCH_ADAPTER IDENTIFIED BY \"\u003cPASSWORD\u003e\";\n\nGRANT CREATE SESSION TO CLOUDWATCH_ADAPTER;\n```\n\nDon't forget to use a strong, randomly generated password instead of `\u003cPASSWORD\u003e`.\n\n### Store Credentials in AWS Secrets Manager\n\nCreate a new secret in the [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) with the following values:\n\n* `host`: VPC internal ip address of your Exasol database\n* `port`: Exasol JDBC port (default: 8563)\n* `username`: Name of an Exasol user account with `CREATE SESSION` privileges\n* `password`: Password for the account\n* `certificateFingerprint`: Fingerprint of the database's TLS certificate. This is only required if Exasol uses a self-signed certificate.\n\n### VPC Setup\n\nThe CloudWatch adapter must run in the same AWS VPC that the Exasol database runs. By that it can access the Exasol database using a internal IP address.\n\nFrom within the VPC it can however not access the default Endpoints for AWS CloudWatch and SecretsManager.\n\nTo add them, go to the [AWS VPC Console](https://console.aws.amazon.com/vpc/) / Endpoints. There create endpoints for the following AWS services:\n\n* `com.amazonaws.\u003cREGION\u003e.monitoring`\n* `com.amazonaws.\u003cREGION\u003e.secretsmanager`\n\nMake sure that you select the VPC, Subnet and Security group of your Exasol database.\n\nIt is important to enable DNS for the endpoint. If it's not possible, you might have to enable DNS in your VPC.\n\n### Setup CloudWatch Adapter\n\n* Open the [AWS Lambda Console](https://console.aws.amazon.com/lambda/)\n* Click \"Create Function\"\n* Select \"Browse serverless application repository\"\n* Search for \"ExasolCloudWatchAdapter\"\n* Fill out the application settings\n    * `ExasolDeploymentName`: A name describing the Exasol installation you want to monitor. The adapter adds this name as a [dimension](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension) to the metrics in Cloudwatch. This will help you to distinguish the data if you monitor more than one Exasol deployment.\n\n    * `ExasolConnectionSecretArn`: [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) of Secrets Manager secret you created in a previous step.\n\n    * `Metrics`: A comma-separated list of metrics. If empty, the adapter reports all metrics. [List of supported metrics](doc/supported_metrics.md).\n    * `SubnetId`: ID of the VPC subnet of the Exasol database.\n    * `SecurityGroup`: ID of the security group of the Exasol database.\n* Click on \"Deploy\"\n\n### Create a Dashboard\n\nNow the adapter should transmit the metrics to CloudWatch. To visualize them you have to create a CloudWatch dashboard. You could start from scratch and build your own dashboard. We, however, recommend you to start with our [example dashboard](https://github.com/exasol/cloudwatch-dashboard-examples/). This comes with lots of preconfigured widgets, designed by the best practices of our monitoring experts.\n\n## Troubleshooting\n\nIf the adapter does not work properly, first check its log output. For that go to the AWS Management Console / `Lambda`, select the Lambda function of the adapter, and click on `Monitoring`. There click on `View logs in CloudWatch` and scan the log files for error messages.\n\n## Known Bugs\n\n* In case your Exasol database uses a timezone with time-shift as `DBTIMEZONE`, this adapter will **not report** the hour when the time is shifted back, since Exasol stores the statistics entries in the `DBTIMEZONE` and by that, the log entries are ambiguous in that hour (see [#2](https://github.com/exasol/cloudwatch-adapter/issues/2)).\n* Due to a bug in SAM we can not publish the app with a retry count set to 0. This can lead to duplicate reported data if the Lambda fails after reporting some points and EventBridge triggers it again (see [#21](https://github.com/exasol/cloudwatch-adapter/issues/21)).\n\n## Additional Information\n\nThe design of this adapter ensures that points are never written twice, which would lead to wrong statistics. It does, however not assure that all points are written. In case of temporary errors with the Exasol database or the CloudWatch API, it can occur that data points are missing.\n\n* [Changelog](doc/changes/changelog.md)\n* [Developers Guide](doc/developers_guide.md)\n* [Dependencies](dependencies.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexasol%2Fcloudwatch-adapter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexasol%2Fcloudwatch-adapter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexasol%2Fcloudwatch-adapter/lists"}