cloudalchemy.prometheus

廃止

このロールは、prometheus-community/ansible コレクションに置き換えられました。

Ansibleロール: prometheus

CircleCI License Ansible Role GitHub tag

説明

Ansibleを使用してPrometheus監視システムをデプロイします。

アップグレードの注意事項

このロールのバージョンが2.4.0以下から2.4.1以上にアップグレードする場合は、Prometheusインスタンスをオフにしてください。詳細は2.4.1リリースノートをご覧ください。

要件

  • Ansible >= 2.7(以前のバージョンでも動作する可能性がありますが、保証はできません)
  • デプロイマシンにjmespathが必要です。Pythonの仮想環境からAnsibleを使用している場合は、pipを使用して同じ仮想環境にjmespathをインストールしてください。
  • Macデプロイホストにgnu-tarが必要です(brew install gnu-tarを使用)

ロール変数

オーバーライド可能なすべての変数は、defaults/main.ymlファイルおよび下の表に保存されています。

名前 デフォルト値 説明
prometheus_version 2.27.0 Prometheusパッケージのバージョン。latestもサポートします。Prometheus 2.xのみ対応。
prometheus_skip_install false trueに設定するとPrometheusインストールタスクがスキップされます。
prometheus_binary_local_dir "" GitHubで配布されているものではなくローカルパッケージを使用します。パラメータとして、Ansibleを実行するホスト上にあるprometheuspromtoolバイナリが保存されているディレクトリを指定します。この設定はprometheus_versionパラメータを上書きします。
prometheus_config_dir /etc/prometheus Prometheus設定用のディレクトリパス
prometheus_db_dir /var/lib/prometheus Prometheusデータベース用のディレクトリパス
prometheus_read_only_dirs [] Prometheusが読み取ることが許可される追加パス(設定ディレクトリ外のSSL証明書などに便利)
prometheus_web_listen_address "0.0.0.0:9090" Prometheusがリッスンするアドレス
prometheus_web_config {} TLSと認証を設定するためのPrometheus用のウェブ設定yaml
prometheus_web_external_url "" Prometheusが外部からアクセス可能なアドレス。リバースプロキシの背後にいる場合に便利です。例: http://example.org/prometheus
prometheus_storage_retention "30d" データの保持期間
prometheus_storage_retention_size "0" サイズによるデータの保持期間
prometheus_config_flags_extra {} Prometheusバイナリ起動時に渡される追加設定フラグ
prometheus_alertmanager_config [] Alertmanagerの設定。このリストはyaml形式で指定します。公式のに対応しています。
prometheus_alert_relabel_configs [] アラートの再ラベル設定。このリストはyaml形式で指定します。公式のに対応しています。
prometheus_global { scrape_interval: 60s, scrape_timeout: 15s, evaluation_interval: 15s } Prometheusのグローバル設定。公式設定に対応しています。
prometheus_remote_write [] リモート書き込み。公式設定に対応しています。
prometheus_remote_read [] リモート読み込み。公式設定に対応しています。
prometheus_external_labels environment: "{{ ansible_fqdn default(ansible_host)
prometheus_targets {} スクレイピングされるターゲット
prometheus_scrape_configs defaults/main.yml#L58 公式ドキュメントと同じ形式で提供されるPrometheusスクレイプジョブ
prometheus_config_file "prometheus.yml.j2" Ansibleテンプレート形式のカスタムPrometheus設定ファイルを提供するために使用される変数
prometheus_alert_rules defaults/main.yml#L81 {{ prometheus_config_dir }}/rules/ansible_managed.rulesにコピーされるアラートルールの完全リスト。アラートルールは{{ prometheus_config_dir }}/rules/内の*.rules拡張子を持つ他のファイルでも提供できます。
prometheus_alert_rules_files defaults/main.yml#L78 アラートルールを含むファイルを探すためにAnsibleが見るフォルダのリスト。ファイル名は*.rules拡張子を持つ必要があります。
prometheus_static_targets_files defaults/main.yml#L78 カスタム静的ターゲット設定ファイルを含むフォルダを探すためにAnsibleが見るリスト。これらは{{ prometheus_config_dir }}/file_sd/にコピーされます。

prometheus_scrape_configsprometheus_targetsの関係

短いバージョン

prometheus_targetsは、"{{ prometheus_config_dir }}/file_sd"ディレクトリ内に複数のファイルを作成するために使用されるマップです。ファイル名はそのマップのトップレベルキーで構成され、.ymlが付きます。これらのファイルはfile_sdスクレイピングターゲットデータを格納し、prometheus_scrape_configsで読み込まれる必要があります。

長いバージョン

Prometheusによってスクレイピングされるものを示すprometheus.yml設定ファイルの一部は、prometheus_scrape_configsに保存されます。この変数には、Prometheusドキュメントで説明されているのと同じ構成オプションが使用されます。

一方、prometheus_targetsPrometheusスクレイプタイプfile_sdを採用する方法です。ファイルのマップを定義しており、トップレベルキーはファイル名の基本名であり、それぞれのスクレイプジョブがprometheus_scrape_configsで必要です。

これにより、カスタムprometheus_scrape_configsを使用することができますが、prometheus_targetsに何かを設定した場合、それはprometheus_scrape_configsにマッピングされる必要があります。マッピングされていなければ、事前チェックでエラーが発生します。

デフォルト設定を見てみましょう。デフォルトのprometheus_targetsは次のようになります。

prometheus_targets:
  node:  # これは基本ファイル名です。ファイルは "{{ prometheus_config_dir }}/file_sd/<<BASENAME>>.yml" にあります。
    - targets:              #
        - localhost:9100    # これらはすべてfile_sd形式のターゲットセクションです。
      labels:               #
        env: test           #

この設定では、{{ prometheus_config_dir }}/file_sdディレクトリにnode.ymlという1つのファイルが作成されます。

次に、このファイルはスクレイプ設定にロードする必要があります。デフォルトのprometheus_scrape_configsを修正したバージョンは次のようになります。

prometheus_scrape_configs:
  - job_name: "prometheus"    # カスタムスクレイプジョブ、ここでは`static_config`を使用
    metrics_path: "/metrics"
    static_configs:
      - targets:
          - "localhost:9090"
  - job_name: "example-node-file-servicediscovery"
    file_sd_configs:
      - files:
          - "{{ prometheus_config_dir }}/file_sd/node.yml" # この行は、prometheus_targetsから作成されたファイルをロードします。

プレイブック

---
- hosts: all
  roles:
  - cloudalchemy.prometheus
  vars:
    prometheus_targets:
      node:
      - targets:
        - localhost:9100
        - demo.cloudalchemy.org:9100
        labels:
          env: demosite

デモサイト

Prometheus組織は、PrometheusとGrafanaに基づく完全な監視ソリューションのためのデモサイトを提供しています。コードのリポジトリと実行中のインスタンスへのリンクはこちらのGitHubで利用可能です。

アラートルールファイルの定義

アラートルールはprometheus_alert_rules変数で定義されます。フォーマットはPrometheus 2.0ドキュメントで定義されたものとほぼ同一です。テンプレートエンジンの類似性により、すべてのテンプレートは{% raw %}{% endraw %}ステートメントでラップする必要があります。例は、defaults/main.ymlファイルに提供されています。

ローカルテスト

ローカルでロールをテストするための最適な方法は、Dockerとmolecule(v2.x)を使用することです。システムにDockerをインストールする必要があります。システムに適したDockerパッケージについては「使い始める」を参照してください。 複数のAnsibleバージョンでのテストプロセスを簡素化するために、toxを使用しています。toxをインストールするには、次のコマンドを実行します。

pip3 install tox

すべてのAnsibleバージョンでテストを実行するには(WARNING: これには時間がかかる可能性があります)

tox

カスタム環境でカスタムmoleculeコマンドをデフォルトテストシナリオのみで実行するには:

tox -e py35-ansible28 -- molecule test -s default

moleculeの詳細については、ドキュメントを参照してください。

リモートDockerホストでテストを実行したい場合は、toxテストを実行する前にDOCKER_HOST変数を指定してください。

CircleCI

moleculeとCircleCIを組み合わせることで、新しいPRが複数のAnsibleバージョンや複数のオペレーティングシステムでどのように動作するかをテストできます。また、さまざまなロール構成用のテストシナリオを作成することも可能です。結果として、かなり大きなテストマトリックスが作成されるため、ローカルテストよりも時間がかかる場合がありますので、ご了承ください。

コントリビューティング

コントリビューターガイドラインを参照してください。

トラブルシューティング

トラブルシューティングを参照してください。

ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細についてはLICENSEをご覧ください。

プロジェクトについて

Prometheus monitoring system configuration and management

インストール
ansible-galaxy install cloudalchemy.prometheus
ライセンス
mit
ダウンロード
1.7M
所有者
Setup your monitoring stack with ansible