AWS Cost Explorer

AWS Cost Explorer lets you view and analyse the cost and usage of your AWS account - by service, by linked account and by record type - over time.

Available solutions

Zabbix version 8.0 7.4 7.2 7.0 6.4 6.0
Download

AWS Cost Explorer by HTTP

Overview

The template to monitor AWS Cost Explorer by HTTP via Zabbix, which works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.

Note: This template uses the Cost Explorer API calls to list and retrieve metrics.

For more information, please refer to the Cost Explorer pricing page.

Requirements

Zabbix version: 8.0 and higher.

Tested versions

This template has been tested on:

  • AWS by HTTP

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Before using the template, you need to create an IAM policy for the Zabbix role in your AWS account with the necessary permissions.

Required Permissions

Add the following required permissions to your Zabbix IAM policy in order to collect metrics.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ce:GetDimensionValues",
                "ce:GetCostAndUsage"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

Access Key Authorization

If you are using access key authorization, you need to generate an access key and secret key for an IAM user with the necessary permissions:

  1. Create an IAM user with programmatic access.
  2. Attach the required policy to the IAM user.
  3. Generate an access key and secret key.
  4. Use the generated credentials in the macros {$AWS.ACCESS.KEY.ID} and {$AWS.SECRET.ACCESS.KEY}.

Assume Role Authorization

For using assume role authorization, add the appropriate permissions to the role you are using:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::{Account}:user/{UserName}"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ce:GetDimensionValues",
                "ce:GetCostAndUsage"
            ],
            "Resource": "*"
        }
    ]
}

Trust Relationships for Assume Role Authorization

Next, add a principal to the trust relationships of the role you are using:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{Account}:user/{UserName}"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Set the following macros: {$AWS.ACCESS.KEY.ID}, {$AWS.SECRET.ACCESS.KEY}, {$AWS.STS.REGION}, {$AWS.ASSUME.ROLE.ARN}.

Note: If you set the {$AWS.ASSUME.ROLE.AUTH.METADATA} macro to true and set the macros {$AWS.STS.REGION} and {$AWS.ASSUME.ROLE.ARN}, the Zabbix server or proxy will attempt to retrieve the role credentials from the instance metadata service. This means that the Zabbix server or proxy must be running on an AWS EC2 instance with an IAM role assigned that has the necessary permissions. This approach is recommended when running Zabbix inside an AWS EC2 instance with an IAM role assigned, as it simplifies credential management.

Role-Based Authorization

If you are using role-based authorization, add the appropriate permissions:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::<<--account-id-->>:role/<<--role_name-->>"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ce:GetDimensionValues",
                "ce:GetCostAndUsage",
                "ec2:AssociateIamInstanceProfile",
                "ec2:ReplaceIamInstanceProfileAssociation"
            ],
            "Resource": "*"
        }
    ]
}

Trust Relationships for Role-Based Authorization

Next, add a principal to the trust relationships of the role you are using:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ec2.amazonaws.com"
                ]
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}

Note: Using role-based authorization is only possible when you use a Zabbix server or proxy inside AWS.

Set the macros: {$AWS.AUTH_TYPE}. Possible values: access_key, assume_role, role_base.

For more information about managing access keys, see the official documentation.

Also, see the Macros section for a list of macros used in LLD filters.

Additional information about metrics and used API methods:

Macros used

Name Description Default
{$AWS.AUTH_TYPE}

Authorization method. Possible values: access_key, assume_role, role_base.

access_key
{$AWS.ASSUME.ROLE.AUTH.METADATA}

Add when using the assume_role through instance metadata or environment authorization method. Possible values: false, true.

false
{$AWS.ACCESS.KEY.ID}

Access key ID.

{$AWS.SECRET.ACCESS.KEY}

Secret access key.

{$AWS.ASSUME.ROLE.ARN}

ARN assume role; add when using the assume_role authorization method.

{$AWS.BUDGET.MONTH}

Threshold for AWS monthly budget limit.

10000
{$AWS.BILLING.MONTH.HIGH}

Threshold for high AWS monthly billing.

15000
{$AWS.BILLING.MONTH.WARN}

Warning threshold for AWS monthly billing.

10000
{$AWS.SERVICE.COST.TOP.HIGH}

Threshold for high AWS top service cost.

400
{$AWS.SERVICE.COST.TOP.WARN}

Warning threshold for AWS top service cost.

200
{$AWS.ACCOUNT.COST.DAILY.HIGH}

Threshold for high AWS account daily cost.

400
{$AWS.ACCOUNT.COST.DAILY.WARN}

Warning threshold for AWS account daily cost.

200
{$AWS.REGION.COST.DAILY.HIGH}

Threshold for high AWS region daily cost.

400
{$AWS.REGION.COST.DAILY.WARN}

Warning threshold for AWS region daily cost.

200
{$AWS.SERVICE.COST.DAILY.HIGH}

Threshold for high AWS service daily cost.

400
{$AWS.SERVICE.COST.DAILY.WARN}

Warning threshold for AWS service daily cost.

200
{$AWS.PROXY}

Sets HTTP proxy value. If this macro is empty, then no proxy is used.

{$HTTP.TLS.VERIFY}

TLS certificate verification for script items: "none" - disabled, "peer" - verify the certificate chain and expiration, "full" - full verification. Any other value enables full verification. To override the setting for this template only, define the macro with the context "AWS Cost Explorer", e.g. {$HTTP.TLS.VERIFY:"AWS Cost Explorer"}.

full
{$AWS.STS.REGION}

Region used in assume role request.

us-east-1
{$AWS.BILLING.REGION}

Amazon Billing region code.

us-east-1
{$AWS.BILLING.MONTH}

Number of months of historical cost data to get from AWS Cost Explorer API (maximum 12 months).

11
{$AWS.BILLING.LLD.FILTER.SERVICE.MATCHES}

Filter to include discoverable billing services by name.

.*
{$AWS.BILLING.LLD.FILTER.SERVICE.NOT_MATCHES}

Filter to exclude discovered billing service by name.

CHANGE_IF_NEEDED

Items

Name Description Type Key and additional info
Get yearly service cost data

Collects AWS service yearly data.

Dependent item aws.yearly.service.data.cost.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Get daily service cost data

Collects AWS service daily data.

Dependent item aws.daily.service.data.cost.get

Preprocessing

  • JSON Path: $[?(@.type=="SERVICE")].data.first()

  • JavaScript: The text is too long. Please see the template.

Get region and account yearly costs

Get region and account yearly costs.

Dependent item aws.region.account.yearly.cost.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Get region yearly costs

Collects yearly region costs.

Dependent item aws.region.yearly.costs.get

Preprocessing

  • JSON Path: $.regions

Get account monthly costs

Collects monthly account costs.

Dependent item aws.account.monthly.get

Preprocessing

  • JSON Path: $.accounts

AWS monthly budget delta

Calculates AWS current monthly budget delta compared to previous month.

Calculated aws.monthly.budget.delta

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS monthly delta, in percent

Calculates AWS current monthly delta, in percent, compared to previous month.

Calculated aws.monthly.delta.percent

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS monthly delta

Calculates AWS current monthly delta compared to previous month.

Calculated aws.monthly.delta

Preprocessing

  • Discard unchanged with heartbeat: 1h

Get current month

Collects AWS current month data.

Dependent item aws.current.month.get

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

  • JSON Path: $.monthly_comparison

Get region and account daily costs

Collects region and account daily cost data.

Dependent item aws.region.account.daily.cost.get

Preprocessing

  • JSON Path: $[?(@.type == "REGION_ACCOUNT")].data[0].Groups

  • JavaScript: The text is too long. Please see the template.

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

Get region daily costs

Collects AWS daily cost by region (BlendedCost).

Dependent item aws.region.daily.costs.get

Preprocessing

  • JSON Path: $.regions

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

Get account total daily cost

Collects total daily AWS cost per linked account (BlendedCost).

Dependent item aws.account.total.daily.cost.get

Preprocessing

  • JSON Path: $.accounts

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

Get monthly costs

Get raw data on the monthly costs by service.

Script aws.get.monthly.costs

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

Get daily costs

Get raw data on the daily costs by service.

Script aws.get.daily.costs

Preprocessing

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

AWS cost total

Total cost across all AWS billing months.

Calculated aws.cost.total

Preprocessing

  • Discard unchanged with heartbeat: 1h

Get AWS month total cost

Collects AWS billing data with monthly comparison and quarterly cost aggregation.

Dependent item aws.month.total.cost.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Check for not supported value: any error

    ⛔️Custom on fail: Discard value

AWS Q1 cost

First quarter total cost.

Dependent item aws.first.quarter.cost

Preprocessing

  • JSON Path: $.q1

AWS Q2 cost

Second quarter total cost.

Dependent item aws.second.quarter.cost

Preprocessing

  • JSON Path: $.q2

AWS Q3 cost

Third quarter total cost.

Dependent item aws.third.quarter.cost

Preprocessing

  • JSON Path: $.q3

AWS Q4 cost

Fourth quarter total cost.

Dependent item aws.fourth.quarter.cost

Preprocessing

  • JSON Path: $.q4

AWS Q1 delta

Difference in cost between Q2 and Q1.

Calculated aws.q1.delta.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS Q2 delta

Difference in cost between Q3 and Q2.

Calculated aws.q2.delta.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS Q3 delta

Difference in cost between Q4 and Q3.

Calculated aws.q3.delta.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS quarterly trend cost

Average quarterly cost change across the year based on Q1, Q2 and Q3 deltas. Shows whether spending is steadily increasing, decreasing, or staying stable over time.

Calculated aws.quarterly.trend.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

Get AWS monthly service type

Collects monthly AWS service data and groups services into predefined categories:

compute - compute and server execution services for running applications and workloads

storage - data storage and backup services

networking - networking, traffic routing, and content delivery services

security - security, identity, encryption, and compliance services

containers - container orchestration and registry services

database - managed database and caching services

analytics - data processing, analytics, and search services

integration - messaging, event-driven, and workflow integration services

business - business communication and productivity services

ml_ai - machine learning and artificial intelligence services

developer_tools - CI/CD, development, and monitoring tools for developers

management - monitoring, governance, and infrastructure management services

migration - data migration and transfer services

media - media processing, streaming, and delivery services

iot - Internet of Things device and data services

frontend - application frontend, mobile, and API interface services

financial - billing, cost management, and financial optimization services

Dependent item aws.monthly.service.type.get

Preprocessing

  • JSON Path: $.category_totals

Get AWS daily service type

Collects daily AWS service data and groups services into predefined categories:

compute - compute and server execution services for running applications and workloads

storage - data storage and backup services

networking - networking, traffic routing, and content delivery services

security - security, identity, encryption, and compliance services

containers - container orchestration and registry services

database - managed database and caching services

analytics - data processing, analytics, and search services

integration - messaging, event-driven, and workflow integration services

business - business communication and productivity services

ml_ai - machine learning and artificial intelligence services

developer_tools - CI/CD, development, and monitoring tools for developers

management - monitoring, governance, and infrastructure management services

migration - data migration and transfer services

media - media processing, streaming, and delivery services

iot - Internet of Things device and data services

frontend - application frontend, mobile, and API interface services

financial - billing, cost management, and financial optimization services

Dependent item aws.daily.service.type.get

Preprocessing

  • JSON Path: $.categories

AWS daily service count

Total AWS service daily count.

Dependent item aws.daily.service.count

Preprocessing

  • JSON Path: $.daily_service_count

Get services yearly stats

Collects total yearly cost for AWS services.

Dependent item aws.services.yearly.cost.get

Preprocessing

  • JSON Path: $.service_totals

Get top daily service

Collects AWS daily top cost services (BlendedCost).

Dependent item aws.top.daily.service.get

Preprocessing

  • JSON Path: $.top_services

AWS monthly average cost

AWS service monthly average cost.

Calculated aws.monthly.average.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS daily average cost

AWS service daily average cost.

Calculated aws.daily.average.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

AWS daily total service cost

AWS daily service total cost.

Calculated aws.daily.service.total.cost

Preprocessing

  • Discard unchanged with heartbeat: 1h

LLD rule AWS service type yearly cost discovery

Name Description Type Key and additional info
AWS service type yearly cost discovery

Discovers AWS service type total yearly value.

Dependent item aws.service.type.yearly.cost.discovery

Item prototypes for AWS service type yearly cost discovery

Name Description Type Key and additional info
AWS service [{#AWS.SERVICE.TYPE}]: Get yearly data

Collects yearly preprocessed data for AWS {#AWS.SERVICE.TYPE} service type.

Dependent item aws.service.type.yearly.processed.get["{#AWS.SERVICE.TYPE}"]

Preprocessing

  • JSON Path: $[?(@.service=="{#AWS.SERVICE.TYPE}")].first()

AWS service [{#AWS.SERVICE.TYPE}]: Yearly cost

Collects yearly total cost for AWS {#AWS.SERVICE.TYPE} service type.

Dependent item aws.service.type.yearly.total.cost["{#AWS.SERVICE.TYPE}"]

Preprocessing

  • JSON Path: $.total_amount

AWS service [{#AWS.SERVICE.TYPE}]: Yearly count

Collects yearly total count for AWS {#AWS.SERVICE.TYPE} service.

Dependent item aws.service.type.yearly.total.count["{#AWS.SERVICE.TYPE}"]

Preprocessing

  • JSON Path: $.count

LLD rule AWS account yearly cost discovery

Name Description Type Key and additional info
AWS account yearly cost discovery

Discovers AWS account total yearly value.

Dependent item aws.account.yearly.cost.discovery

Item prototypes for AWS account yearly cost discovery

Name Description Type Key and additional info
Account [{#AWS.LINKED.ACCOUNT}]: Get yearly data

Collects yearly preprocessed data for {#AWS.LINKED.ACCOUNT} AWS account.

Dependent item aws.account.yearly.processed.get["{#AWS.LINKED.ACCOUNT}"]

Preprocessing

  • JSON Path: $[?(@.account_id=="{#AWS.LINKED.ACCOUNT}")].first()

Account [{#AWS.LINKED.ACCOUNT}]: Total yearly cost

Collects yearly total cost for {#AWS.LINKED.ACCOUNT} AWS account.

Dependent item aws.account.yearly.total.cost["{#AWS.LINKED.ACCOUNT}"]

Preprocessing

  • JSON Path: $.total_amount

LLD rule AWS region yearly cost discovery

Name Description Type Key and additional info
AWS region yearly cost discovery

Discovers AWS region total yearly value.

Dependent item aws.region.yearly.cost.discovery

Item prototypes for AWS region yearly cost discovery

Name Description Type Key and additional info
Region [{#AWS.REGION}]: Get yearly data

Collects yearly preprocessed data for {#AWS.REGION} AWS region.

Dependent item aws.region.yearly.processed.get["{#AWS.REGION}"]

Preprocessing

  • JSON Path: $[?(@.region=="{#AWS.REGION}")].first()

Region [{#AWS.REGION}]: Total yearly cost

Collects yearly total cost for {#AWS.REGION} AWS region.

Dependent item aws.region.yearly.cost["{#AWS.REGION}"]

Preprocessing

  • JSON Path: $.total_cost

LLD rule AWS month comparison discovery

Name Description Type Key and additional info
AWS month comparison discovery

Discovers current month data and previous month data.

Dependent item aws.month.comparison.discovery

Item prototypes for AWS month comparison discovery

Name Description Type Key and additional info
Month [{#AWS.MONTH}]: Type [{#AWS.MONTH.TYPE}]: Get data

Collects the latest data of AWS {#AWS.MONTH} month of the {#AWS.MONTH.TYPE} type.

Dependent item aws.month.comparison.current.get["{#AWS.MONTH.TYPE}"]

Preprocessing

  • JSON Path: $[?(@.type=="{#AWS.MONTH.TYPE}")].first()

Month [{#AWS.MONTH}]: Type [{#AWS.MONTH.TYPE}]: Total cost

Collects total cost of AWS {#AWS.MONTH} month of the {#AWS.MONTH.TYPE} type.

Dependent item aws.month.comparison.current.cost["{#AWS.MONTH.TYPE}"]

Preprocessing

  • JSON Path: $.amount

LLD rule AWS daily service type discovery

Name Description Type Key and additional info
AWS daily service type discovery

Discovers total amount of each AWS service type.

Dependent item aws.daily.service.type.discovery

Item prototypes for AWS daily service type discovery

Name Description Type Key and additional info
AWS service [{#AWS.SERVICE.TYPE}]: Get daily data

Collects data of AWS {#AWS.SERVICE.TYPE} service type.

Dependent item aws.service.type.preprocessed.daily.get["{#AWS.SERVICE.TYPE}"]

Preprocessing

  • JSON Path: $[?(@.service=="{#AWS.SERVICE.TYPE}")].first()

AWS service [{#AWS.SERVICE.TYPE}]: Daily count

Collects AWS {#AWS.SERVICE.TYPE} service type total count.

Dependent item aws.service.type.count["{#AWS.SERVICE.TYPE}"]

Preprocessing

  • JSON Path: $.count

LLD rule AWS top service daily cost discovery

Name Description Type Key and additional info
AWS top service daily cost discovery

Discovers top daily services and billing data.

Dependent item aws.top.service.daily.cost.discovery

Item prototypes for AWS top service daily cost discovery

Name Description Type Key and additional info
Top service [{#AWS.SERVICE.NAME}]: Get data

Collects top daily data for {#AWS.SERVICE.NAME} AWS service.

Dependent item aws.top.daily.service.preprocessed.get["{#AWS.SERVICE.NAME}"]

Preprocessing

  • JSON Path: $[?(@.service=="{#AWS.SERVICE.NAME}")].first()

Top service [{#AWS.SERVICE.NAME}]: cost

Collects top daily cost for {#AWS.SERVICE.NAME} AWS service.

Dependent item aws.top.daily.service.cost["{#AWS.SERVICE.NAME}"]

Preprocessing

  • JSON Path: $.cost

Top service [{#AWS.SERVICE.NAME}]: cost, in percent

Collects top daily percent for {#AWS.SERVICE.NAME} AWS service.

Dependent item aws.top.daily.service.cost.percent["{#AWS.SERVICE.NAME}"]

Preprocessing

  • JSON Path: $.percent

Trigger prototypes for AWS top service daily cost discovery

Name Description Expression Severity Dependencies and additional info
AWS top daily service cost warning

AWS {#AWS.SERVICE.NAME} top service cost is above warning threshold {$AWS.SERVICE.COST.TOP.WARN}. Please monitor service usage and investigate cost increase trends.

last(/AWS Cost Explorer by HTTP/aws.top.daily.service.cost["{#AWS.SERVICE.NAME}"]) >= {$AWS.SERVICE.COST.TOP.WARN} Warning Depends on:
  • AWS top daily service cost high
AWS top daily service cost high

AWS {#AWS.SERVICE.NAME} top service cost has exceeded high threshold {$AWS.SERVICE.COST.TOP.HIGH}. Immediate investigation of service spending is recommended.

last(/AWS Cost Explorer by HTTP/aws.top.daily.service.cost["{#AWS.SERVICE.NAME}"]) >= {$AWS.SERVICE.COST.TOP.HIGH} High

LLD rule AWS account daily cost discovery

Name Description Type Key and additional info
AWS account daily cost discovery

Discovers AWS account total daily cost and affected regions.

Dependent item aws.account.daily.cost.discovery

Item prototypes for AWS account daily cost discovery

Name Description Type Key and additional info
Account [{#AWS.LINKED.ACCOUNT}]: Get daily data

Collects daily preprocessed data for {#AWS.LINKED.ACCOUNT} AWS accounts.

Dependent item aws.account.daily.cost.processed.get["{#AWS.LINKED.ACCOUNT}"]

Preprocessing

  • JSON Path: $[?(@.linked_account=="{#AWS.LINKED.ACCOUNT}")].first()

Account [{#AWS.LINKED.ACCOUNT}]: Total daily cost

Collects total daily cost for {#AWS.LINKED.ACCOUNT} AWS account.

Dependent item aws.account.daily.total.cost["{#AWS.LINKED.ACCOUNT}"]

Preprocessing

  • JSON Path: $.total

Trigger prototypes for AWS account daily cost discovery

Name Description Expression Severity Dependencies and additional info
AWS account daily cost warning

AWS {#AWS.LINKED.ACCOUNT} account daily cost is above warning threshold {$AWS.ACCOUNT.COST.DAILY.WARN}. Please monitor account spending and investigate cost increase trends.

last(/AWS Cost Explorer by HTTP/aws.account.daily.total.cost["{#AWS.LINKED.ACCOUNT}"]) >= {$AWS.ACCOUNT.COST.DAILY.WARN} Warning Depends on:
  • AWS account daily cost high
AWS account daily cost high

AWS {#AWS.LINKED.ACCOUNT} account daily cost has exceeded high threshold {$AWS.ACCOUNT.COST.DAILY.HIGH}. Immediate investigation of account spending is recommended.

last(/AWS Cost Explorer by HTTP/aws.account.daily.total.cost["{#AWS.LINKED.ACCOUNT}"]) >= {$AWS.ACCOUNT.COST.DAILY.HIGH} High

LLD rule AWS region daily cost discovery

Name Description Type Key and additional info
AWS region daily cost discovery

Discovers AWS daily region cost data.

Dependent item aws.region.daily.cost.discovery

Item prototypes for AWS region daily cost discovery

Name Description Type Key and additional info
Region [{#AWS.REGION}]: Get daily data

Collects AWS service daily cost from {#AWS.REGION} region.

Dependent item aws.region.daily.cost.processed.get["{#AWS.REGION}"]

Preprocessing

  • JSON Path: $[?(@.region=="{#AWS.REGION}")].first()

Region [{#AWS.REGION}]: Total daily cost

Collects {#AWS.REGION} region daily cost.

Dependent item aws.region.daily.cost["{#AWS.REGION}"]

Preprocessing

  • JSON Path: $.total_cost

Trigger prototypes for AWS region daily cost discovery

Name Description Expression Severity Dependencies and additional info
AWS region daily cost warning

AWS {#AWS.REGION} region daily cost is above warning threshold {$AWS.REGION.COST.DAILY.WARN}. Please monitor region spending and investigate cost increase trends.

last(/AWS Cost Explorer by HTTP/aws.region.daily.cost["{#AWS.REGION}"]) >= {$AWS.REGION.COST.DAILY.WARN} Warning Depends on:
  • AWS region daily cost high
AWS region daily cost high

AWS {#AWS.REGION} region daily cost has exceeded high threshold {$AWS.REGION.COST.DAILY.HIGH}. Immediate investigation of region spending is recommended.

last(/AWS Cost Explorer by HTTP/aws.region.daily.cost["{#AWS.REGION}"]) >= {$AWS.REGION.COST.DAILY.HIGH} High

LLD rule AWS service yearly discovery

Name Description Type Key and additional info
AWS service yearly discovery

Discovers AWS service yearly data.

Dependent item aws.service.yearly.discovery

Item prototypes for AWS service yearly discovery

Name Description Type Key and additional info
AWS service [{#AWS.SERVICE.NAME}]: Get yearly data

Collects AWS yearly data for AWS {#AWS.SERVICE.NAME} service.

Dependent item aws.service.yearly.preprocessed.get["{#AWS.SERVICE.NAME}"]

Preprocessing

  • JSON Path: $[?(@.service=="{#AWS.SERVICE.NAME}")].first()

AWS service [{#AWS.SERVICE.NAME}]: Total yearly cost

Collects AWS {#AWS.SERVICE.NAME} service yearly cost.

Dependent item aws.service.yearly.category.get["{#AWS.SERVICE.NAME}"]

Preprocessing

  • JSON Path: $.total_amount

LLD rule AWS daily costs by service discovery

Name Description Type Key and additional info
AWS daily costs by service discovery

Discovery of daily blended costs by service.

Dependent item aws.daily.services.costs.discovery

Preprocessing

  • JSON Path: $..Groups.first()

Item prototypes for AWS daily costs by service discovery

Name Description Type Key and additional info
Service [{#AWS.BILLING.SERVICE.NAME}]: Blended daily cost

The daily blended cost of the {#AWS.BILLING.SERVICE.NAME} service for the previous day.

Dependent item aws.daily.service.cost["{#AWS.BILLING.SERVICE.NAME}"]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

Trigger prototypes for AWS daily costs by service discovery

Name Description Expression Severity Dependencies and additional info
AWS service daily cost warning

AWS {#AWS.BILLING.SERVICE.NAME} service daily cost is above warning threshold {$AWS.SERVICE.COST.DAILY.WARN}. Please monitor service usage and investigate cost increase trends.

last(/AWS Cost Explorer by HTTP/aws.daily.service.cost["{#AWS.BILLING.SERVICE.NAME}"]) >= {$AWS.SERVICE.COST.DAILY.WARN} Warning Depends on:
  • AWS service daily cost high
AWS service daily cost high

AWS {#AWS.BILLING.SERVICE.NAME} service daily cost has exceeded high threshold {$AWS.SERVICE.COST.DAILY.HIGH}. Immediate investigation of service spending is recommended.

last(/AWS Cost Explorer by HTTP/aws.daily.service.cost["{#AWS.BILLING.SERVICE.NAME}"]) >= {$AWS.SERVICE.COST.DAILY.HIGH} High

LLD rule AWS monthly costs by service discovery

Name Description Type Key and additional info
AWS monthly costs by service discovery

Discovery of monthly costs by service.

Dependent item aws.cost.service.monthly.discovery

Preprocessing

  • JSON Path: $.monthly_service_costs

Item prototypes for AWS monthly costs by service discovery

Name Description Type Key and additional info
[{#AWS.BILLING.SERVICE.NAME}]: Month [{#AWS.BILLING.MONTH}] Blended cost

The monthly cost by service {#AWS.BILLING.SERVICE.NAME}.

Dependent item aws.monthly.service.cost["{#AWS.BILLING.SERVICE.NAME}", "{#AWS.BILLING.MONTH}"]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

LLD rule AWS monthly costs discovery

Name Description Type Key and additional info
AWS monthly costs discovery

Discovery of monthly costs.

Dependent item aws.monthly.cost.discovery

Preprocessing

  • JSON Path: $.monthly_costs

Item prototypes for AWS monthly costs discovery

Name Description Type Key and additional info
[{#AWS.BILLING.MONTH}]: Blended cost per month

The blended cost by month {#AWS.BILLING.MONTH}.

Dependent item aws.monthly.cost["{#AWS.BILLING.MONTH}"]

Preprocessing

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 3h

Trigger prototypes for AWS monthly costs discovery

Name Description Expression Severity Dependencies and additional info
AWS monthly billing warning

AWS {#AWS.BILLING.MONTH} monthly blended cost is above warning threshold {$AWS.BILLING.MONTH.WARN}. Please monitor cost trends and investigate recent usage increases.

last(/AWS Cost Explorer by HTTP/aws.monthly.cost["{#AWS.BILLING.MONTH}"]) >= {$AWS.BILLING.MONTH.WARN} Warning Depends on:
  • AWS monthly billing high
AWS monthly billing high

AWS {#AWS.BILLING.MONTH} monthly blended cost has exceeded high threshold {$AWS.BILLING.MONTH.HIGH}. Immediate cost investigation is recommended.

last(/AWS Cost Explorer by HTTP/aws.monthly.cost["{#AWS.BILLING.MONTH}"]) >= {$AWS.BILLING.MONTH.HIGH} High
AWS monthly billing budget warning 80%

AWS {#AWS.BILLING.MONTH} monthly blended cost has reached 80% of the defined budget {$AWS.BUDGET.MONTH}. Please monitor spending to avoid budget overrun.

last(/AWS Cost Explorer by HTTP/aws.monthly.cost["{#AWS.BILLING.MONTH}"]) >= {$AWS.BUDGET.MONTH}*0.8 Warning Depends on:
  • AWS monthly billing budget exceeded 100%
AWS monthly billing budget exceeded 100%

AWS {#AWS.BILLING.MONTH} monthly blended cost has reached or exceeded the full budget {$AWS.BUDGET.MONTH}. Immediate cost control actions are recommended.

last(/AWS Cost Explorer by HTTP/aws.monthly.cost["{#AWS.BILLING.MONTH}"]) >= {$AWS.BUDGET.MONTH} High

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

Articles and documentation

+ Propose new article

Didn't find what you are looking for?