cloudalchemy.prometheus
廃止
このロールは、prometheus-community/ansible コレクションに置き換えられました。
Ansibleロール: prometheus
説明
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を実行するホスト上にあるprometheus とpromtool バイナリが保存されているディレクトリを指定します。この設定は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_configs
とprometheus_targets
の関係
短いバージョン
prometheus_targets
は、"{{ prometheus_config_dir }}/file_sd"ディレクトリ内に複数のファイルを作成するために使用されるマップです。ファイル名はそのマップのトップレベルキーで構成され、.yml
が付きます。これらのファイルはfile_sdスクレイピングターゲットデータを格納し、prometheus_scrape_configs
で読み込まれる必要があります。
長いバージョン
Prometheusによってスクレイピングされるものを示すprometheus.yml設定ファイルの一部は、prometheus_scrape_configs
に保存されます。この変数には、Prometheusドキュメントで説明されているのと同じ構成オプションが使用されます。
一方、prometheus_targets
はPrometheusスクレイプタイプ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