jantman / awslimitchecker

A script and python package to check your AWS service limits and usage via boto3.
http://awslimitchecker.readthedocs.org/
GNU Affero General Public License v3.0
515 stars 187 forks source link

No data points found for Fargate #512

Closed luoyimu1 closed 3 years ago

luoyimu1 commented 3 years ago

Bug Report

When reporting a bug in awslimitchecker, please provide all of the following information, as well as any additional details that may be useful in reproducing or fixing the issue:

Version

10.0.0

Actual Output

No data points found for AWS/Usage metric ResourceCount with dimensions [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'OnDemand'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]; using value of zero!
No data points found for AWS/Usage metric ResourceCount with dimensions [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'Spot'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]; using value of zero!

Expected Output

No error msg

Fridericus commented 3 years ago

Also receiving this error as of this morning.

jantman commented 3 years ago

Could one of you please run awslimitchecker with the -vv option, as the issue template requests, and post the output? It would also be fine if it's limited to the Fargate service (awslimitchecker -vv -S Fargate).

luoyimu1 commented 3 years ago

Hi @jantman,

Sorry for the late reply, pls find the output below: awslimitchecker 10.0.0 is AGPL-licensed free software; all users have a right to the full source code of this version. See https://github.com/jantman/awslimitchecker 2020-12-11 02:01:38,349 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): pypi.org:443 2020-12-11 02:01:38,612 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://pypi.org:443 "GET /pypi/awslimitchecker/json HTTP/1.1" 200 69866 2020-12-11 02:01:38,623 [DEBUG checker.py:285 - awslimitchecker.checker._boto_conn_kwargs() ] Connecting to region None 2020-12-11 02:01:38,624 [DEBUG cloudtrail.py:125 - awslimitchecker.services.cloudtrail.get_limits() ] Gathering CloudTrail's limits from AWS 2020-12-11 02:01:38,684 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to dynamodb in region ap-southeast-2 2020-12-11 02:01:38,737 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to ec2 in region ap-southeast-2 2020-12-11 02:01:38,747 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to kinesis in region ap-southeast-2 2020-12-11 02:01:38,747 [DEBUG lambdafunc.py:84 - awslimitchecker.services.lambdafunc.get_limits() ] Getting limits for Lambda 2020-12-11 02:01:38,747 [DEBUG cloudtrail.py:125 - awslimitchecker.services.cloudtrail.get_limits() ] Gathering CloudTrail's limits from AWS 2020-12-11 02:01:38,747 [DEBUG lambdafunc.py:84 - awslimitchecker.services.lambdafunc.get_limits() ] Getting limits for Lambda Traceback (most recent call last): File "/usr/local/bin/awslimitchecker", line 33, in sys.exit(load_entry_point('awslimitchecker', 'console_scripts', 'awslimitchecker')()) File "/awslimitchecker/awslimitchecker/runner.py", line 550, in console_entry_point r.console_entry_point() File "/awslimitchecker/awslimitchecker/runner.py", line 520, in console_entry_point res, problems, problem_str = self.check_thresholds(metrics) File "/awslimitchecker/awslimitchecker/runner.py", line 332, in check_thresholds problems = self.checker.check_thresholds( File "/awslimitchecker/awslimitchecker/checker.py", line 626, in check_thresholds to_get = dict((each, self.services[each]) for each in service) File "/awslimitchecker/awslimitchecker/checker.py", line 626, in to_get = dict((each, self.services[each]) for each in service) KeyError: 'Fargate'

sebasrp commented 3 years ago

I am confused - awslimitchecker does not support the fargate service at the moment (which explains the error message above). What command were you executing when you encountered the bug above?

sebasrp commented 3 years ago

I believe it's likely ECS service, so try running only ECS: awslimitchecker -vv -S ECS

In ECS service, we always check for fargate usage even if we might not have fargate clusters - see https://github.com/jantman/awslimitchecker/blob/master/awslimitchecker/services/ecs.py#L74

tehamacrane commented 3 years ago

I ran the limit checker against ECS and yes, I'm seeing the fargate warnings

2021-02-02 13:57:31,372 [DEBUG ecs.py:69 - awslimitchecker.services.ecs.find_usage() ] Checking usage for service ECS 2021-02-02 13:57:31,382 [INFO connectable.py:120 - awslimitchecker.connectable.connect() ] Connected to ecs in region ap-northeast-1 2021-02-02 13:57:31,405 [DEBUG connectionpool.py:943 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): ecs.ap-northeast-1.amazonaws.com:443 2021-02-02 13:57:32,360 [DEBUG connectionpool.py:442 - urllib3.connectionpool._make_request() ] https://ecs.ap-northeast-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 2021-02-02 13:57:32,369 [INFO base.py:319 - awslimitchecker.services.base._cloudwatch_connection() ] Connected to cloudwatch in region ap-northeast-1 2021-02-02 13:57:32,369 [DEBUG base.py:362 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] Querying CloudWatch GetMetricData: {'MetricDataQueries': [{'Id': 'id', 'MetricStat': {'Metric': {'Namespace': 'AWS/Usage', 'MetricName': 'ResourceCount', 'Dimensions': [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'OnDemand'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]}, 'Period': 60, 'Stat': 'Average'}}], 'StartTime': datetime.datetime(2021, 2, 2, 17, 57, 32, 369669), 'EndTime': datetime.datetime(2021, 2, 2, 18, 57, 32, 369677), 'ScanBy': 'TimestampDescending', 'MaxDatapoints': 1} 2021-02-02 13:57:32,371 [DEBUG connectionpool.py:943 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): monitoring.ap-northeast-1.amazonaws.com:443 2021-02-02 13:57:33,178 [DEBUG connectionpool.py:442 - urllib3.connectionpool._make_request() ] https://monitoring.ap-northeast-1.amazonaws.com:443 "POST / HTTP/1.1" 200 679 2021-02-02 13:57:33,180 [WARNING base.py:374 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] No data points found for AWS/Usage metric ResourceCount with dimensions [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'OnDemand'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]; using value of zero! 2021-02-02 13:57:33,180 [DEBUG base.py:362 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] Querying CloudWatch GetMetricData: {'MetricDataQueries': [{'Id': 'id', 'MetricStat': {'Metric': {'Namespace': 'AWS/Usage', 'MetricName': 'ResourceCount', 'Dimensions': [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'Spot'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]}, 'Period': 60, 'Stat': 'Average'}}], 'StartTime': datetime.datetime(2021, 2, 2, 17, 57, 33, 180105), 'EndTime': datetime.datetime(2021, 2, 2, 18, 57, 33, 180113), 'ScanBy': 'TimestampDescending', 'MaxDatapoints': 1} 2021-02-02 13:57:33,386 [DEBUG connectionpool.py:442 - urllib3.connectionpool._make_request() ] https://monitoring.ap-northeast-1.amazonaws.com:443 "POST / HTTP/1.1" 200 679 2021-02-02 13:57:33,387 [WARNING base.py:374 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] No data points found for AWS/Usage metric ResourceCount with dimensions [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'Spot'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]; using value of zero! 2021-02-02 13:57:33,388 [DEBUG ecs.py:76 - awslimitchecker.services.ecs.find_usage() ] Done checking usage. 2021-02-02 13:57:33,388 [INFO runner.py:522 - root.console_entry_point() ] Finished checking limits in 2.0204949378967285 seconds

I don't want to disable ECS though; is there a workaround?

arturpriz commented 3 years ago

Hello.

Same issue for me. I can get metric value via aws cli, this means data exist. But "No data points found" when using awslimitchecker. Also I noticed that tool returns correct data when default aws profile (aws access keys) is used but fails when another profile is specified (IAM role is assumed). Here are my logs:

awslimitchecker -vv -S ECS /home/user/limitchecker/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl/requests/init.py:89: RequestsDependencyWarning: urllib3 (1.26.4) or chardet (3.0.4) doesn't match a supported version! awslimitchecker 10.0.0 is AGPL-licensed free software; all users have a right to the full source code of this version. See https://github.com/jantman/awslimitchecker 2021-04-08 18:45:16,879 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): pypi.org:443 2021-04-08 18:45:17,076 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://pypi.org:443 "GET /pypi/awslimitchecker/json HTTP/1.1" 200 69866 2021-04-08 18:45:17,126 [DEBUG checker.py:285 - awslimitchecker.checker._boto_conn_kwargs() ] Connecting to region None 2021-04-08 18:45:17,126 [DEBUG cloudtrail.py:125 - awslimitchecker.services.cloudtrail.get_limits() ] Gathering CloudTrail's limits from AWS 2021-04-08 18:45:17,158 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to dynamodb in region us-east-1 2021-04-08 18:45:17,193 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to ec2 in region us-east-1 2021-04-08 18:45:17,198 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to kinesis in region us-east-1 2021-04-08 18:45:17,198 [DEBUG lambdafunc.py:84 - awslimitchecker.services.lambdafunc.get_limits() ] Getting limits for Lambda 2021-04-08 18:45:17,199 [DEBUG cloudtrail.py:125 - awslimitchecker.services.cloudtrail.get_limits() ] Gathering CloudTrail's limits from AWS 2021-04-08 18:45:17,199 [DEBUG lambdafunc.py:84 - awslimitchecker.services.lambdafunc.get_limits() ] Getting limits for Lambda 2021-04-08 18:45:17,202 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to support in region us-east-1 2021-04-08 18:45:17,202 [INFO trustedadvisor.py:147 - awslimitchecker.trustedadvisor.update_limits() ] Not using Trusted Advisor in regions outside of China or GovCloud; export FORCE_USE_TA=true to override. 2021-04-08 18:45:17,202 [DEBUG ecs.py:69 - awslimitchecker.services.ecs.find_usage() ] Checking usage for service ECS 2021-04-08 18:45:17,209 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to ecs in region us-east-1 2021-04-08 18:45:17,214 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): ecs.us-east-1.amazonaws.com:443 2021-04-08 18:45:17,942 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 2675 ....A LOT OF THE SAME LINES..... 2021-04-08 18:45:26,428 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 918 2021-04-08 18:45:26,567 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 2021-04-08 18:45:26,726 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 860 2021-04-08 18:45:26,864 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 2021-04-08 18:45:26,873 [INFO base.py:317 - awslimitchecker.services.base._cloudwatch_connection() ] Connected to cloudwatch in region us-east-1 2021-04-08 18:45:26,873 [DEBUG base.py:362 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] Querying CloudWatch GetMetricData: {'MetricDataQueries': [{'Id': 'id', 'MetricStat': {'Metric': {'Namespace': 'AWS/Usage', 'MetricName': 'ResourceCount', 'Dimensions': [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'OnDemand'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]}, 'Period': 60, 'Stat': 'Average'}}], 'StartTime': datetime.datetime(2021, 4, 8, 14, 45, 26, 873785), 'EndTime': datetime.datetime(2021, 4, 8, 15, 45, 26, 873795), 'ScanBy': 'TimestampDescending', 'MaxDatapoints': 1} 2021-04-08 18:45:26,876 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): monitoring.us-east-1.amazonaws.com:443 2021-04-08 18:45:27,519 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://monitoring.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 796 2021-04-08 18:45:27,521 [DEBUG base.py:377 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] CloudWatch metric query returned value of 2.0 with timestamp 2021-04-08 15:44:00+00:00 2021-04-08 18:45:27,521 [DEBUG base.py:362 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] Querying CloudWatch GetMetricData: {'MetricDataQueries': [{'Id': 'id', 'MetricStat': {'Metric': {'Namespace': 'AWS/Usage', 'MetricName': 'ResourceCount', 'Dimensions': [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'Spot'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]}, 'Period': 60, 'Stat': 'Average'}}], 'StartTime': datetime.datetime(2021, 4, 8, 14, 45, 27, 521495), 'EndTime': datetime.datetime(2021, 4, 8, 15, 45, 27, 521505), 'ScanBy': 'TimestampDescending', 'MaxDatapoints': 1} 2021-04-08 18:45:27,677 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://monitoring.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 796 2021-04-08 18:45:27,679 [DEBUG base.py:377 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] CloudWatch metric query returned value of 0.0 with timestamp 2021-04-08 15:44:00+00:00 2021-04-08 18:45:27,679 [DEBUG ecs.py:76 - awslimitchecker.services.ecs.find_usage() ] Done checking usage.

2021-04-08 18:45:27,679 [INFO runner.py:522 - root.console_entry_point() ] Finished checking limits in 10.480070114135742 seconds

Same request via AWS CLI:

aws cloudwatch get-metric-statistics --metric-name ResourceCount --start-time 2021-04-08T14:45:27Z --end-time 2021-04-08T15:45:27Z --period 3600 --namespace AWS/Usage --statistics Average --dimensions Name=Type,Value=Resource Name=Resource,Value=OnDemand Name=Service,Value=Fargate Name=Class,Value=None { "Label": "ResourceCount", "Datapoints": [ { "Timestamp": "2021-04-08T14:45:00+00:00", "Average": 2.0, "Unit": "None" } ] }

Using profile that uses IAM role:

awslimitchecker -P QA -vv -S ECS /home/user/limitchecker/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl/requests/init.py:89: RequestsDependencyWarning: urllib3 (1.26.4) or chardet (3.0.4) doesn't match a supported version! awslimitchecker 10.0.0 is AGPL-licensed free software; all users have a right to the full source code of this version. See https://github.com/jantman/awslimitchecker 2021-04-08 18:58:13,165 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): pypi.org:443 2021-04-08 18:58:13,364 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://pypi.org:443 "GET /pypi/awslimitchecker/json HTTP/1.1" 200 69866 2021-04-08 18:58:13,415 [DEBUG checker.py:278 - awslimitchecker.checker._boto_conn_kwargs() ] Using credentials profile: prod 2021-04-08 18:58:13,445 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): sts.amazonaws.com:443 2021-04-08 18:58:14,051 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://sts.amazonaws.com:443 "POST / HTTP/1.1" 200 1090 2021-04-08 18:58:14,056 [DEBUG cloudtrail.py:125 - awslimitchecker.services.cloudtrail.get_limits() ] Gathering CloudTrail's limits from AWS 2021-04-08 18:58:14,085 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to dynamodb in region us-east-1 2021-04-08 18:58:14,121 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to ec2 in region us-east-1 2021-04-08 18:58:14,127 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to kinesis in region us-east-1 2021-04-08 18:58:14,127 [DEBUG lambdafunc.py:84 - awslimitchecker.services.lambdafunc.get_limits() ] Getting limits for Lambda 2021-04-08 18:58:14,127 [DEBUG cloudtrail.py:125 - awslimitchecker.services.cloudtrail.get_limits() ] Gathering CloudTrail's limits from AWS 2021-04-08 18:58:14,127 [DEBUG lambdafunc.py:84 - awslimitchecker.services.lambdafunc.get_limits() ] Getting limits for Lambda 2021-04-08 18:58:14,130 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to support in region us-east-1 2021-04-08 18:58:14,130 [INFO trustedadvisor.py:147 - awslimitchecker.trustedadvisor.update_limits() ] Not using Trusted Advisor in regions outside of China or GovCloud; export FORCE_USE_TA=true to override. 2021-04-08 18:58:14,130 [DEBUG ecs.py:69 - awslimitchecker.services.ecs.find_usage() ] Checking usage for service ECS 2021-04-08 18:58:14,136 [INFO connectable.py:119 - awslimitchecker.connectable.connect() ] Connected to ecs in region us-east-1 2021-04-08 18:58:14,142 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): ecs.us-east-1.amazonaws.com:443 ....A LOT OF THE SAME LINES.....

2021-04-08 18:58:30,083 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 ....A LOT OF THE SAME LINES..... 2021-04-08 18:58:31,596 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 2021-04-08 18:58:31,599 [DEBUG connectionpool.py:272 - urllib3.connectionpool._get_conn() ] Resetting dropped connection: ecs.us-east-1.amazonaws.com 2021-04-08 18:58:32,244 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 830 2021-04-08 18:58:32,387 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 2021-04-08 18:58:46,282 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 824

2021-04-08 18:58:47,338 [DEBUG connectionpool.py:272 - urllib3.connectionpool._get_conn() ] Resetting dropped connection: ecs.us-east-1.amazonaws.com 2021-04-08 18:58:49,314 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 416 2021-04-08 18:58:49,500 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us- 2021-04-08 18:58:51,137 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://ecs.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 18 2021-04-08 18:58:51,146 [INFO base.py:317 - awslimitchecker.services.base._cloudwatch_connection() ] Connected to cloudwatch in region us-east-1 2021-04-08 18:58:51,146 [DEBUG base.py:362 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] Querying CloudWatch GetMetricData: {'MetricDataQueries': [{'Id': 'id', 'MetricStat': {'Metric': {'Namespace': 'AWS/Usage', 'MetricName': 'ResourceCount', 'Dimensions': [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'OnDemand'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]}, 'Period': 60, 'Stat': 'Average'}}], 'StartTime': datetime.datetime(2021, 4, 8, 14, 58, 51, 146363), 'EndTime': datetime.datetime(2021, 4, 8, 15, 58, 51, 146370), 'ScanBy': 'TimestampDescending', 'MaxDatapoints': 1} 2021-04-08 18:58:51,148 [DEBUG connectionpool.py:971 - urllib3.connectionpool._new_conn() ] Starting new HTTPS connection (1): monitoring.us-east-1.amazonaws.com:443 2021-04-08 18:58:51,762 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://monitoring.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 679 2021-04-08 18:58:51,763 [WARNING base.py:372 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] No data points found for AWS/Usage metric ResourceCount with dimensions [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'OnDemand'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]; using value of zero! 2021-04-08 18:58:51,763 [DEBUG base.py:362 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] Querying CloudWatch GetMetricData: {'MetricDataQueries': [{'Id': 'id', 'MetricStat': {'Metric': {'Namespace': 'AWS/Usage', 'MetricName': 'ResourceCount', 'Dimensions': [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'Spot'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]}, 'Period': 60, 'Stat': 'Average'}}], 'StartTime': datetime.datetime(2021, 4, 8, 14, 58, 51, 763586), 'EndTime': datetime.datetime(2021, 4, 8, 15, 58, 51, 763598), 'ScanBy': 'TimestampDescending', 'MaxDatapoints': 1} 2021-04-08 18:58:51,908 [DEBUG connectionpool.py:452 - urllib3.connectionpool._make_request() ] https://monitoring.us-east-1.amazonaws.com:443 "POST / HTTP/1.1" 200 679 2021-04-08 18:58:51,909 [WARNING base.py:372 - awslimitchecker.services.base._get_cloudwatch_usage_latest() ] No data points found for AWS/Usage metric ResourceCount with dimensions [{'Name': 'Type', 'Value': 'Resource'}, {'Name': 'Resource', 'Value': 'Spot'}, {'Name': 'Service', 'Value': 'Fargate'}, {'Name': 'Class', 'Value': 'None'}]; using value of zero! 2021-04-08 18:58:51,909 [DEBUG ecs.py:76 - awslimitchecker.services.ecs.find_usage() ] Done checking usage.

Same request via AWS CLI:

aws --profile QA cloudwatch get-metric-statistics --metric-name ResourceCount --start-time 2021-04-08T14:58:27Z --end-time 2021-04-08T15:58:27Z --period 3600 --namespace AWS/Usage --statistics Average --dimensions Name=Type,Value=Resource Name=Resource,Value=OnDemand Name=Service,Value=Fargate Name=Class,Value=None { "Label": "ResourceCount", "Datapoints": [ { "Timestamp": "2021-04-08T14:58:00+00:00", "Average": 37.9, "Unit": "None" } ] }

arturpriz commented 3 years ago

One more thing about Fargate limits.

awslimitchecker -S ECS -l
ECS/Clusters                          10000
ECS/Container Instances per Cluster   2000
ECS/Fargate On-Demand resource count  500
ECS/Fargate Spot resource count       500
ECS/Services per Cluster              2000
ECS/Tasks per service                 2000

From AWS docs ECS/Fargate On-Demand resource count and ECS/Fargate Spot resource count should be 1000

UPDATE: found announcement https://aws.amazon.com/about-aws/whats-new/2021/02/aws-fargate-increases-default-resource-count-service-quotas-to-1000/

jantman commented 3 years ago

A fix for this has been released in 12.0.0, which is now live on PyPI and Docker Hub. Thank you so much!