Giter Club home page Giter Club logo

azure_metrics_exporter's Introduction

Azure-metrics-exporter

Azure metrics exporter for Prometheus.

Allows for the exporting of metrics from Azure applications using the Azure monitor API.

Install

go get -u github.com/RobustPerception/azure_metrics_exporter

Usage

./azure_metrics_exporter --help

Rate limits

Note that Azure imposes an API read limit of 15,000 requests per hour so the number of metrics you're querying for should be proportional to your scrape interval.

Exporter configuration

This exporter requires a configuration file. By default, it will look for the azure.yml file in the CWD.

Azure account requirements

This exporter reads metrics from an existing Azure subscription with these requirements:

  • If not using managed identities:

    • An application must be registered (e.g., Azure Active Directory -> App registrations -> New application registration)
    • The registered application must have reading permission to Azure Monitor (e.g., Subscriptions -> your_subscription -> Access control (IAM) -> Role assignments -> Add -> Add role assignment -> Role : "Monitoring Reader", Select: your_app)
  • If using managed identities:

    • The VM running the azure-metrics-exporter must have reading permission to Azure Monitor (e.g., Subscriptions -> your_subscription -> Access control (IAM) -> Role assignments -> Add -> Add role assignment -> Role : "Monitoring Reader", Select: your_vm)
    • Only subscription_id will be needed in your credentials configuration.

Example azure-metrics-exporter config

azure_resource_id and subscription_id can be found under properties in the Azure portal for your application/service.

azure_resource_id should start with /resourceGroups... (/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxx must be removed from the begining of azure_resource_id property value)

tenant_id is found under Azure Active Directory > Properties and is listed as Directory ID.

The client_id and client_secret are obtained by registering an application under 'Azure Active Directory'.

client_id is the application_id of your application and the client_secret is generated by selecting your application/service under Azure Active Directory, selecting 'keys', and generating a new key.

If you want to scrape metrics from Azure national clouds (e.g. AzureChinaCloud, AzureGermanCloud), you should provide active_directory_authority_url and resource_manager_url parameters. active_directory_authority_url is AzureAD url for getting access token. resource_manager_url is Azure API management url. If you won't provide active_directory_authority_url and resource_manager_url parameters, azure-metrics-exporter scrapes metrics from global cloud. You can find endpoints for national clouds here

active_directory_authority_url: "https://login.microsoftonline.com/"
resource_manager_url: "https://management.azure.com/"
credentials:
  subscription_id: <secret>
  client_id: <secret>
  client_secret: <secret>
  tenant_id: <secret>

targets:
  - resource: "azure_resource_id"
    metrics:
    - name: "BytesReceived"
    - name: "BytesSent"
  - resource: "azure_resource_id"
    aggregations:
    - Minimum
    - Maximum
    - Average
    metrics:
    - name: "Http2xx"
    - name: "Http5xx"
  - resource: "azure_resource_id"
    metric_namespace: "Azure.VM.Windows.GuestMetrics"
    metrics:
    - name: 'Process\Thread Count'

resource_groups:
  - resource_group: "webapps"
    resource_types:
    - "Microsoft.Compute/virtualMachines"
    resource_name_include_re:
    - "testvm.*"
    resource_name_exclude_re:
    - "testvm12"
    metrics:
    - name: "CPU Credits Consumed"

resource_tags:
  - resource_tag_name: "group"
    resource_tag_value: "tomonitor"
    resource_types:
      - "Microsoft.Compute/virtualMachines"
    metrics:
      - name: "CPU Credits Consumed"

By default, all aggregations are returned (Total, Maximum, Average, Minimum). It can be overridden per resource.

The metric_namespace property is optional for all filtering types. When the metric namespace is specified, it will be added as a prefix of the metric name. It can be used to target custom metrics, such as guest OS performance counters. If not specified, the default metric namespace of the resource will apply.

Resource group filtering

Resources in a resource group can be filtered using the the following keys:

resource_types: List of resource types to include (corresponds to the Resource type column in the Azure portal).

resource_name_include_re: List of regexps that is matched against the resource name. Metrics of all matched resources are exported (defaults to include all)

resource_name_exclude_re: List of regexps that is matched against the resource name. Metrics of all matched resources are ignored (defaults to exclude none) Excludes take precedence over the include filter.

Resource tag filtering

Resources having a specific tag name and tag value can be filtered:

resource_tag_name: Name of the tag to be filtered against.

resource_tag_value: Value of the tag to be filtered against.

resource_types: optional list of types kept in the list of resources gathered by tag. If none are specified, then all the resources are kept. All defined metrics must exist for each processed resource.

Retrieving Metric definitions

In order to get all the metric definitions for the resources specified in your configuration file, run the following:

./azure_metrics_exporter --list.definitions

This will print your resource id's application/service name along with a list of each of the available metric definitions that you can query for for that resource.

Retrieving Metric namespaces

In order to get all the metric namespaces for the resources specified in your configuration file, run the following:

./azure_metrics_exporter --list.namespaces

This will print your resource id's application/service name along with a list of each of the available metric namespaces that you can query for for that resource.

Prometheus configuration

Example config

global:
  scrape_interval:     60s # Set a high scrape_interval either globally or per-job to avoid hitting Azure Monitor API limits.

scrape_configs:
  - job_name: azure
    static_configs:
      - targets: ['localhost:9276']

azure_metrics_exporter's People

Contributors

conr avatar carlpett avatar vincentcreusotfx avatar e96wic avatar rolandvarga avatar brian-brazil avatar debfx avatar forestsword avatar murata100 avatar vivekdevops avatar vincentcreusot avatar shoudusse avatar s-buhar0v avatar ngrewe avatar mboret avatar marioanton avatar beckness avatar geekdave avatar asheniam avatar akamac avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.