Prometheus exporter to show the daily cost of all AWS Ressources
1.1K
This is a prometheus exporter to show daily cost of aws services. Also exporter show the region and account cost.
WARNING0: The region cost don't show the "not region" cost
WARNING1: It's show only cost for regions and services, where the cost was more then $0
WARNING2
It takes approximately 5 minutes to collect the data(in my case, this is depended on number of active serices and regions), so don't set the cronjob to run more often then 5min.
I recommendet to run with default settings.
In aws eks you can use the role, with permissions that you need. For this you need to create the k8s serviceAccount with the role and then mount this to deployment. This role need the policy "AssumeRoleWithWebIdentity"
cost_all{type="all",unit="USD"} 1655.8311381101
...
cost_region{type="region",service="all",region="eu-north-1",unit="USD"} 296.7056863111
cost_region{type="region",service="AWS Key Management Service",region="eu-north-1",unit="USD"} 0.000111
cost_region{type="region",service="AWS Secrets Manager",region="eu-north-1",unit="USD"} 0.466095752
cost_region{type="region",service="Amazon Elastic Block Store",region="eu-north-1",unit="USD"} 69.5610225786
cost_region{type="region",service="Amazon Elastic Compute Cloud - Compute",region="eu-north-1",unit="USD"} 189.9076039496
...
...
cost_service{type="service",service="AWS Cost Explorer",region="all",unit="USD"} 60.87
cost_service{type="service",service="AWS Cost Explorer",region="us-east-1",unit="USD"} 60.87
cost_service{type="service",service="AWS Key Management Service",region="all",unit="USD"} 0.34125044
cost_service{type="service",service="AWS Key Management Service",region="eu-north-1",unit="USD"} 0.000111
cost_service{type="service",service="AWS Key Management Service",region="eu-west-1",unit="USD"} 0.159492
...
...
cost_region_month{type="region",service="month",region="eu-north-1",unit="USD"} 2144.4543095665
cost_region_month{type="region",service="month",region="eu-west-2",unit="USD"} 0.0000509429
cost_region_month{type="region",service="month",region="eu-west-1",unit="USD"} 5349.5967276573
cost_region_month{type="region",service="month",region="eu-central-1",unit="USD"} 10380.7525458852
cost_region_month{type="region",service="month",region="us-east-1",unit="USD"} 14.2658663195
cost_region_month{type="region",service="month",region="us-east-2",unit="USD"} 2.9802420231
cost_region_month{type="region",service="month",region="us-west-2",unit="USD"} 0.1930107496
...
...
cost_account_month{type="account",unit="2222",account="USD",description="CICD"} 20.803763436
cost_account_month{type="account",unit="3333",account="USD",description="Infrastructure"} 364.4863358101
cost_account_month{type="account",unit="4444",account="USD",description="Integration"} 69.0948979786
cost_account_month{type="account",unit="5555",account="USD",description="VPN"} 28.4227041386
cost_account_month{type="account",unit="6666",account="USD",description="Staging"} 0.0000112
cost_account_month{type="account",unit="8888",account="USD",description="Production"} 0.000015
...
Your user need following permissions
AWS_ACCESSKEYID
AWS_SECRETACCESSKEY
AWS_COSTREGION - Cost Explorer api endpoint, default "us-east-1"
PROVIDER - type of credential, if set 'AWS', it's mean the pod running in AWS EKS and can use the credentials from k8s serviceAccount(more). In this case you don't need to set AWS_ACCESSKEYID and AWS_SECRETACCESSKEY
MPORT - port of exporter, default 9232
CRON - cronjob string, default '0 5 * * *'
AWS_SERVICES - filter, to get cost of certain service/s (Exp: AWS Key Management Service,Amazon Elastic Block Store), default 'all'
AWS_REGIONS - filter, to get cost of certain region/s (Exp: eu-west-1,eu-north-1)
AWS_METRICTYPE - type of colleced metric, default 'UnblendedCost'. Possible are 'AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost, NormalizedUsageAmount, UnblendedCost, and UsageQuantity'
docker run --name aws-exporter -p 9232:9232 -e AWS_ACCESSKEYID="XXX" -e AWS_SECRETACCESSKEY="XXX" -e -t de1m/aws-cost-exporter:latest
git clone [email protected]:de1m/aws-cost-exporter.gitnpm i create AWS environments variablesnode app.jsContent type
Image
Digest
Size
52.2 MB
Last updated
over 6 years ago
docker pull de1m/aws-cost-exporter