9.5.3 性能監視機能
性能監視機能は,アドオンプログラムのPrometheus,Alertmanager,Exporterで構成され,次に示す2つの機能を提供します。
-
Exporter経由でパフォーマンスデータを取得し,統合マネージャーホストにパフォーマンスデータを送信する機能
-
取得したパフォーマンスデータの閾値監視を行い,条件に該当した場合はJP1/IM - Managerにアラートを通知する機能
統合マネージャーホストに送信したパフォーマンスデータやアラートは,統合オペレーション・ビューアーで参照できます。
(1) 通信機能
(a) 通信プロトコルと認証方法
統合エージェントが使用する通信プロトコルと認証方法を,次に示します。
接続元 |
接続先 |
プロトコル |
認証方式 |
---|---|---|---|
Prometheus server |
統合エージェント制御基盤 |
HTTP |
認証なし |
Alertmanager |
|||
Prometheus server |
Alertmanager |
HTTP |
認証なし |
Exporter |
|||
Blackbox exporter |
監視対象 |
HTTP/HTTPS |
Basic認証 |
Bearer認証 |
|||
認証なし |
|||
HTTPS |
サーバ認証 |
||
クライアント認証あり |
|||
クライアント認証なし |
|||
ICMP※ |
認証なし |
||
Yet another cloudwatch exporter |
Amazon CloudWatch |
HTTPS |
AWS IAM認証 |
- 注※
-
ICMPv6は使用できません。
(b) ネットワーク構成
統合エージェントは,IPv4環境だけのネットワーク構成,またはIPv4環境とIPv6環境が混在するネットワーク構成で使用できます。IPv4環境とIPv6環境が混在するネットワーク構成では,IPv4通信だけに対応しています。
統合エージェントは,次に示すプロキシサーバなしの構成で使用できます。
接続元 |
接続先 |
接続の種類 |
---|---|---|
Prometheus server |
統合エージェント制御基盤 |
プロキシサーバなし |
Alertmanager |
||
Prometheus server |
Alertmanager |
|
Exporter |
||
Blackbox exporter |
監視対象(ICMP監視) |
|
監視対象(HTTP監視) |
プロキシサーバなし |
|
認証なしのプロキシサーバ経由 |
||
認証ありのプロキシサーバ経由 |
||
Yet another cloudwatch exporter |
Amazon CloudWatch |
プロキシサーバなし |
認証なしのプロキシサーバ経由 |
||
認証ありのプロキシサーバ経由 |
統合エージェントは,次に示すデータを送信します。
接続元 |
接続先 |
送信データ |
---|---|---|
Prometheus server |
統合エージェント制御基盤 |
Protobuf形式のパフォーマンスデータ |
Alertmanager |
JSON形式のアラート情報※1 |
|
Prometheus server |
Exporter |
Prometheusのテキスト形式のパフォーマンスデータ※2 |
Blackbox exporter |
監視対象 |
各プロトコルのレスポンス |
Yet another cloudwatch exporter |
Amazon CloudWatch |
CloudWatchのデータ |
- 注※1
-
詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.6.5 JP1イベント変換」の,リクエストのメッセージボディーに関する説明を参照してください。
- 注※2
-
詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.23 JP1/IM - Agentが使用するExporterのスクレイプ用のAPI」の,Prometheusのテキストフォーマットに関する説明を参照してください。
(2) パフォーマンスデータの収集機能
Prometheus serverが,監視対象からパフォーマンスデータを収集する機能です。次の2つの機能があります。
-
スクレイプ機能(Prometheus server)
-
監視対象の稼働情報の取得機能(Exporter)
(a) スクレイプ機能
Prometheus serverが,Exporterを経由して,監視対象のパフォーマンスデータを取得する機能です。
Prometheus serverが,Exporterの特定のURLにアクセスすると,Exporterが監視対象のパフォーマンスデータを取得し,Prometheus serverに返却します。この一連の処理を「スクレイプ」と呼びます。
スクレイプは,同じ目的の複数のスクレイプをまとめたスクレイプジョブの単位で実行されます。スクレイプの定義は,スクレイプジョブの単位で行います。JP1/IM - Agentでは,Exporterの種類に応じて,次に示すスクレイプジョブ名のスクレイプ定義が,デフォルトで設定されています。
スクレイプジョブ名 |
スクレイプ定義 |
---|---|
prometheus |
Prometheus server用のスクレイプ定義 |
jpc_node |
Node exporter用のスクレイプ定義 |
jpc_windows |
Windows exporter用のスクレイプ定義 |
jpc_blackbox_http |
Blackbox exporeterのHTTP/HTTPS監視用のスクレイプ定義 |
jpc_blackbox_icmp |
Blackbox exporeterのICMP監視用のスクレイプ定義 |
jpc_cloudewatch |
Yet another cloudwatch exporter用のスクレイプ定義 |
ユーザー独自のExporterをスクレイプの対象とする場合は,対象のExporterごとに,スクレイプ定義を追加する必要があります。
Prometheus serverが,スクレイプを実行してExporterから取得するメトリックは,Exporterの種類に応じて異なります。詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)の各Exporterのメトリック定義ファイルの説明を参照してください。
また,Prometheus serverは,スクレイプの実行時に,Exporterから取得するメトリック以外に,次に示すメトリックを生成します。
メトリック名 |
説明 |
---|---|
up |
スクレイプに成功したときは「1」,失敗したときは「0」を示すメトリックです。Exporterの稼働監視に利用できます。 スクレイプに失敗したときの要因は,ホスト停止,Exporter停止,Exporterが200以外を返却,または通信エラーが考えられます。 |
scrape_duration_seconds |
スクレイプにかかった時間を示すメトリックです。通常の運用では使用しません。 スクレイプが想定した時間内に終わらなかった場合の調査などで使用します。 |
scrape_samples_post_metric_relabeling |
メトリックのリラベル後に残ったサンプル数を示すメトリックです。通常の運用では使用しません。 環境構築時のデータ数の確認で使用します。 |
scrape_samples_scraped |
Exporterがスクレイプで返却したサンプル数を示すメトリックです。通常の運用では使用しません。 環境構築時のデータ数の確認で使用します。 |
scrape_series_added |
新しく生成した系列のおおよその数を示すメトリックです。通常の運用では使用しません。 |
スクレイプを実行する方法については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.23 JP1/IM - Agentが使用するExporterのスクレイプ用のAPI」の説明を参照してください。スクレイプの対象とするExporterは,ここに記載されている方法で実行できるようにする必要があります。
スクレイプの定義方法を,次に示します。
-
スクレイプ定義は,スクレイプジョブの単位で行います。
-
スクレイプ定義は,Prometheus設定ファイル(jpc_prometheus_server.yml)に記述します。
-
スクレイプ定義を編集する場合は,統合オペレーション・ビューアーからPrometheus設定ファイルをダウンロードし,編集したあとでアップロードします。
JP1/IM - Agentがサポートするスクレイプ定義に関する設定項目を,次に示します。
設定項目 |
説明 |
---|---|
スクレイプジョブ名 (必須) |
Prometheusがスクレイプするスクレイプジョブの名称を設定します。スクレイプジョブ名は複数指定できます。 指定したスクレイプジョブ名は,メトリックのラベルに,job="スクレイプジョブ名"として設定されます。 |
スクレイプ先 (必須) |
スクレイプ先となるExporterの特定のURLを設定します。スクレイプ先として,JP1/IM - Agentが同居するホストのExporterだけを指定できます。 URL内に記述するスクレイプ先のサーバは,ホスト名で指定します。"localhost"は使用できません。 すべてのスクレイプジョブ内に指定したスクレイプ先の合計数は100が上限です。 |
スクレイプ時のパラメーター (任意) |
スクレイプ時にExporterに渡すパラメーターを設定できます。 Exporterの種類に応じて,設定できる内容が異なります。 |
スクレイプ間隔 (任意) |
スクレイプの間隔を設定できます。 すべてのスクレイプジョブに共通のスクレイプ間隔と,スクレイプジョブごとのスクレイプ間隔を設定できます。両方設定されている場合は,スクレイプジョブごとのスクレイプ間隔が優先されます。 指定できる単位は,年,週,日,時,分,秒,またはミリ秒です。 |
スクレイプのタイムアウト時間 (任意) |
スクレイプに時間がかかった場合のタイムアウト時間を設定できます。 すべてのスクレイプジョブに共通のタイムアウト時間と,スクレイプジョブごとのタイムアウト時間を設定できます。両方設定されている場合は,スクレイプジョブごとのスクレイプ間隔が優先されます。 |
リラベル設定 (任意) |
不要なメトリックを削除やラベルのカスタマイズができます。 この機能を使用し,サポートしない不要なメトリックを破棄するようにデフォルトで設定しておくことで,JP1/IM - Managerに送信するデータ量を削減できます。 |
Prometheus serverのスクレイプ対象とするExporterによるスクレイプの結果は,PrometheusのText-based formatのデータ形式で返却されます。PrometheusのText-based formatを次に示します。
- Text-based formatの基本情報
-
項目
説明
開始時期
2014年4月
サポートバージョン
バージョン0.4.0以降のPrometheus
伝送形式
HTTP
文字コード
UTF-8
改行コードは\n
Content-Type
text/plain; version=0.0.4
バージョンの値がない場合は,最新のテキストフォーマットのバージョンとして扱われます。
Content-Encoding
gzip
利点
-
ヒューマンリーダブル
-
組み立てが容易で,特にミニマムなケースに適している(ネストの必要がない)。
-
一行ごとに読める(ヒントやdocstringを除く)。
制約
-
冗長
-
型とdocstringはシンタックスの一部ではないため,メトリックコントラクトの検証はほとんど行われない。
-
構文解析のコスト
サポートしているメトリクス
-
Counter
-
Gauge
-
Histogram
-
Summary
-
Untyped
-
- Text-based formatの詳細
-
PrometheusのText-based formatは行指向です。
行間は改行文字で区切ります。改行コードは\nです。\r\nは不正とみなされます。
最終行は必ず改行文字にしてください。
また,空行は無視されます。
- 行の形式
-
1行の中で,トークンは任意の数の空白やタブで区切ることができます。ただし,前のトークンと結合する場合は,少なくとも1つの空白で区切られる必要があります。
また,先頭および末尾のホワイトスペースは無視されます。
- コメント,ヘルプテキスト,および情報
-
最初のホワイトスペース以外の文字として#がある行はコメントです。
この行は,#の後の最初のトークンがHELPまたはTYPEでない限り,無視されます。
これらの行は次のように扱われます。
トークンがHELPの場合,少なくとももう1つのトークン(メトリック名)が期待されます。残りのすべてのトークンは,そのメトリック名のdocstringとみなされます。
HELP行には,メトリック名の後ろに任意のUTF-8文字列を含めることができます。ただし,バックスラッシュは¥,改行文字は\nとしてエスケープする必要があります。任意のメトリック名に対して,HELP行は1つだけ存在できます。
トークンがTYPEの場合,2つ以上のトークンが期待されます。1つ目はメトリック名です。2つ目はcounter,gauge,histogram,summary,またはuntypedのいずれかで,メトリックの型を定義します。与えられたメトリック名に対して,TYPE行は1つだけ存在できます。メトリック名のTYPE行は,最初のサンプルの前にメトリック名が表示されなければなりません。
メトリック名に対するTYPE行が存在しない場合,タイプはuntypedに設定されます。
次の構文(EBNF)を使用してサンプルを記述します(1行に1つ)。
metric_name [ "{" label_name "=" `"` label_value `"` { "," label_name "=" `"` label_value `"` } [ "," ] "}" ] value [ timestamp ]
- サンプルの構文
-
-
metric_nameとlabel_nameには,通常のPrometheus式言語の制限があります。
-
label_valueは,任意のUTF-8文字列ですが,バックスラッシュ(\),ダブルクォート("),ラインフィードは,それぞれ\\,\",\nとしてエスケープする必要があります。
-
valueは,GoのParseFloat()関数で必要とされる浮動小数点数です。標準的な数値に加えて,NaN,+Inf,-Infも有効な値です。NaNは数値ではないことを表します。+Infは正の無限大です。-Infは,負の無限大です。
-
タイムスタンプはint64(エポックからのミリ秒,すなわち1970-01-01 00:00:00 UTC,うるう秒を除く)で,GoのParseInt()関数で必要に応じて表されます。
-
- グルーピングとソート
-
メトリックが付与された行はすべて,1つのグループとして提供される必要があり,オプションのHELPとTYPEの行が最初に来るようにする必要があります(順不同)。
それ以外にも,繰り返しの説明で再現性のあるソートを行うことを推奨しますが,必須ではありません。
各行には,メトリック名とラベルのユニークな組み合わせが必要です。ユニークな組み合わせではない場合,取り込みの動作は未定義です。
- ヒストグラムとサマリー
-
ヒストグラムやサマリータイプは,テキスト形式での表現が難しいため,次のような規則があります。
-
xというサマリーまたはヒストグラムのサンプルサムは,x_sumという別のサンプルとして表示されます。
-
xという名前のサマリーまたはヒストグラムのサンプル・カウントは,x_countという別のサンプルとして表示されます。
-
xという名前の要約の各分位点は,同じxという名前と{quantile="y"}というラベルを持つ別のサンプル行として表示されます。
-
xという名前のヒストグラムの各バケット数は,x_bucketという名前と{le="y"}というラベルを持つ別のサンプル行として表示されます(yはバケットの上限です)。
-
ヒストグラムには,{le="+Inf"}のバケットが必要です。その値は,x_countの値と同じである必要があります。
-
ヒストグラムのバケットとサマリーの分位値は,leまたはquantileラベルの場合,それぞれラベルの値の昇順で表示される必要があります。
-
- Text-based formatの例
-
コメント,HELPやTYPEの表現,ヒストグラム,サマリー,文字エスケープなどを含むPrometheus metric expositionの例を次に示します。
# HELP http_requests_total The total number of HTTP requests. # TYPE http_requests_total counter http_requests_total{method="post",code="200"} 1027 1395066363000 http_requests_total{method="post",code="400"} 3 1395066363000 # Escaping in label values: msdos_file_access_time_seconds{path="C:\\DIR\\FILE.TXT",error="Cannot find file:\n\"FILE.TXT\""} 1.458255915e9 # Minimalistic line: metric_without_timestamp_and_labels 12.47 # A weird metric from before the epoch: something_weird{problem="division by zero"} +Inf -3982045 # A histogram, which has a pretty complex representation in the text format: # HELP http_request_duration_seconds A histogram of the request duration. # TYPE http_request_duration_seconds histogram http_request_duration_seconds_bucket{le="0.05"} 24054 http_request_duration_seconds_bucket{le="0.1"} 33444 http_request_duration_seconds_bucket{le="0.2"} 100392 http_request_duration_seconds_bucket{le="0.5"} 129389 http_request_duration_seconds_bucket{le="1"} 133988 http_request_duration_seconds_bucket{le="+Inf"} 144320 http_request_duration_seconds_sum 53423 http_request_duration_seconds_count 144320 # Finally a summary, which has a complex representation, too: # HELP rpc_duration_seconds A summary of the RPC duration in seconds. # TYPE rpc_duration_seconds summary rpc_duration_seconds{quantile="0.01"} 3102 rpc_duration_seconds{quantile="0.05"} 3272 rpc_duration_seconds{quantile="0.5"} 4773 rpc_duration_seconds{quantile="0.9"} 9001 rpc_duration_seconds{quantile="0.99"} 76656 rpc_duration_seconds_sum 1.7560473e+07 rpc_duration_seconds_count 2693
(b) 監視対象の稼働情報の取得機能
監視対象から稼働情報(パフォーマンスデータ)を取得する機能です。稼働情報を収集する処理は,「Exporter」と呼ばれるプログラムが行います。
Prometheus serverからExporterに送られるスクレイプの要求に対して,Exporterは,監視対象から稼働情報を収集し,Prometheusに結果を返却します。
JP1/IM - Agentに同梱するExporterは,同居するJP1/IM - AgentのPrometheusからだけスクレイプします。ほかのホストやユーザーが独自に用意したPrometheusからはスクレイプしないでください。
JP1/IM - Agentに同梱する各Exporterの機能について説明します。
(c) Blackbox exporter
Blackbox exporterは,ネットワーク上の監視対象のインターネットサービスに対して,疑似的なリクエストを発信し,その応答から得られる稼働情報を取得するExporterです。対応する通信プロトコルは,HTTP,HTTPS,およびICMPです。
Blackbox exporterは,Prometheus serverからのスクレイプ要求を契機に,監視対象に対して,HTTP等のサービスリクエストを投げ,その応答時間とレスポンスを取得します。また,実行結果をメトリクス形式にまとめて,Prometheus serverに返却します。
■ 主な取得項目
Blackbox exporterの主な取得項目は,Blackbox exporterのメトリック定義ファイル(初期状態)で定義しています。詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Blackbox exporterのメトリック定義ファイル(metrics_blackbox_exporter.conf)」(2. 定義ファイル)を参照してください。
メトリック定義ファイルには,取得項目を追加できます。定義ファイル内で記述するPromQL文で指定できるメトリックを,次に示します。
メトリック名 |
Prober |
取得する内容 |
ラベル |
---|---|---|---|
probe_http_duration_seconds |
http |
httpリクエストのフェーズごとにかかった秒数
|
instance: インスタンス識別文字列 job: ジョブ名 phase:フェーズ※
|
probe_http_content_length |
http |
HTTPコンテンツ応答の長さ |
instance: インスタンス識別文字列 job: ジョブ名 |
probe_http_uncompressed_body_length |
http |
非圧縮応答本文の長さ |
instance: インスタンス識別文字列 job: ジョブ名 |
probe_http_redirects |
http |
リダイレクトの回数 |
instance: インスタンス識別文字列 job: ジョブ名 |
probe_http_ssl |
http |
最終リダイレクトにSSLが使用されたかどうか
|
instance: インスタンス識別文字列 job: ジョブ名 |
probe_http_status_code |
http |
HTTPレスポンスのステータスコードの値
|
instance: インスタンス識別文字列 job: ジョブ名 |
probe_ssl_earliest_cert_expiry |
http |
最も早く有効期限が切れるSSL証明書のUNIX時間 |
instance: インスタンス識別文字列 job: ジョブ名 |
probe_ssl_last_chain_expiry_timestamp_seconds |
http |
SSLチェーンの最後の証明書の有効期限のタイムスタンプ
|
instance: インスタンス識別文字列 job: ジョブ名 |
probe_ssl_last_chain_info |
http |
SSLリーフ証明書情報
|
instance: インスタンス識別文字列 job: ジョブ名 fingerprint_sha256:証明書のsha256指紋 |
probe_tls_version_info |
http |
使用されるTLSバージョン
|
instance: インスタンス識別文字列 job: ジョブ名 version:TLSバージョン |
probe_http_version |
http |
プローブ応答のHTTPのバージョン |
instance: インスタンス識別文字列 job: ジョブ名 |
probe_failed_due_to_regex |
http |
応答本文やレスポンスヘッダーに対する正規表現チェックによりプローブが失敗したかどうか
|
instance: インスタンス識別文字列 job: ジョブ名 |
probe_http_last_modified_timestamp_seconds |
http |
HTTP応答ヘッダーのLast-Modifiedを示すUNIX時間 |
instance: インスタンス識別文字列 job: ジョブ名 |
probe_icmp_duration_seconds |
icmp |
ICMPリクエストのフェーズごとにかかった秒数 |
instance: インスタンス識別文字列 job: ジョブ名 phase: フェーズ※
|
probe_icmp_reply_hop_limit |
icmp |
ホップリミット(IPv4の場合はTTL)の値
|
instance: インスタンス識別文字列 job: ジョブ名 |
probe_success |
− |
プローブが成功したかどうか
|
instance: インスタンス識別文字列 job: ジョブ名 |
probe_duration_seconds |
− |
プローブが完了するまでにかかった秒数 |
instance: インスタンス識別文字列 job: ジョブ名 |
■ 監視対象とのIP通信
IPv4通信だけに対応しています。
■ 監視対象との暗号化通信
HTTP監視では,TLSによる暗号化通信を行えます。この場合,Blackbox exporterは,監視対象(TLSサーバ)に対してTLSクライアントとして動作します。
TLSによる暗号化通信を使用する場合は,Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)の項目「tls_config」で指定します。また,次に示す証明書ファイルおよびキーファイルを,準備する必要があります。
ファイル |
形式 |
---|---|
CA証明書ファイル |
pkcs7形式のX509公開鍵証明書をPEM形式でエンコードしたファイル |
クライアント証明書ファイル |
|
クライアント証明書キーファイル |
pkcs1またはpkcs8形式の秘密鍵をPEM形式でエンコードしたファイル※
|
使用できるTLSバージョンと暗号スイートのサポート範囲を,次に示します。
項目 |
サポート範囲 |
---|---|
TLSバージョン |
1.0〜1.3※
|
暗号スイート |
|
■ 稼働情報の収集に関するタイムアウト
(通常状態で)応答が遅いネットワーク環境では,タイムアウト時間を調整することにより,稼働情報を収集できます。
Prometheus serverでは,Prometheus設定ファイル(jpc_prometheus_server.yml)の項目「scrape_timeout」で,スクレイプ要求のタイムアウト時間を指定できます。
詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Prometheus設定ファイル(jpc_prometheus_server.yml)」(2. 定義ファイル)の,項目「scrape_timeout」の説明を参照してください。
また,Blackbox exporterから監視対象へ接続するときのタイムアウト時間は,上記の「scrape_timeout」で指定した値の0.5秒前となります。
■ 証明書の有効期限
HTTPS監視による稼働情報の収集を行う場合,Exporterは監視対象から証明書リスト(サーバ証明書とサーバ証明書を証明する証明書リスト)を受け取ります。
Blackbox exporterでは,最も期限が近い証明書の有効期限(UNIX時間)を,probe_ssl_earliest_cert_expiryメトリクスとして収集できます。
また,「probe_ssl_earliest_cert_expiryメトリクスの値」−「PromQLのtime()関数の値」の計算値で,期限までの残りの秒数を算出できるため,「9.5.3(4)パフォーマンスデータの監視・通知機能」の機能を使用して,期限が近い証明書を監視できます。
■ HTTP監視時のHTTPリクエストヘッダーのUser-Agentの値
HTTP監視時のHTTPリクエストヘッダーに含まれるUser-Agentのデフォルト値は,「"Go-http-client/1.1"」です。Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)の項目「headers」の設定で,User-Agentの値を変更できます。
User-Agentの値を「"My-Http-Client"」に変更する場合の例を,次に示します。
modules: http: prober: http http: headers: User-Agent: "My-Http-Client" |
詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)」(2. 定義ファイル)の,項目「headers」の説明を参照してください。
■ HTTP1.1名前ベースバーチャルホストの対応について
Blackbox exporterは,HTTP1.1名前ベースバーチャルホストおよびTLSのServer Name Indication(SNI)に対応しています。1つのHTTP/HTTPSサーバを複数のHTTP/HTTPSサーバに見せかけた仮想ホストに対する監視ができます。
■ TLSサーバ認証とクライアント認証について
Blackbox exporterのHTTPS監視では,Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)の項目「ca_file」に記述したCA証明書と,サーバとのHTTPS通信開始時(TLSハンドシェイク時)にサーバが送信したサーバ証明書を使用して,サーバ認証を行います。
送信された証明書が正しくない場合(サーバ名が正しくない,有効期限が切れている,自己証明書を使用している など),HTTPS通信を開始できず,監視はエラーになります。
また,HTTPS通信開始時(TLSハンドシェイク時)に,監視対象サーバから証明書の送信要求があると,Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)の項目「cert_file」に記述したクライアント証明書を監視対象サーバに送信します。
送信された証明書を,サーバが検証して不正と認識し,TLSプロトコルを通じて,Blackbox exporterにエラーを返却した場合(または,通信の切断などで通信を継続できない場合),監視はエラーになります。
監視対象サーバでの,クライアント証明書に関する検証内容および不正時の動作については,監視対象サーバ(または,ロードバランサなどの中継機器)の仕様を確認してください。
なお,サーバ認証時の証明書に関する不正の検知については,Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)の項目「insecure_skip_verify」に「true」を指定すると,エラーにならずにHTTPS通信を開始できます。ただし,その場合,サーバでのクライアント認証に関する検証の動作は無効となります。
詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Blackbox exporter設定ファイル(jpc_blackbox_exporter.yml)」(2. 定義ファイル)の,項目「insecure_skip_verify」の説明を参照してください。
■ Cookie情報について
Blackbox exporterでは,監視対象から送信されてきたCookie情報を,次のHTTP通信のリクエストで使用しません。
■ HTTP通信のレスポンスボディーに含まれるコンテンツから参照する外部リソースについて
Blackbox exporterでは,HTTP通信のレスポンスボディーに含まれるコンテンツから参照する外部リソース(サブフレーム,画像など)は,監視範囲に含めません。
■ HTTP通信のレスポンスボディーに含まれるコンテンツの監視について
Blackbox exporterでは,コンテンツのパース(解析)を行わないため,HTTP通信のレスポンスボディーに含まれるコンテンツ内の構文(HTML,javascriptなど)による実行結果や実行時間は,監視結果に反映されません。
■ HTTP監視の監視先がBasic認証ありでリダイレクトする場合の注意事項
Blackbox exporterのHTTP監視の監視先がBasic認証ありでリダイレクトする場合,Blackbox exporterは,リダイレクト元とリダイレクト先に同じBasic認証のユーザー名とパスワードを送付します。このため,リダイレクト元とリダイレクト先の両方でBasic認証を行う場合,リダイレクト元とリダイレクト先で,同じユーザー名とパスワードを設定しておく必要があります。
(d) Node exporter
Node exporterは,監視対象のLinuxホストに組み込んで,Linuxホストの稼働情報を取得するExporterです。
Node exporterは,Prometheus serverと同じホストにインストールされ,Prometheus serverからのスクレイプ要求を契機に,同ホストのLinux OSから稼働情報を収集して,Prometheus serverに返却します。
ホストの外からの監視(URLによる外形監視やCloudWatch)では収集できない,メモリーやディスクに関する稼働情報を,ホスト内部から収集できます。
■ 主な取得項目
Node exporterの主な取得項目は,Node exporterのメトリック定義ファイル(初期状態)で定義しています。詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Node exporterのメトリック定義ファイル(metrics_node_exporter.conf)」(2. 定義ファイル)を参照してください。
メトリック定義ファイルには,取得項目を追加できます。定義ファイル内で記述するPromQL文で指定できるメトリックを,次に示します。なお,表内の「コレクタ」の詳細については,表下の「コレクタ」の説明を参照してください。
メトリック名 |
コレクタ |
取得する内容 |
ラベル |
---|---|---|---|
node_boot_time_seconds |
stat |
最後の起動時刻
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_context_switches_total |
stat |
コンテキストスイッチが行われた回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
node_cpu_seconds_total |
cpu |
各モードで費やされたCPUの秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 cpu: cpuid mode: モード※
|
node_disk_io_now |
diskstats |
現在進行中のディスクのI/O数 |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_io_time_seconds_total |
diskstats |
ディスクのI/Oに費やされた秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_read_bytes_total |
diskstats |
ディスクから正常に読み取られたバイト数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_read_time_seconds_total |
diskstats |
ディスクからの読み込みにかかった秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_reads_completed_total |
diskstats |
正常に完了したディスクからの読み取りの回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_write_time_seconds_total |
diskstats |
ディスクへの書き込みにかかった秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_writes_completed_total |
diskstats |
正常に完了したディスクへの書き込みの回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_disk_written_bytes_total |
diskstats |
ディスクへ正常に書き込んだバイト数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:デバイス名 |
node_filesystem_avail_bytes |
filesystem |
root以外のユーザーが使用可能なファイルシステムのバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 fstype:ファイルシステムタイプ mountpoint:マウントポイント |
node_filesystem_files |
filesystem |
ファイルシステムのファイルノード数 |
instance: インスタンス識別文字列 job: ジョブ名 fstype:ファイルシステムタイプ mountpoint:マウントポイント |
node_filesystem_files_free |
filesystem |
ファイルシステムの空きファイルノード数 |
instance: インスタンス識別文字列 job: ジョブ名 fstype:ファイルシステムタイプ mountpoint:マウントポイント |
node_filesystem_free_bytes |
filesystem |
ファイルシステムの空き領域のバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 fstype:ファイルシステムタイプ mountpoint:マウントポイント |
node_filesystem_size_bytes |
filesystem |
ファイルシステムの容量のバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 fstype:ファイルシステムタイプ mountpoint:マウントポイント |
node_intr_total |
stat |
処理された割り込みの回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
node_load1 |
loadavg |
実行キューにあるジョブ数の1分間の平均値 |
instance: インスタンス識別文字列 job: ジョブ名 |
node_load15 |
loadavg |
実行キューにあるジョブ数の15分間の平均値 |
instance: インスタンス識別文字列 job: ジョブ名 |
node_load5 |
loadavg |
実行キューにあるジョブ数の5分間の平均値 |
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_Active_file_bytes |
meminfo |
最近使用されたファイルキャッシュメモリーのバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_Buffers_bytes |
meminfo |
ファイルバッファーのバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_Cached_bytes |
meminfo |
ファイル読み込みキャッシュメモリーのバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_Inactive_file_bytes |
meminfo |
最近使用されていないファイルキャッシュメモリーのバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_MemAvailable_bytes |
meminfo |
スワップせずに新しいアプリケーションを起動するために使用できるメモリーのバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_MemFree_bytes |
meminfo |
メモリーの空き領域のバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_MemTotal_bytes |
meminfo |
メモリーの総容量のバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_SReclaimable_bytes |
meminfo |
回収可能なSlabキャッシュのバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_SwapFree_bytes |
meminfo |
スワップメモリーの空き領域のバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_memory_SwapTotal_bytes |
meminfo |
スワップメモリーの総容量のバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_netstat_Icmp6_InMsgs |
netstat |
受信したICMPv6メッセージ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Icmp_InMsgs |
netstat |
受信したICMPv4メッセージ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Icmp6_OutMsgs |
netstat |
送信したICMPv6メッセージ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Icmp_OutMsgs |
netstat |
送信したICMPv4メッセージ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Tcp_InSegs |
netstat |
受信したTCPパケット数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Tcp_OutSegs |
netstat |
送信したTCPパケット数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Udp_InDatagrams |
netstat |
受信したUDPパケット数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_netstat_Udp_OutDatagrams |
netstat |
送信したUDPパケット数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_flags |
netclass |
インターフェースの状態を示す数値
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_iface_link |
netclass |
インターフェースの通し番号
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_mtu_bytes |
netclass |
インターフェースのMTU値
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_receive_bytes_total |
netdev |
ネットワークデバイスの受信バイト数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_receive_errs_total |
netdev |
ネットワークデバイスの受信エラー数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_receive_packets_total |
netdev |
ネットワークデバイスの受信パケット数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_transmit_bytes_total |
netdev |
ネットワークデバイスの送信バイト数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_transmit_colls_total |
netdev |
ネットワークデバイスの送信コリジョン数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_transmit_errs_total |
netdev |
ネットワークデバイスの送信エラー数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_network_transmit_packets_total |
netdev |
ネットワークデバイスの送信パケット数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
node_time_seconds |
time |
エポック(1970)以降のシステム時間の秒数 |
instance: インスタンス識別文字列 job: ジョブ名 |
node_uname_info |
uname |
unameシステムコールで取得したシステム情報 |
instance: インスタンス識別文字列 job: ジョブ名 domainname: NISやYPのドメイン名 machine: ハードウェア識別子 nodename:実装時に定義された何らかのネットワークにおけるマシン名 release: オペレーションシステムのリリース番号 (例:"2.6.28") sysname:OSの名前(例:"Linux") version: オペレーティングシステムのバージョン |
node_vmstat_pswpin |
vmstat |
ページスワップインの回数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 |
node_vmstat_pswpout |
vmstat |
ページスワップアウトの回数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 |
■ コレクタ
Node exporterには,CPU,メモリーなどの監視対象のリソースごとに,「コレクタ」と呼ばれる収集処理が内蔵されています。
上記の表に示すメトリックを取得項目として追加する場合は,使用するメトリックに対応するコレクタを有効にする必要があります。また,収集しないメトリックのコレクタを無効にして,不要な収集を抑止することもできます。
コレクタごとの有効・無効化は,Node exporterのコマンドラインのオプションで指定できます。有効化するコレクタを「--collector.コレクタ名」のオプション,無効化するコレクタを「--no-collector.コレクタ名」のオプションで指定します。
Node exporterのコマンドラインのオプションについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「ユニット定義ファイル(jpc_プログラム名.service)」(2. 定義ファイル)の,「node_exporterコマンドのオプション」の説明を参照してください。
(e) Windows exporter
Windows exporterは,監視対象のWindowsホストに組み込んで,Windowsホストの稼働情報を取得するExporterです。
Windows exporterは,Prometheus serverと同じホストにインストールされ,Prometheus serverからのスクレイプ要求を契機に,同ホストのWindows OSから稼働情報を収集して,Prometheus serverに返却します。
ホストの外からの監視(URLによる外形監視やCloudWatch)では収集できない,メモリーやディスクに関する稼働情報を,ホスト内部から収集できます。
■ 主な取得項目
Windows exporterの主な取得項目は,Windows exporterのメトリック定義ファイル(初期状態)で定義しています。詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Windows exporterのメトリック定義ファイル(metrics_windows_exporter.conf)」(2. 定義ファイル)を参照してください。
メトリック定義ファイルには,取得項目を追加できます。定義ファイル内で記述するPromQL文で指定できるメトリックを,次に示します。なお,表内の「コレクタ」の詳細については,表下の「コレクタ」の説明を参照してください。
メトリック名 |
コレクタ |
取得する内容 |
ラベル |
---|---|---|---|
windows_cache_copy_read_hits_total |
cache |
キャッシュにヒットしたコピー読み取り要求の回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_cache_copy_reads_total |
cache |
ファイルシステムキャッシュのページから読み込んだ回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_cpu_time_total |
cpu |
モードごとに費やしたプロセッサ時間の秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 core: coreid mode: モード※
|
windows_cs_physical_memory_bytes |
cs |
物理メモリ容量のバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_logical_disk_idle_seconds_total |
logical_disk |
ディスクがアイドル状態だった秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_free_bytes |
logical_disk |
ディスクの未使用領域のバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_read_bytes_total |
logical_disk |
読み取り操作中にディスクから転送されたバイト数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_read_seconds_total |
logical_disk |
読み取り操作のためにディスクがビジーであった秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_reads_total |
logical_disk |
ディスクへの読み取り操作の回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_requests_queued |
logical_disk |
ディスクのキューに存在するリクエスト数 |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_size_bytes |
logical_disk |
ディスク容量のバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_write_bytes_total |
logical_disk |
書き込み操作中にディスクに転送されたバイト数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_write_seconds_total |
logical_disk |
書き込み操作のためにディスクがビジーであった秒数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_logical_disk_writes_total |
logical_disk |
ディスクへの書き込み操作の回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 volume: ボリューム名 |
windows_memory_available_bytes |
memory |
物理メモリーの未使用領域のバイト数
|
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_cache_bytes |
memory |
ファイルシステムのキャッシュに使用されている物理メモリーのバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_cache_faults_total |
memory |
ファイルシステムキャッシュでページフォールトが発生した回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_page_faults_total |
memory |
ページフォールトが発生した回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_pool_nonpaged_allocs_total |
memory |
ページアウト不可能な物理メモリー領域を割り当てた回数 |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_pool_paged_allocs_total |
memory |
ページアウト可能な物理メモリー領域を割り当てた回数 |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_swap_page_operations_total |
memory |
ハードページフォールトを解決するためにディスクから読み取られた,またはディスクへ書き込まれたページ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_swap_pages_read_total |
memory |
ハードページフォールトを解決するためにディスクから読み取られたページ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_swap_pages_written_total |
memory |
ハードページフォールトを解決するためにディスクへ書き込まれたページ数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_system_cache_resident_bytes |
memory |
物理メモリー内のアクティブなシステムファイルキャッシュのバイト数 |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_memory_transition_faults_total |
memory |
ページを共有しているほかのプロセスによって使用されていたページ,修正ページリストもしくはスタンバイリストにあったページ,またはディスクに書き込まれていたページを回復することによって解決したページフォールトの回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
windows_net_bytes_received_total |
net |
インターフェースによって受信されたバイト数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_net_bytes_sent_total |
net |
インターフェースから送信されたバイト数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_net_bytes_total |
net |
インターフェースによって受信および送信されたバイト数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_net_packets_sent_total |
net |
インターフェースによって送信されたパケット数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_net_packets_received_total |
net |
インターフェースによって受信されたパケット数(累積値)
|
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_system_context_switches_total |
system |
コンテキストスイッチの回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_system_processor_queue_length |
system |
プロセッサキュー内のスレッド数 |
instance: インスタンス識別文字列 job: ジョブ名 device:ネットワークデバイス名 |
windows_system_system_calls_total |
system |
プロセスからOSのサービスルーチンを呼び出した回数(累積値) |
instance: インスタンス識別文字列 job: ジョブ名 |
■ コレクタ
Windows exporterには,CPU,メモリーなどの監視対象のリソースごとに,「コレクタ」と呼ばれる収集処理が内蔵されています。
上記の表に示すメトリックを取得項目として追加する場合は,使用するメトリックに対応するコレクタを有効にする必要があります。また,収集しないメトリックのコレクタを無効にして,不要な収集を抑止することもできます。
コレクタごとの有効・無効化は,Windows exporterのコマンドラインの「--collectors.enabled」オプション,または,Windows exporter設定ファイル(jpc_windows_exporter.yml)の項目「collectors.enabled」で指定できます。
Windows exporterのコマンドラインのオプションについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「サービス定義ファイル(jpc_プログラム名_service.xml)」(2. 定義ファイル)の,「windows_exporterコマンドのオプション」の説明を参照してください。
Windows exporter設定ファイルの項目「collectors.enabled」については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Windows exporter設定ファイル(jpc_windows_exporter.yml)」(2. 定義ファイル)の,項目「collectors」の説明を参照してください。
(f) Yet another cloudwatch exporter
Yet another cloudwatch exporterは,監視エージェントに含まれ,Amazon CloudWatchを使用して,クラウド上のAWSサービスの稼働情報を収集するExporterです。
Yet another cloudwatch exporterは,Prometheus serverと同じホストにインストールされ,Prometheus serverからのスクレイプ要求を契機に,AWSが提供するSDK(AWS SDK)※を介して取得したCloudWatchメトリックを収集して,Prometheus serverに返却します。
- 注※
-
Amazon Web Services(AWS)が提供するSDKです。Yet another cloudwatch exporterは,Go言語版のAWS SDK for Go (V1)を使用しています。CloudWatch監視では,Amazon CloudWatchがAWS SDK for Go (V1)をサポートしている必要があります。
Node exporterやWindows exporterを組み込むことができないサービスを,監視できます。
■ 主な取得項目
Yet another cloudwatch exporterの主な取得項目は,Yet another cloudwatch exporterのメトリック定義ファイル(初期状態)で定義しています。詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Yet another cloudwatch exporterのメトリック定義ファイル(metrics_ya_cloudwatch_exporter.conf)」(2. 定義ファイル)を参照してください。
■ 収集できるCloudWatchメトリック
「9.5.1(1)(k)Yet another cloudwatch exporterのIM管理ノードの作成」に記載しているJP1/IM - AgentのYet another cloudwatch exporterが監視対象としてサポートするAWSの名前空間名のメトリックを収集できます。
収集するメトリックは,Yet another cloudwatch exporter設定ファイル(jpc_ya_cloudwatch_exporter.yml)に,AWSサービス名およびCloudWatchメトリック名を記述して指定します。
AWS/EC2サービスのCloudWatchメトリックの,CPUUtilizationとDiskReadBytesを収集する場合のYet another cloudwatch exporter設定ファイルの記述例を,次に示します。
discovery: exportedTagsOnMetrics: ec2: - jp1_pc_nodelabel jobs: - type: ec2 regions: - ap-northeast-1 period: 60 length: 300 delay: 60 nilToZero: true searchTags: - key: jp1_pc_nodelabel value: .* metrics: - name: CPUUtilization statistics: - Maximum - name: DiskReadBytes statistics: - Maximum |
Yet another cloudwatch exporter設定ファイルの記述内容については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Yet another cloudwatch exporter設定ファイル(jpc_ya_cloudwatch_exporter.yml)」(2. 定義ファイル)を参照してください。
また,Yet another cloudwatch exporter設定ファイルで設定したメトリックを使用して,Yet another cloudwatch exporterのメトリック定義ファイルに,新たなメトリックを追加することもできます。
定義ファイル内で記述するPromQL文で指定するメトリックおよびラベルは,次に示す名称規則に従ったものを使用します。
- ■Exporterのメトリックの名称規則
-
Yet another cloudwatch exporterは,CloudWatchのメトリック名称を,次に示すルールで自動変換したものを,Exporterのメトリック名として扱います。また,PromQL文で指定するメトリックは,Exporterのメトリック名を使用して記述します。
"aws_"※1+名前空間※2+"_"+CloudWatchメトリック※2+"_"+統計タイプ※2
- 注※1
-
名前空間が"aws_"で始まらない場合に付加されます。
- 注※2
-
Yet another cloudwatch exporter設定ファイル(jpc_ya_cloudwatch_exporter.yml)で設定した名称を示します。次に示すルールで変換されます。
-
キャメルケースの表記からスネークケースの表記に変換されます。
キャメルケースとは,「CamelCase」や「camelCase」のように単語の区切りを大文字にする記法のことです。
スネークケースとは,「snake_case」のように単語の区切りを"_"にする記法のことです。
-
次に示す記号は"_"に変換されます。
半角空白,半角コンマ,タブ,/,\,半角ピリオド,-,:,=,全角左二重引用符,@,<,>
-
"%"は"_percent"に変換されます。
-
- ■Exporterのラベルの名称規則
-
Yet another cloudwatch exporterは,CloudWatchのディメンション・タグ名称を,次に示すルールで自動変換したものを,Exporterのラベル名として扱います。また,PromQL文で指定するラベルは,Exporterのラベル名を使用して記述します。
-
ディメンションの場合
"dimension"+"_"+ディメンションの名称※
-
タグの場合
"tag"+"_"+タグの名称※
-
カスタムタグの場合
"custom_tag_"+"_"+カスタムタグの名称※
- 注※
-
Yet another cloudwatch exporter設定ファイル(jpc_ya_cloudwatch_exporter.yml)で設定した名称を示します。
-
■ AWSアカウントでのIAMユーザーのポリシーについて
AWS CloudWatchに接続するためは,次に示すアクセス許可のポリシーを作成して,IAMユーザーに割り当てる必要があります。
"tag:GetResources", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics"
JSON形式の情報の設定手順については,マニュアル「JP1/Integrated Management 3 - Manager 構築ガイド」の「2.19.2(7)(b) CloudWatchに接続するための設定を変更する(Linuxの場合)(オプション)」を参照してください。
■ 環境変数HTTPS_PROXY
Yet another cloudwatch exporterからプロキシ経由でCloudWatchに接続する場合に指定する環境変数です。環境変数HTTPS_PROXYに設定できるURLはhttpだけです。なお,サポートする認証方式はBasic認証だけです。
環境変数HTTPS_PROXYを設定することで,プロキシ経由でAWS CloudWatchに接続できます。設定例を次に示します。
HTTPS_PROXY=http://username:password@proxy.example.com:5678
■ JP1/IM - Agentでサポートしていない監視対象の対応方法について
JP1/IM - Agentで監視できない製品やメトリックがある場合は,ユーザー独自のExporterなどを使用してデータを取得する必要があります。
(3) パフォーマンスデータの一元管理機能
Prometheus serverが,監視対象から収集したパフォーマンスデータを,JP1/IM - Managerのインテリジェント統合管理データベースに格納する機能です。次の機能があります。
-
リモートライト機能
(a) リモートライト機能
Prometheus serverが,監視対象から収集したパフォーマンスデータを,外部の長期保存に適したデータベースに送信する機能です。JP1/IM - Agentでは,この機能を利用して,パフォーマンスデータをJP1/IM - Managerに送信します。
リモートライトの定義方法を,次に示します。
-
リモートライト定義は,Prometheus server設定ファイル(jpc_prometheus_server.yml)に記述します。
-
統合オペレーション・ビューアーからPrometheus server設定ファイルをダウンロードし,テキストエディターで編集を行って,リモートライト定義を変更したあと,アップロードします。
JP1/IM - Agentがサポートするリモートライト定義に関する設定項目を,次に示します。各設定項目の詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Prometheus設定ファイル(jpc_prometheus_server.yml)」(2. 定義ファイル)を参照してください。
設定項目 |
説明 |
---|---|
リモートライト先 (必須) |
統合エージェント制御基盤のエンドポイントURLを設定します。 |
リモートライトのタイムアウト時間 (任意) |
リモートライトに時間がかかった場合のタイムアウト時間を設定できます。 デフォルトの値で問題がある場合に変更します。 |
リラベル設定 (任意) |
不要なメトリックの削除やラベルのカスタマイズができます。 |
(4) パフォーマンスデータの監視・通知機能
Prometheus serverが,監視対象から収集したパフォーマンスデータを,閾値で監視し,JP1/IM - Managerに通知する機能です。次の3つの機能があります。
-
アラート評価機能
-
アラート通知機能
-
通知抑止機能
(a) アラート評価機能
監視対象から収集したパフォーマンスデータを,閾値で監視する機能です。
アラートの評価を行うためのアラートルールを定義して,パフォーマンスデータを閾値で監視し,アラートの通知を行います。
アラートの評価は,時系列データをそのまま閾値と比較,または,PromQL※を使用した計算式の結果と閾値を比較して行うことができます。
- 注※
-
PromQLの詳細については,「2.7.4(4) PromQLについて」を参照してください。
時系列データごと,または,PromQL式の計算結果によって生成されたデータごとに,評価に応じたアラートの状態が管理され,アラート状態に応じて,通知に関する動作が実行されます。
アラートの状態には,「pending」,「firing」,および「resolved」の3つの状態があります。最初にアラートルールの条件に該当すると,「pending」の状態となります。そのあと,アラートルール定義に設定した一定の待ち時間の間,アラートルールの条件に該当し続けた(回復しなかった)場合,「firing」の状態になります。アラートルールの条件に該当しなかった(回復した)場合,または時系列がなくなった場合は,「resolved」の状態になります。
アラートの状態と通知に関する動作の関係を,次に示します。
アラートの状態 |
説明 |
通知に関する動作 |
---|---|---|
pending |
アラートルールに該当してから,一定期間が経過していない状態です。 |
アラートの通知を行いません。 |
firing |
アラートルールに該当してから,一定期間が経過した状態です。 |
アラートの通知を行います。 |
resolved |
アラートルールに該当しなくなった状態です。 |
|
アラートルールの定義方法を,次に示します。
-
アラートルール定義は,アラート設定ファイル(jpc_alerting_rules.yml)に記述します(任意のYAML形式の定義ファイルでも記述できます)。
-
作成した定義ファイルは,使用する環境に反映させる前に,promtoolコマンドで書式チェックとアラートルールのテストを行います。
-
統合オペレーション・ビューアーからアラート設定ファイルをダウンロードし,テキストエディターで編集を行って,アラートルールの定義を変更したあと,アップロードします。
JP1/IM - Agentがサポートするアラートルール定義に関する設定項目を,次に示します。各設定項目の詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「アラート設定ファイル(jpc_alerting_rules.yml)」(2. 定義ファイル)を参照してください。なお,デフォルトのアラートルール定義はありません。
設定項目 |
説明 |
---|---|
アラート名(必須) |
アラート名を設定します。 |
条件式(必須) |
アラートの条件式(閾値)を設定します。 PromQLを使用して設定できます。 |
待ち時間(必須) |
「pending」の状態になってから「firing」の状態に変更するまでの待ち時間を設定します。 デフォルトの値で問題がある場合に変更します。 |
ラベル(必須) |
アラートや回復の通知に追加するラベルを設定します。 JP1/IM - Agentでは,特定のラベルを設定する必要があります。 |
注釈(必須) |
アラートの説明,URLリンクなどの追加情報を格納する場合に設定します。 JP1/IM - Agentでは,特定の注釈を設定する必要があります。 |
ラベルと注釈には,次に示す変数を使用できます。
変数※ |
説明 |
---|---|
$labels |
アラートインスタンスのラベルキーと値のペアを保持する変数です。ラベルキーには,次に示すラベルを指定できます。
|
$values |
アラートインスタンスの評価値を保持する変数です。 異常通知の際には,異常を検知した時点の値に展開されます。 回復通知の際には,回復直前の異常時の値に展開されます(回復時点の値ではないことに注意してください)。 |
$externalLabels |
Prometheus設定ファイル(jpc_prometheus_server.yml)の項目「global」の「external_labels」に設定したラベルと値を保持する変数です。 |
- 注※
-
変数は「{{」と「}}」で囲むことで値が展開されます。変数の使い方の例を,次に示します。
description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"
■ JP1イベントに変換するためのアラートルール定義
通知を行うアラートを,JP1/IM - Manager側でJP1イベントに変換するために,次に示す情報を,アラートルール定義に設定しておく必要があります。
設定項目 |
設定する値 |
用途 |
---|---|---|
name |
統合エージェント内で重複しない任意のアラートグループ定義名を設定します。 |
アラートグループ定義名 |
alert |
統合エージェント内で重複しない任意のアラート定義名を設定します。 |
アラート定義名 |
expr |
PromQL文を設定します。 メトリック定義ファイルに記載したPromQL文を設定することを推奨します。こうすることで,JP1イベントが発生したときに,統合オペレーション・ビューアーでトレンド情報を表示できます。 |
異常条件※
|
labels.jp1_pc_product_name |
"/HITACHI/JP1/JPCCS"を固定で設定します。 |
JP1イベントのプロダクト名に設定されます。 |
labels.jp1_pc_severity |
次のどれかを設定します。
|
JP1イベントの重大度※に設定されます。
|
labels.jp1_pc_eventid |
0〜1FFF,7FFF8000〜7FFFFFFFの範囲内の任意の値を設定します。 |
JP1イベントのイベントIDに設定されます。 |
labels.jp1_pc_metricname |
メトリック名を設定します。 Yet another cloudwatch exporterの場合,必ず指定してください。メトリック名(コンマ区切りで複数指定されている場合は先頭のメトリック名)に対応するAWS名前空間のIM管理ノードに対して,JP1イベントの関連付けを行います。 |
JP1イベントのメトリック名に設定されます。 Yet another cloudwatch exporterの場合,JP1イベントの関連付けにも使用されます。 |
annotations.jp1_pc_firing_description |
アラートの異常条件を満たしたとき,JP1イベントのメッセージに設定する値を指定します。 値の長さが1,024バイト以上の場合,先頭から1,023バイト目までの文字列を設定します。 指定を省略した場合,JP1イベントのメッセージの内容は「The alert is firing.(alert=アラート名)」となります。 また,変数を指定することで,ジョブ名や評価値を埋め込むこともできます。変数を使用する場合,変数を展開したメッセージの先頭から1,024バイトまでが有効となります。 |
JP1イベントのメッセージに設定されます。 |
annotations.jp1_pc_resolved_description |
アラートの異常条件を満たさなくなったとき,JP1イベントのメッセージに設定する値を指定します。 値の長さが1,024バイト以上の場合,先頭から1,023バイト目までの文字列を設定します。 指定を省略した場合,JP1イベントのメッセージの内容は「The alert is resolved.(alert=アラート名)」となります。 また,変数を指定することで,ジョブ名や評価値を埋め込むこともできます。変数を使用する場合,変数を展開したメッセージの先頭から1,024バイトまでが有効となります。 |
JP1イベントのメッセージに設定されます。 |
アラート定義の設定例については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)の各Exporterのメトリック定義ファイルについて説明している章で,各メトリックの設定内容(初期状態)を記載している表の「アラート定義例」の説明を参照してください。
対応するJP1イベントの属性については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「3.2.3 JP1/IM - Agent が発行するJP1 イベント一覧」を参照してください。
■ トレンド表示関連機能と組み合わせた運用方法について
メトリック定義ファイルに記述するPromQL文と,アラート評価機能で評価するPromQL文の定義内容を合わせておき,アラート設定ファイルのアラート定義のannotations.jp1_pc_firing_descriptionおよびannotations.jp1_pc_resolved_descriptionに,対応するトレンドデータのメトリック名を記述しておくことで,アラートのJP1イベントが発行されたときに,アラートで評価した性能値の過去の変化や現在値を,統合オペレーション・ビューアーの[トレンド]タブで,確認できます。
トレンド表示関連機能で定義するPromQL文については,「9.5.1(4)トレンドデータの返却」を参照してください。
例えば,Node exporterでCPU使用率を監視し,CPU使用率が80%を超えたときにアラートを通知する場合は,次の記述例に示すように,アラート設定ファイル(アラート定義)とメトリック定義ファイルを作成します。
-
アラート設定ファイル(アラート定義)の記述例
groups: - name: node_exporter rules: - alert: cpu_used_rate(Node exporter) expr: 80 < (avg by (instance,job,jp1_pc_nodelabel,jp1_pc_exporter) (rate(node_cpu_seconds_total{mode="system"}[2m])) + avg by (instance,job,jp1_pc_nodelabel,jp1_pc_exporter) (rate(node_cpu_seconds_total{mode="user"}[2m]))) * 100 for: 3m labels: jp1_pc_product_name: "/HITACHI/JP1/JPCCS" jp1_pc_severity: "Error" jp1_pc_eventid: "0301" jp1_pc_metricname: "node_cpu_seconds_total" annotations: jp1_pc_firing_description: "CPU使用率がしきい値(80%)を上回りました。value={{ $value }}%" jp1_pc_resolved_description: "CPU使用率がしきい値(80%)を下回りました。"
-
メトリック定義ファイルの記述例
[ { "name":"cpu_used_rate", "default":true, "promql":"(avg by (instance,job,jp1_pc_nodelabel,jp1_pc_exporter) (rate(node_cpu_seconds_total{mode=\"system\"}[2m]) and $jp1im_TrendData_labels) + avg by (instance,job,jp1_pc_nodelabel,jp1_pc_exporter) (rate(node_cpu_seconds_total{mode=\"user\"}[2m]) and $jp1im_TrendData_labels)) * 100", "resource_en":{ "category":"platform_unix", "label":"CPU used rate", "description":"CPU usage.It also indicates the average value per processor. [Units: %]", "unit":"%" }, "resource_ja":{ "category":"platform_unix", "label":"CPU使用率", "description":"CPU使用率(%)。プロセッサごとの割合の平均値でもある。", "unit":"%" } } }
アラート定義のexprに指定したPromQL文の条件を満たし,アラートのJP1イベントが発行されると,JP1イベントのメッセージには,「CPU使用率がしきい値(80%)を上回りました。value=性能値%」というメッセージが設定されます。ユーザーはこのメッセージを見て,「CPU使用率」のトレンド情報を表示し,CPU使用率の過去の変化や現在値を確認できます。
■ サービス停止時の動作について
Prometheus serverまたはAlertmanagerのサービスが停止している場合,アラートのJP1イベントは発行されません。また,Prometheus serverとAlertmanagerのサービスが稼働している状態で,アラートが異常であるExporterが,障害により停止した場合,アラートは正常となり,正常のJP1イベントを発行します。
■ サービス再起動時の動作について
アラートが異常または正常の状態で,Prometheus server,Alertmanager,または,Exporterのサービスを再起動しても,現在のアラートの状態が再起動前のアラートの状態と同じである場合は,JP1イベントを発行しません。
■ パフォーマンスデータのスパイクの考慮について
パフォーマンスデータが瞬間的に飛びぬけた値(大きな値,小さな値,またはマイナスの値)になることがあります。このようなパフォーマンスデータの急激な変化を一般的に「スパイク」と呼びます。スパイクが発生し,瞬間的に異常値となっても,すぐに正常値に戻り,異常として扱う必要がないケースが多くあります。また,OSの再起動などで,パフォーマンスデータがリセットされたときに,瞬間的にスパイクが発生することもあります。
このようなパフォーマンスデータのメトリックを監視する場合は,アラートルールの定義で「for」(アラートを異常と扱うまでの猶予時間)を指定することで,突発的な異常検知を抑止することを検討する必要があります。
(b) アラート通知機能
Prometheus serverがアラートを評価したあと,アラートの状態が「firing」または「resolved」になったときに,通知を行う機能です。
Prometheus serverは,アラートを1件ずつ送信し,送信されたアラートは,Alertmanagerを経由してJP1/IM - Manager(インテリジェント統合管理基盤)に通知されます。リトライ時も1件ずつ通知されます。
なお,JP1/IM - Managerに送信されるアラートは,基本的に発生した順番に送信されますが,複数のアラートルールが同時に条件を満たした場合や,送信エラーが発生して再送される場合に,順序が入れ替わることがあります。しかし,アラートの情報に発生時刻が含まれているため,どの順番で発生したかを把握できるようになっています。
また,7日間にわたって異常状態が継続された場合,アラートが再通知されます。
アラートの通知先の定義方法を,次に示します。
-
アラートの通知先は,Prometheus設定ファイル(jpc_prometheus_server.yml)とAlertmanager設定ファイル(jpc_alertmanager.yml)の両方に記述します。
Prometheus設定ファイルには,Prometheus serverの通知先として,同居するAlertmanagerを指定します。Alertmanager設定ファイルには,Alertmanagerの通知先として,統合エージェント制御基盤を指定します。
-
統合オペレーション・ビューアーから各設定ファイルをダウンロードし,テキストエディターで編集を行って,アラートの通知先の定義を変更したあと,アップロードします。
JP1/IM - AgentがサポートするPrometheus serverの通知先の定義に関する設定項目を,次に示します。各設定項目の詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Prometheus設定ファイル(jpc_prometheus_server.yml)」(2. 定義ファイル)を参照してください。
設定項目 |
説明 |
---|---|
通知先(必須) |
通知先のAlertmanagerを設定します。 Alertmanagerのコマンドラインオプションの--web.listen-addressに,ホスト名またはIPアドレスを指定した場合は,localhostを--web.listen-addressに指定したホスト名またはIPアドレスに修正します。
|
ラベル設定(任意) |
ラベルを追加できます。必要に応じて設定します。 |
JP1/IM - AgentがサポートするAlertmanagerの通知先に関する設定項目を,次に示します。各設定項目の詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「Alertmanager設定ファイル(jpc_alertmanager.yml)」(2. 定義ファイル)を参照してください。
設定項目 |
説明 |
---|---|
Webhookの設定(必須) |
統合エージェント制御基盤のエンドポイントURLを設定します。 |
(c) 通知抑止機能
「9.5.3(4)(b)アラート通知機能」で説明する通知を,抑止する機能です。次の機能があります。
-
サイレンス機能
一時的に特定のアラートを通知したくない場合に使用します。
■ サイレンス機能
一時的に特定の通知を抑止する機能です。一時的なメンテナンスを行う場合など,その間に発生するアラートを通知しない設定ができます。なお,通知抑止機能では,JP1/IM - Managerの共通除外条件を使用する場合と異なり,JP1/IM - Managerへの通知自体を行いません。
サイレンスが有効である間は,アラートの状態が変わっても通知を行いません。サイレンスが無効になったときに,サイレンスを有効化する前のアラートの状態と比較して,状態が変わっていれば,通知を行います。
通知を行うタイミングについて,次に2つの例を示します。
上記の図は,サイレンスを有効化するときのアラートの状態が「異常」で,サイレンスが有効である間に,アラートの状態が「正常」に変わり,そのあと,サイレンスを無効化した例です。
アラートが「正常」に変わったタイミングでは,サイレンスが有効であるため,通知は行われません。サイレンスを無効化したタイミングでは,アラートの状態が,サイレンスを有効化する前の「異常」から「正常」に変わっているため,「正常」の通知が行われます。
上記の図は,サイレンスが有効である間に,アラートの状態が一度「正常」に変わったあと,再び「異常」に変わり,そのあと,サイレンスを無効化した例です。
サイレンスを無効化したタイミングでは,アラートの状態は,サイレンスを有効化する前と同じ「異常」であるため,通知は行われません。
アラートの送信に失敗してリトライしているときに,そのアラートを抑止するサイレンスが有効になった場合,アラートの送信リトライは行われなくなります。
- ■サイレンスの設定方法
-
サイレンスの設定(有効化または無効化),および,現在のサイレンスの設定内容の取得は,REST APIで行います(GUIはサポートしていません)。
また,サイレンスの設定を行う場合,ユーザーが操作するマシンから統合エージェントホストに対して,Alertmanagerのポート番号で通信できるようにしておく必要があります。
サイレンスの設定,および,現在のサイレンスの設定内容の取得で使用するREST APIについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.21.3 Alertmanagerのサイレンス一覧取得」,「5.21.4 Alertmanagerのサイレンス作成」,および「5.21.5 Alertmanagerのサイレンス失効」を参照してください。