Skip to content
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

Inefficient usage of AWS DescribeDBInstances and DescribeDBClusters API #577

Open
jlisthood opened this issue Jul 21, 2024 · 1 comment
Open

Comments

@jlisthood
Copy link

Currently, the collector calls FindRdsInstance once per full snapshot if CollectSystemInformation is configured. This leads to at least one AWS API call per database every collection period (multiple if using Aurora).

When the collector is configured to collect on hundreds of DBs in an AWS account, the O(N) AWS API calls all happening one after another can lead to throttling:

Rds/System: Encountered error when looking for instance: Throttling: Rate exceeded
	status code: 400, request id: <REDACTED>

This leads to missed system state snapshots and affects other tools trying to call the same APIs within the account.

AWS's DescribeDBInstances and DescribeDBClusters APIs actually allow describing up to 100 instances or clusters at a time in one API call by the use of filters see here. What are our thoughts about modifying the collector logic to handle multiple system snapshots at once to use fewer AWS API calls?

@lfittl
Copy link
Member

lfittl commented Jul 22, 2024

What are our thoughts about modifying the collector logic to handle multiple system snapshots at once to use fewer AWS API calls?

I think overall this would make sense (to reduce rate limiting issues), but the challenge is that we'd have to rework that part of the collector, since currently each server is processed independently (in its own Go routine).

Would have to do more thinking on how this could be implemented, since I think we'd want it, if we don't introduce a huge maintenance burden with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants