PrometheusとGrafanaを使用したモニタリング
PrometheusとGrafanaを使用して、SUSE Multi-Linux Manager環境を監視できます 。SUSE Multi-Linux Managerサーバとプロキシはself-health metricsを提供できます。また、Saltクライアント上に多数のPrometheus exportersをインストールして管理することもできます。
1. 要件
PrometheusとGrafanaパッケージは以下のSUSE Multi-Linux Managerクライアントツールに含まれています。
-
SUSE Linux Enterprise 15
-
SUSE Linux Enterprise 16
-
openSUSE Leap 15.x
-
openSUSE Leap 16.x
|
上記のクライアントのみがモニタリングサーバとしてサポートされます。 |
SUSE Multi-Linux Managerサーバとは別のマシンにPrometheusとGrafanaをインストールする必要があります。 管理対象のSalt SUSEクライアントをモニタリングサーバとして使用することをお勧めします。
Prometheusはプルメカニズムを使用してメトリックをフェッチするため、サーバは監視対象クライアントへのTCP接続を確立できる必要があります。 クライアントには対応するオープンポートがあり、ネットワークを介して到達できる必要があります。 または、リバースプロキシを使用して接続を確立することもできます。
|
監視するクライアントごとに、モニタリングアドオンサブスクリプションが必要です。 SUSE Customer Centerにアクセスして、SUSE Multi-Linux Managerのサブスクリプションを管理してください。 |
2. PrometheusとGrafana
2.1. Prometheus
Prometheusはオープンソースのモニタリングツールで、リアルタイムメトリックを時系列データベースに記録するために使用されます。 メトリックはHTTP経由でプルされるため、高いパフォーマンスと拡張性が実現します。
Prometheusメトリックは時系列データ、または同じグループやディメンションに属するタイムスタンプ付きの値です。 メトリックはその名前とラベルセットで固有に識別されます。
メトリック名 ラベル タイムスタンプ 値
┌────────┴───────┐ ┌───────────┴───────────┐ ┌──────┴──────┐ ┌─┴─┐
http_requests_total{status="200", method="GET"} @1557331801.111 42236
監視対象の各アプリケーションまたはシステムは、コードインストルメンテーションまたはPrometheus exportersを使用して、上記の形式でメトリックを公開する必要があります。
2.2. Prometheus Exporters
Exportersは、サードパーティシステムからメトリックをPrometheusメトリックとしてエクスポートするのに役立つライブラリです。 Exportersは、Prometheusメトリックを直接使用して特定のアプリケーションまたはシステムをインストルメントできない場合に役立ちます。 複数のexportersを監視対象ホスト上で実行して、ローカルメトリックをエクスポートできます。
Prometheusコミュニティは公式exportersのリストを提供し、さらに多くのものをコミュニティの貢献として見つけることができます。 詳細およびexportersの詳細なリストについては、https://prometheus.io/docs/instrumenting/exporters/を参照してください。
2.3. Grafana
Grafanaは、データの視覚化、モニタリング、および分析を行うためのツールです。 一定期間の特定のメトリックを表すパネルを使用してダッシュボードを作成するために使用されます。 Grafanaは通常、Prometheusと一緒に使用されますが、Elasticsearch、MySQL、PostgreSQL、Influx DBなどの他のデータソースもサポートしています。 Grafanaの詳細については、https://grafana.com/docs/を参照してください。
3. モニタリングサーバの設定
モニタリングサーバを設定するには、PrometheusとGrafanaをインストールして設定する必要があります。
|
SUSEクライアントのみがモニタリングサーバとしてサポートされます。 完全なリストについては、要件を参照してください。 |
3.1. Prometheusのインストール
モニタリングサーバがSaltクライアントの場合、SUSE Multi-Linux Manager Web UIを使用してPrometheusパッケージをインストールできます。 インストールできない場合は、モニタリングサーバに手動でパッケージをダウンロードしてインストールできます。 Prometheusソフトウェアは、SUSE Multi-Linux Managerプロキシおよび SUSE Multi-Linux Manager for Retailブランチサーバでも使用できます。
|
|
Prometheusはデータの保存にPOSIXファイルシステムを想定しています。 非POSIX準拠ファイルシステムはサポートされていません。 NFSファイルシステムはサポートされていません。 |
In the SUSE Multi-Linux Manager Web UI, open the details page of the system where Prometheus is to be installed, and navigate to the
Formulastab.Check the
Prometheuscheckbox to enable monitoring formulas, and click Save.Navigate to the
Prometheustab in the top menu.In the
SUSE Multi-Linux Manager Serversection, enter valid SUSE Multi-Linux Manager API credentials. 入力した資格情報でモニタリングするシステムセットにアクセスできることを確認してください。必要に応じて、他の設定オプションをカスタマイズします。
Save Formula(Formulaの保存)をクリックします。
highstateを適用し、正常に完了したことを確認します。
Check that the Prometheus interface loads correctly. In your browser, navigate to the URL of the server where Prometheus is installed, on port 9090 (for example,
http://example.com:9090).
モニタリング式の詳細については、Monitoring Formulaを参照してください。
On the monitoring server, install the
golang-github-prometheus-prometheuspackage:zypper in golang-github-prometheus-prometheusPrometheusサービスを有効にします。
systemctl enable --now prometheusCheck that the Prometheus interface loads correctly. In your browser, navigate to the URL of the server where Prometheus is installed, on port 9090 (for example,
http://example.com:9090).Open the configuration file at
/etc/prometheus/prometheus.ymland add this configuration information. Replaceserver.urlwith your SUSE Multi-Linux Manager server URL and adjustusernameandpasswordfields to match your SUSE Multi-Linux Manager credentials.# {productname} self-health metrics scrape_configs: - job_name: 'mgr-server' static_configs: - targets: - 'server.url:9100' # Node exporter - 'server.url:9187' # PostgreSQL exporter - 'server.url:5556' # JMX exporter (Tomcat) - 'server.url:5557' # JMX exporter (Taskomatic) - 'server.url:9800' # Taskomatic - targets: - 'server.url:80' # Message queue labels: __metrics_path__: /rhn/metrics # Managed systems metrics: - job_name: 'mgr-clients' uyuni_sd_configs: - server: "http://server.url" username: "admin" password: "admin" relabel_configs: - source_labels: [__meta_uyuni_exporter] target_label: exporter - source_labels: [__address__] replacement: "No group" target_label: groups - source_labels: [__meta_uyuni_groups] regex: (.+) target_label: groups - source_labels: [__meta_uyuni_minion_hostname] target_label: hostname - source_labels: [__meta_uyuni_primary_fqdn] regex: (.+) target_label: hostname - source_labels: [hostname, __address__] regex: (.*);.*:(.*) replacement: ${1}:${2} target_label: __address__ - source_labels: [__meta_uyuni_metrics_path] regex: (.+) target_label: __metrics_path__ - source_labels: [__meta_uyuni_proxy_module] target_label: __param_module - source_labels: [__meta_uyuni_scheme] target_label: __scheme__設定ファイルを保存します。
Prometheusサービスを再起動します。
systemctl restart prometheus
Prometheus設定オプションの詳細については、https://prometheus.io/docs/prometheus/latest/configuration/configuration/にある公式Prometheusドキュメントを参照してください。
3.2. Grafanaのインストール
モニタリングサーバがSUSE Multi-Linux Managerで管理されているクライアントの場合は、SUSE Multi-Linux ManagerのWeb UIを使用してGrafanaパッケージをインストールできます。それ以外の場合は、モニタリングサーバにパッケージを手動でダウンロードしてインストールできます。
|
GrafanaはSUSE Multi-Linux Managerプロキシでは使用できません。 |
In the SUSE Multi-Linux Manager Web UI, open the details page of the system where Grafana is to be installed, and navigate to the
Formulastab.Check the
Grafanacheckbox to enable monitoring formulas, and click Save.Navigate to the
Grafanatab in the top menu.In the
Enable and configure Grafanasection, enter the admin credentials you want to use to log in Grafana.On the
Datasourcessection, make sure that the Prometheus URL field points to the system where Prometheus is running.必要に応じて、他の設定オプションをカスタマイズします。
Save Formula(Formulaの保存)をクリックします。
highstateを適用し、正常に完了したことを確認します。
Check that the Grafana interface is loading correctly. In your browser, navigate to the URL of the server where Grafana is installed, on port 3000 (for example,
http://example.com:3000).
Grafanaに正常にアクセスするには、ファイアウォールでポート3000が開いていることを確認します
|
SUSE Multi-Linux Managerには、サーバのセルフヘルス、基本的なクライアントモニタリングなどのためのダッシュボードがあらかじめ構築されています。 プロビジョニングするダッシュボードは、式の設定ページで選択できます。 |
Install the
grafanapackage:zypper in grafanaGrafanaサービスを有効にします。
systemctl enable --now grafana-serverIn your browser, navigate to the URL of the server where Grafana is installed, on port 3000 (for example,
http://example.com:3000).
Grafanaに正常にアクセスするには、ファイアウォールでポート3000が開いていることを確認します。
On the login page, enter
adminfor username and password.ログインをクリックします。 ログインに成功すると、パスワードを変更するプロンプトが表示されます。
プロンプトでOKをクリックし、パスワードを変更します。
サイドメニューの歯車アイコンにカーソルを移動すると、設定オプションが表示されます。
Data sources(データソース)をクリックします。
Add data source(データソースの追加) をクリックすると、サポートされているすべてのデータソースのリストが表示されます。
Prometheusデータソースを選択します。
Prometheusサーバの正しいURLを指定してください。
Save & test(保存とテスト)をクリックします。
ダッシュボードをインポートするには、サイドメニューの+アイコンをクリックし、取り込みをクリックします。
For SUSE Multi-Linux Manager server overview load the dashboard ID:
17569.For SUSE Multi-Linux Manager clients overview load the dashboard ID:
17570.![]()
|
4. SUSE Multi-Linux Managerのモニタリングの設定
SUSE Multi-Linux Manager 4以降では、サーバがPrometheus self-health metricsを公開できるようにして、クライアントシステムにexportersをインストールして設定することもできます。
4.1. サーバ自己監視
Server self-health metricsは、ハードウェア、オペレーティングシステム、およびSUSE Multi-Linux Managerの内部を対象としています。 これらのメトリックは、Prometheus exportersと組み合わされた、Javaアプリケーションのインストルメンテーションによって利用可能になります。
以下のexporterパッケージはSUSE Multi-Linux Managerサーバに同梱されています。
-
Node exporter:
golang-github-prometheus-node_exporter. -
PostgreSQL exporter:
prometheus-postgres_exporter. -
JMX exporter:
prometheus-jmx_exporter.
以下のexporterパッケージはSUSE Multi-Linux Managerプロキシに同梱されています。
-
Node exporter:
golang-github-prometheus-node_exporter. -
Squid exporter:
golang-github-boynux-squid_exporter.-
https://github.com/boynux/squid-exporterを参照してください。
-
exporterパッケージはSUSE Multi-Linux Managerサーバおよびプロキシに事前インストールされていますが、各systemdデーモンはデフォルトで無効になっています。
SUSE Multi-Linux Manager Web UIで、に移動します。
Enable services(サービスの有効化)をクリックします。
TomcatとTaskomaticを再起動します。
Navigate to the URL of your Prometheus server, on port 9090 (for example,
http://example.com:9090)In the Prometheus UI, navigate to and confirm that all the endpoints on the
mgr-servergroup are up.Web UIを使用してGrafanaもインストールしている場合、サーバインサイトがSUSE Multi-Linux Managerサーバダッシュボードの管理[Manager Configuration > Monitoring (マネージャの設定 > モニタリング)]に表示されます。
|
Web UIを使用して有効にできるのは、サーバのセルフヘルスモニタリングだけです。 プロキシのメトリックは、Prometheusによって自動的に収集されません。 プロキシでセルフヘルスモニタリングを有効にするには、exportersを手動でインストールして有効にする必要があります。 |
以下の関連メトリックがSUSE Multi-Linux Managerサーバに収集されます。
| メトリック | タイプ | 説明 |
|---|---|---|
uyuni_all_systems |
ゲージ |
全システムの数 |
uyuni_virtual_systems |
ゲージ |
仮想システムの数 |
uyuni_inactive_systems |
ゲージ |
休止中のシステムの数 |
uyuni_outdated_systems |
ゲージ |
旧式パッケージを持つシステムの数 |
| メトリック | タイプ | 説明 |
|---|---|---|
pg_stat_database_tup_fetched |
カウンタ |
クエリによってフェッチされた行数 |
pg_stat_database_tup_inserted |
カウンタ |
クエリによって挿入された行数 |
pg_stat_database_tup_updated |
カウンタ |
クエリによって更新された行数 |
pg_stat_database_tup_deleted |
カウンタ |
クエリによって削除された行数 |
mgr_serveractions_completed |
ゲージ |
完了したアクションの数 |
mgr_serveractions_failed |
ゲージ |
失敗したアクションの数 |
mgr_serveractions_picked_up |
ゲージ |
ピックアップされたアクションの数 |
mgr_serveractions_queued |
ゲージ |
キューに入れられたアクションの数 |
| メトリック | タイプ | 説明 |
|---|---|---|
java_lang_Threading_ThreadCount |
ゲージ |
アクティブなスレッドの数 |
java_lang_Memory_HeapMemoryUsage_used |
ゲージ |
現在のヒープメモリ使用量 |
| メトリック | タイプ | 説明 |
|---|---|---|
message_queue_thread_pool_threads |
カウンタ |
これまでに作成されたメッセージキュースレッドの数 |
message_queue_thread_pool_threads_active |
ゲージ |
現在アクティブなメッセージキュースレッドの数 |
message_queue_thread_pool_task_count |
カウンタ |
これまでに送信されたタスクの数 |
message_queue_thread_pool_completed_task_count |
カウンタ |
これまでに完了したタスクの数 |
| メトリック | タイプ | 説明 |
|---|---|---|
salt_queue_thread_pool_size |
ゲージ |
Saltキューごとに作成されたスレッドの数 |
salt_queue_thread_pool_active_threads |
ゲージ |
キューごとに現在アクティブなSaltスレッドの数 |
salt_queue_thread_pool_task_total |
カウンタ |
キューごとに送信されたタスクの数 |
salt_queue_thread_pool_completed_task_total |
カウンタ |
キューごとに完了したタスクの数 |
すべてのsalt_queue値には、キュー番号を値として持つ「queue」という名前のラベルがあります。
| メトリック | タイプ | 説明 |
|---|---|---|
taskomatic_scheduler_threads |
カウンタ |
これまでに作成されたスケジューラスレッドの数 |
taskomatic_scheduler_threads_active |
ゲージ |
現在アクティブなスケジューラスレッドの数 |
taskomatic_scheduler_completed_task_count |
カウンタ |
これまでに完了したタスクの数 |
4.2. 管理対象システムの監視
Prometheus metrics exportersは、式を使用してSaltクライアントにインストールおよび設定できます。 パッケージはSUSE Multi-Linux Managerクライアントツールチャンネルから入手でき、SUSE Multi-Linux Manager Web UIで直接有効化および設定できます。
これらのexportersは管理対象システムにインストールできます。
-
Node exporter:
golang-github-prometheus-node_exporter. -
PostgreSQL exporter:
prometheus-postgres_exporter. -
Apache exporter:
golang-github-lusitaniae-apache_exporter.
|
SL Microでは、Node exporterとBlackbox exporterのみが利用できます。 |
exporterをインストールして設定したら、Prometheusを使用して監視対象システムからメトリックを収集できます。Web UIを使用してモニタリングサーバを設定している場合、メトリック収集は自動的に行われます。
SUSE Multi-Linux Manager Web UIで、監視対象のクライアントの詳細ページを開き、Formulaタブに移動します。
Check the
Enabledcheckbox on thePrometheus Exportersformula.保存をクリックします。
タブに移動します。
有効にするexportersを選択し、必要に応じて引数をカスタマイズします。 The
Addressfield accepts either a port number preceded by a colon (:9100), or a fully resolvable address (example:9100).Save Formula(Formulaの保存)をクリックします。
highstateを適用します。
|
以下のポートが有効になっており、ファイアウォールでブロックされないようにする必要があります。
|
|
モニタリング式は、対応するグループ内の個々のシステムに使用されているのと同じ設定を適用することによって、システムグループにも設定できます。 |
モニタリング式の詳細については、Monitoring Formulaを参照してください。
4.3. Grafanaパスワードの変更
Grafanaパスワードを変更するには、Grafanaのドキュメントに記載されているステップに従います。
In case you have lost the Grafana administrator password you can reset it as root with the following command:
grafana-cli --configOverrides cfg:default.paths.data=/var/lib/grafana --homepath /usr/share/grafana admin reset-admin-password <new_password>
5. ネットワーク境界
Prometheusはプルメカニズムを使用してメトリックをフェッチするため、サーバは監視対象クライアントとのTCP接続を確立できる必要があります。 デフォルトでは、Prometheusは次のポートを使用します。
-
Node exporter: 9100
-
PostgreSQL exporter: 9187
-
Apache exporter: 9117
さらに、Prometheusを実行するホストとは異なるホストでAlertmanagerを実行している場合は、ポート9093も開く必要があります。AlertmanagerはPrometheusソリューションの一部であり、Prometheusサーバインスタンスなどのクライアントアプリケーションによって送信されるアラートを処理します。Alertmanagerの詳細については、https://prometheus.io/docs/alerting/latest/alertmanager/を参照してください。
クラウドインスタンスにインストールされているクライアントの場合、モニタリングサーバにアクセスできるセキュリティグループに必要なポートを追加できます。
または、Prometheusインスタンスをexportersのローカルネットワークにデプロイし、フェデレーションを設定することもできます。 これにより、メインのモニタリングサーバはローカルのPrometheusインスタンスから時系列をスクレイピングできます。 この方法を使用する場合は、Prometheus APIポート(9090)を開くだけで済みます。
Prometheusフェデレーションの詳細については、https://prometheus.io/docs/prometheus/latest/federation/を参照してください。
ネットワーク境界から要求をプロキシすることもできます。 PushProxのようなツールは、プロキシとクライアントをネットワークバリアの両側に配備し、PrometheusがNATなどのネットワークトポロジ全体で動作できるようにします。
PushProxの詳細については、https://github.com/RobustPerception/PushProxを参照してください。
5.1. リバースプロキシのセットアップ
Prometheusはプルメカニズムを使用してメトリックをフェッチするため、サーバは監視対象クライアント上の各exporter へのTCP接続を確立できる必要があります。 ファイアウォール設定を簡素化するため、exportersにリバースプロキシを使用して、単一のポートですべてのメトリックを公開できます。
In the SUSE Multi-Linux Manager Web UI, open the details page of the system to be monitored, and navigate to the
Formulastab.Check the
Prometheus Exporterscheckbox to enable the exporters formula, and click Save.Navigate to the
Prometheus Exporterstab in the top menu.Check the
Enable reverse proxyoption, and enter a valid reverse proxy port number. For example,9999.
ファイアウォールでポート9999/tcpが開いていることを確認します。
必要に応じて他のexportersをカスタマイズします。
Save Formula(Formulaの保存)をクリックします。
highstateを適用し、正常に完了したことを確認します。
モニタリング式の詳細については、Monitoring Formulaを参照してください。
6. セキュリティ
PrometheusサーバとPrometheus node exporterは、TLS暗号化と認証でエンドポイントを保護するための組み込みメカニズムを提供します。 SUSE Multi-Linux Manager Web UIは、関連するすべてのコンポーネントの設定を簡素化します。 TLS証明書は、ユーザが提供して配備する必要があります。 SUSE Multi-Linux Managerでは、次のセキュリティモデルを有効にします。
-
Node exporter: TLS暗号化とクライアント証明書ベースの認証
-
Prometheus: TLS暗号化と基本認証
利用可能なすべてのオプションの設定の詳細については、Monitoring Formulaを参照してください。
6.1. TLS証明書の生成
デフォルトでは、SUSE Multi-Linux Managerはモニタリング設定を保護するための証明書を提供しません。 セキュリティを提供するために、自己署名された、またはサードパーティの認証局(CA)によって署名されたカスタム証明書を生成またはインポートできます。
このセクションでは、SUSE Multi-Linux Manager CAで自己署名したPrometheusおよびNode exporter minionsのクライアント/サーバ証明書を生成する方法について説明します。
SUSE Multi-Linux Managerコンテナホストのコマンドプロンプトで、rootとして次のコマンドを実行します。
証明書ファイルを生成するには、次のコマンドを実行します。
Ensure that the
set-cnameparameter is the fully qualified domain name (FQDN) of your Salt client. You can use theset-cnameparameter multiple times if you require multiple aliases:mgrctl exec -ti -- mgr-ssl-tool --gen-server --dir="/root/ssl-build" --set-country="COUNTRY" \ --set-state="STATE" --set-city="CITY" --set-org="ORGANIZATION" \ --set-org-unit="ORGANIZATION UNIT" --set-email="name@example.com" \ --set-hostname="minion.example.com" --set-cname="minion.example.com" --no-rpm結果:
Generating the web server's SSL private key: /root/ssl-build/minion/server.key Generating web server's SSL certificate request: /root/ssl-build/minion/server.csr Generating/signing web server's SSL certificate: server.crtCopy
server.crtandserver.keyfiles from the server container to the host:mgrctl cp server:/root/ssl-build/minion/server.key server.key mgrctl cp server:/root/ssl-build/minion/server.crt server.crtCopy
server.crtandserver.keyfiles from the host to the monitoring client:ssh minion.example.com 'mkdir /etc/ssl/mlm-server-certs' scp /root/server.* minion.example.com:/etc/ssl/mlm-server-certs ssh minion.example.com 'chmod go+r /etc/ssl/mlm-server-certs/server.*; ls -la /etc/ssl/mlm-server-certs'Saltフォーミュラを設定するには、前のステップで指定されたディレクトリ名を入力します。
formular server
Server Certificate /etc/ssl/mlm-server-certs/server.crt Server Key /etc/ssl/mlm-server-certs/server.keyフォーミュラminion