Azure

PrometheusでAzure仮想マシンを対象としたService Discovery活用する

はじめに

Azure仮想マシンでもPrometheusを活用できるという話題です。PrometheusはAzureとの連携が用意にできるような仕組みを持っています。

これは <azure_sd_config> を定義することでAzure上の仮想マシンを検出することが可能です。Azure discoveryです。

Configuration | Prometheus
Configuration | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient t ...

prometheus.io

Auto discovery を利用するには以下の作業が必要となります。

  • アプリ登録
  • Prometheusのインストールとprometheus.yml に<azure_sd_config>を追加
  • node_exporterのインストール

検証用の環境

Prometheus 用と監視する対象として2台を用意し、確認用にWindows serverを用意しています。

アプリ登録

AzureADからアプリ登録を行います。

シークレットの作成を行い、値は控えておきます。

クライアントIDとテナントIDも控えておきます。

あとはサブスクリプションに対してロールを割り当てます。

サブスクリプションIDを控えておきます。

 

Prometheusのインストール

Ubuntu Serverではパッケージでインストールすることも可能です。ただし未病にバージョンが古いです。

apt install prometheus

今回は最新バージョンを利用するため、GitHubよりダウンロードしてきます。

GitHub - prometheus/prometheus: The Prometheus monitoring system and time series database.
GitHub - prometheus/prometheus: The Prometheus monitoring system and time series database.

The Prometheus monitoring system and time series database. - prometheus/prometheus

github.com

curl -L -O https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz

解凍します。

tar zxvf prometheus-2.42.0.linux-amd64.tar.gz

cd prometheus-2.42.0.linux-amd64

とりあえず起動できるか確認します。

./prometheus

起動を確認したら、ctrl+c で一度停止します。

 

prometheus.ymlの編集

prometheus.yml を編集します。static_configsをコメントアウトして、azure_sd_configs を編集します。上記で控えたそれぞれのIDを入力します。リソースグループは、省略できます。ないとサービスプリンシパルのRBACの適用範囲(ここではサブスクリプション)の範囲で仮想マシンを検出してしまいます。避けるためにリソースグループを指定します。

Configuration | Prometheus
Configuration | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient t ...

prometheus.io

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    #static_configs:
    #  - targets: ["localhost:9090"]

    azure_sd_configs:
      - subscription_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        tenant_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        client_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        resource_group: <リソースグループ名>
        port: 9100

 

編集後にprometheusを起動しておきます。

node_exporterのインストール

node_exporterはパッケージでもインストール可能です。

apt install prometheus-node-exporter

最新バージョンを利用するためGitHubからダウンロードしてきます。

GitHub - prometheus/node_exporter: Exporter for machine metrics
GitHub - prometheus/node_exporter: Exporter for machine metrics

Exporter for machine metrics. Contribute to prometheus/node_exporter development by creating an acco ...

github.com

curl -L -O https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

解凍します。

tar zxvf node_exporter-1.5.0.linux-amd64.tar.gz

cd node_exporter-1.5.0.linux-amd64

起動します。

./node_exporter

動作を確認していきます。

動作確認

動作を確認するには同じprometheusと同じセグメントが楽です。今回はWindows serverを用意して確認しています。

最初にターゲットを確認してみます。

node_exporter を起動している仮想マシンが検出されていることがわかります。

Service Discoveryを確認するとメタデータが確認できます。

以上にようにAzure仮想マシンでPrometheusを有効に活用できます。

まとめ

Prometheus はAzureでも連携してくれます。今後も、Prometheus 用のAzure Monitorが出てきているなど着々とCloud Nativeを意識したサービスがAzureでも増えるでしょう。

-Azure
-,