coopdevs.monitoring_role
モニタリングロール 
Grafanaエコシステムのモニタリングツールを管理するためのAnsibleロールです。
Dockerを使用してPrometheusとLokiエクスポーターをインストールします:
nodeexporter
: ホストの状態に関する一般データを収集するPrometheusエクスポーター。postgresexporter
: PostgreSQLサーバーの状態を監視するPrometheusエクスポーター。promtail
: Lokiの主要なエクスポーターで、Prometheusに似たログサーバーであり、Grafanaと互換性があります。
このロールは以下のアプリケーションのデフォルトログ形式をサポートしています:
さらに、システム内のアクティブユーザーを公開するカスタムエクスポーターもサポートしています。
このロールの使用
公開変数
NodeExporter
# defaults/main.yaml
monitoring_nexporter_enabled: true
monitoring_nexporter_host: 127.0.0.1
monitoring_nexporter_port: 9100
monitoring_nexporter_docker_bind: "127.0.0.1:127.0.0.1:9100"
monitoring_nexporter_container_name: nexporter
monitoring_nexporter_image_version: latest
PostgresqlExporter
monitoring_postgres_exporter_enabled: true
monitoring_postgres_exporter_pg_user: "monitor_user"
Promtail
# defaults/main.yaml
monitoring_promtail_enabled: true
monitoring_promtail_host: 127.0.0.1
monitoring_promtail_port: 9080
monitoring_promtail_docker_bind: "127.0.0.1:127.0.0.1:9080"
monitoring_promtail_container_name: promtail
monitoring_promtail_image_version: latest
monitoring_promtail_modules_enabled:
- "app2"
monitoring_promtail_modules_available:
app1:
log_path: "/var/log/app1/error.log"
template: "app1.j2"
app2:
log_path: "/opt/app2/log/app2.log"
template: "app2.j2"
monitoring_promtail_config_dir: "/etc/promtail"
monitoring_promtail_config_filename: "config.yml"
アクティブユーザー
monitoring_users_enabled: true
monitoring_users_host: 127.0.0.1
monitoring_users_port: 9839
monitoring_users_endpoint: "/metrics"
monitoring_users_prefix: "what"
monitoring_users_with_timestamp: false
monitoring_users_scrape_interval: 5000
秘密変数
Promtail
monitoring_loki_user: "1234"
monitoring_loki_key: "eyJrIjoiM2VlZmM2NmQ4ZTQ4ZmE3MDRmZDBmMGE0YzNlNTE1MzRjZDdjNDY0N2YiLCJuIjoieW91ciBncmFmYW5hIGNsb3VkIGtleSIsImlkIjoxMjM0NTZ9"
monitoring_loki_hostname: "logs-somewhere.grafana.net"
PostgresqlExporter
monitoring_postgres_exporter_pg_password: "3%hyZ&toNZ#Xn74"
monitoring_postgres_exporter_pg_port: "3456"
例のプレイブック
Odooとpromtail
# playbooks/odoo-promtail.yml
---
- name: Odooとログ監視をインストール
hosts: servers
become: yes
roles:
- role: coopdevs.odoo_role
- role: coopdevs.monitoring_role
vars:
monitoring_nexporter_enabled: false
monitoring_promtail_enabled: true
monitoring_promtail_modules_enabled: [ "odoo" ]
monitoring_loki_user: "1234"
monitoring_loki_key: "eyJrIjoiM2VlZmM2NmQ4ZTQ4ZmE3MDRmZDBmMGE0YzNlNTE1MzRjZDdjNDY0N2YiLCJuIjoieW91ciBncmFmYW5hIGNsb3VkIGtleSIsImlkIjoxMjM0NTZ9"
monitoring_loki_hostname: "logs-somewhere.grafana.net"
PostgreSQLとシステムメトリクス
# playbooks/postgres-nexporter.yml
---
- name: システムメトリクスを公開したデータベースサーバーをインストール
hosts: servers
become: yes
roles:
- role: geerlingguy.postgresql
- role: coopdevs.monitoring_role
vars:
monitoring_nexporter_enabled: true
monitoring_promtail_enabled: false
セキュリティ
このロールはHTTPサーバーを介して多くのデータを公開しており、悪用される可能性があります。デフォルトでは、インターネットから公開されないループバックアドレスをリッスンします。
ただし、外部のPrometheusサーバーが定期的にこのデータを取得することを望むかもしれません。この目的のために、Prometheusサーバーからホストへの認証が必要です。
一つのアプローチは、エクスポーターをlocalhostにバインドし、その前にBasic Authenticationを使用してリバースプロキシを設定することです。この設定と関連キーの管理はこのロールの範囲外です。
拡張
Prometheusエクスポーターを追加する
新しいPrometheusエクスポーターを追加するには:
- Node Exporterから
defaults/main.yml
セクションをコピーし、すべてのnexporter
用語を自分のものに変更します(例:someexporter
)。 - Node Exporterから
templates/monitoring-docker-compose.yml.j2
セクションをコピーし、名前を変更して必要に応じて調整します。 meta/main.yml
を調整:タグを追加し、必要に応じて説明を変更します。README.md
を更新します。
新しいアプリのためのPromtailモジュール
まだサポートされていないアプリの互換性を追加するには:
monitoring_promtail_modules_available
に宣言します。ログパスはアプリによって異なり、ここで設定したテンプレート名になります。templates/promtail-config-apps/odoo-role.j2
を同じディレクトリにコピーし、ファイル名をnew-app.j2
に変更します。- テンプレートをアプリに応じて編集します。公式ドキュメントを確認してください(こちら)。
- 正規表現を確認するにはregexrの「サーバーモード」またはregex101.comを利用できます。 明確さのためにいくつかのログエントリのコメントを含めると、将来の正規表現リーダーに役立ちます。
labels
ステージを設定して、Lokiにエクスポートされるラベルをすべての収集されたものから定義します。timestamp
ステージを設定して、Promtailが収集した時間ではなく、実際の日時でログ行にタイムスタンプを付けます。- 可能であればミリ秒を含めてください。Golangは小数点区切りとして「.」のみを理解します。アプリが「,」を使用している場合は問題があります。 Golangの問題#6189を参照してください。
- 解析を通じてタイムゾーンを含めるか、手動で(
backups-role.j2
のように)または(odoo-role.j2
のように)設定します。
- 必要に応じて、正規表現に合致しないエントリーを取り除くための
match
ステージを含めても良いです。
プロジェクトについて
Install Prometheus and Loki exporters to monitor your project instances
インストール
ansible-galaxy install coopdevs.monitoring_role
ライセンス
Unknown
ダウンロード
22.4k
所有者
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.