Red Hat Satellite の監視

Red Hat Satellite 6.6

Red Hat Satellite 6 からメトリクスを収集する方法

Red Hat Satellite Documentation Team

概要

本ガイドでは、Red Hat Satellite 6 から分析に使用するメトリクスを収集する方法について説明します。この内容は、Satellite の管理者向けとなります。

第1章 概要

Satellite からメトリクスを取得すると、現在発生している問題のトラブルシューティングや、キャパシティーのプランニングに役立ちます。本ガイドは、ライブのメトリクスを収集して、一定期間にわたりこのメトリクスをアーカイブする方法を説明します。Red Hat にサポートケースを起票する必要がある場合には、アーカイブしたデータを確認することで、価値のある見識が得られます。Red Hat サポートチームは、お客様がサポートケースにアーカイブデータをアップロードしていただいた場合にのみ、このデータにアクセスできます。

Satellite から以下のメトリクスを収集できます。

  • Red Hat Enterprise Linux からの基本的な統計数値。システムの負荷やメモリー使用量、出入力操作などが含まれます。
  • プロセスの数値。メモリーおよび CPU 使用量などが含まれます。
  • Apache HTTP サーバーのアクティビティー統計数値。
  • PostgreSQL のアクティビティー統計数値。
  • Satellite アプリケーションの統計数値。

Performance Co-Pilot (PCP) を使用して Satellite のメトリクスを収集、アーカイブ化します。

第2章 Performance Co-Pilot

Performance Co-Pilot (PCP) は、システムレベルのパフォーマンス測定値を取得、アーカイブ化および分析するためのツールおよびライブラリーのスイートです。PCP は、ライブおよび履歴のメトリクス分析に使用できます。メトリクスは CLI または Web UI で取得および提示できます。

2.1. Performance Metric Domain Agent

Performance Metric Domain Agent (PMDA) は PCP のアドオンで、アプリケーションやサービスのメトリクスにアクセスできるようにします。Satellite に関連する全メトリクスを収集するには、Apache HTTP Server および PostgreSQL 向けの PMDA をインストールする必要があります。

第3章 PCP パッケージのインストール

PCP パッケージのインストール方法を説明します。

前提条件

  • /var/log/pcp ディレクトリーに最小 20 GB の空き領域があること。

    デフォルトの PCP データ保持ポリシーでは、過去 14 日間に収集されたデータのみが保持されます。1 日あたりのデータストレージには通常 100 MB から 500 MB のディスク領域が使用されることが想定されますが、数ギガバイトが使用されることもあります。

  • Satellite サーバーが稼働しているベースシステムが、Red Hat Enterprise Linux 7.6. 以降であること。サポートされる PCP パッケージの最小バージョンは PCP バージョン 4.1 です。

手順

  1. Red Hat Enterprise Linux の optional リポジトリーを有効にします。

    # subscription-manager repos --enable rhel-7-server-optional-rpms
  2. PCP パッケージを以下のコマンドでインストールします。

    # satellite-maintain packages install pcp \
      pcp-pmda-apache \
      pcp-pmda-postgresql \
      pcp-system-tools \
      pcp-webjs
  3. Performance Metrics Collector デーモンおよび Performance Metrics Logger デーモンを有効にして、開始します。

    # systemctl enable pmcd pmlogger
    # systemctl start pmcd pmlogger

3.1. PCP データ収集の設定

以下の手順では、プロセス、Satellite、Apache HTTP サーバーおよび PostgreSQL のメトリクスを PCP が収集するように設定します。

手順

  1. Satellite プロセスに関するデータを収集するように PCP を設定するには、/var/lib/pcp/pmdas/proc/hotproc.conf ファイルを作成して、以下のコンテンツを追加してください。

    #pmdahotproc
    Version 1.0
    
    # processes with load 0.9 or 1GB RSS memory
    (cpuburn > 0.9 || residentsize > 1000000) &&
    (
      fname == "java" ||
      fname == "qdrouterd" ||
      fname == "qpidd" ||
      (fname == "postgres" && psargs ~ /-D/) ||
      fname == "mongod" ||
      fname == "dynflow_executor" ||
      fname == "dynflow_executor_monitor" ||
      fname ~ /smart_proxy_dynflow_core/ ||
      psargs ~ /Passenger RackApp/ ||
      psargs ~ /celery beat/ ||
      psargs ~ /celery worker/ ||
      psargs ~ /pulp/ ||
      psargs ~ /smart-proxy/ ||
      psargs ~ /squid.conf/
    )

    デフォルトでは、PCP は基本的なシステムメトリクスを収集します。このステップを実行すると、以下の Satellite プロセスの詳細なメトリクスが収集されるようになります。

    • Java
    • PostgreSQL
    • MongoDB
    • Dynflow
    • Passenger
    • Pulp
    • Qpid
  2. PCP が収集しているプロセスのメトリクスをログ記録するように設定します。

    # mkdir -p /var/lib/pcp/config/pmlogconf/foreman-hotproc
    # cat >/var/lib/pcp/config/pmlogconf/foreman-hotproc/summary << EOF
    #pmlogconf-setup 2.0
    ident   foreman hotproc metrics
    probe   hotproc.control.config != "" ? include : exclude
            hotproc.psinfo.psargs
            hotproc.psinfo.cnswap
            hotproc.psinfo.nswap
            hotproc.psinfo.rss
            hotproc.psinfo.vsize
            hotproc.psinfo.cstime
            hotproc.psinfo.cutime
            hotproc.psinfo.stime
            hotproc.psinfo.utime
            hotproc.io.write_bytes
            hotproc.io.read_bytes
            hotproc.schedstat.cpu_time
            hotproc.fd.count
    EOF
  3. PMDA をモニタリングするプロセスをインストールします。

    # cd /var/lib/pcp/pmdas/proc
    # ./Install
  4. PCP が Apache HTTP サーバーからメトリクスを収集するように設定します。

    1. Apache HTTP サーバーの拡張ステータスモジュールを有効にします。

      #cat >/etc/httpd/conf.d/01-status.conf <<EOF
      ExtendedStatus On
      LoadModule status_module modules/mod_status.so
      
      <Location "/server-status">
      PassengerEnabled off
      SetHandler server-status
      Order deny,allow
      Deny from all
      Allow from localhost
      </Location>
      EOF
    2. Apache HTTP サーバー PMDA を有効にします。

      # cd /var/lib/pcp/pmdas/apache
      # ./Install
    3. Satellite インストーラーが拡張ステータスモジュールの設定ファイルを上書きしないようにします。

      次の行を /etc/foreman-installer/custom-hiera.yaml 設定ファイルに追加します。

      apache::purge_configs: false
  5. PCP が PostgreSQL からメトリクスを収集するように設定します。

    1. /var/lib/pcp/pmdas/postgresql ディレクトリーに切り替えます。

      # cd /var/lib/pcp/pmdas/postgresql
    2. インストーラーを実行します。

      # ./Install
    3. PCP データベースインターフェイスが PostgreSQL データベースにアクセスできるようにします。

      /etc/pcpdbi.conf 設定ファイルに以下の行を挿入します。

      $database = "dbi:Pg:dbname=foreman;host=localhost";
      $username = "foreman";
      $password = "6qXfN9m5nii5iEcbz8nuiJBNsyjjdRHA"; 1
      $os_user = "foreman";
      1
      ここでの $password の値は、/etc/foreman/database.yml 設定ファイルに保存されています。
    4. SELinux を pcp_pmcd_t ドメインパーミッションに変更して、PCP の PostgreSQL データベースへのアクセスを許可します。

      # semanage permissive -a pcp_pmcd_t
    5. PostgreSQL PMDA が PostgreSQL に接続できることを確認します。

      /var/log/pcp/pmcd/postgresql.log ファイルで、接続が確立されていることを確認します。データベース接続が確立されないと、PostgreSQL PMDA はアクティブな状態ですが、メトリクスを提供することはできません。

      [Tue Aug 14 09:21:06] pmdapostgresql(25056) Info: PostgreSQL connection established

      /var/log/pcp/pmcd/postgresql.log にエラーがある場合は、pmcd サービスを再起動します。

      # systemctl restart pmcd
  6. Satellite で telemetry 機能を有効にします。

    Satellite からメトリクスを収集できるようにするには、メトリクスを statsd プロトコルで pcp-mmvstatsd デーモンに送信する必要があります。メトリクスは集計され、PCP MMV API 経由で入手可能になります。

    1. Foreman Telemetry および pcp-mmvstatsd パッケージをインストールします。

      # satellite-maintain packages install foreman-telemetry pcp-mmvstatsd
    2. pcp-mmvstatsd サービスを有効にして起動します。

      # systemctl enable pcp-mmvstatsd
      # systemctl start pcp-mmvstatsd
    3. Satellite telemetry 機能を有効にします。

      以下の行を /etc/foreman/settings.yaml 設定ファイルに追加します。

      :telemetry:
        :prefix: 'fm_rails'
        :statsd:
          :enabled: true
          :host: '127.0.0.1:8125'
          :protocol: 'statsd'
        :prometheus:
          :enabled: false
        :logger:
          :enabled: false
          :level: 'INFO'
  7. メトリクスをアーカイブファイルに毎日保存するようにスケジュールします。

    # cat >/etc/cron.daily/refresh_mmv <<EOF
    #!/bin/bash
    echo "log mandatory on 1 minute mmv" | /usr/bin/pmlc -P
    EOF
    # chmod +x /etc/cron.daily/refresh_mmv
  8. Apache HTTP サーバーおよび PCP を再起動してデータ収集を開始します。

    # systemctl restart httpd pmcd pmlogger

3.2. Web UI によるメトリクスへのアクセス有効化

以下の手順では、PCP で収集したメトリクスに Web UI でアクセスする方法を説明します。

手順

  1. Red Hat Enterprise Linux の optional リポジトリーを有効にします。

    # subscription-manager repos --enable rhel-7-server-optional-rpms
  2. PCP Web API およびアプリケーションをインストールします。

    # satellite-maintain packages install pcp-webapi pcp-webapp-grafana pcp-webapp-vector
  3. PCP Web サービスを起動して、有効にします。

    # systemctl start pmwebd
    # systemctl enable pmwebd
  4. PCP Web サービスへのアクセスを可能にするようにファイアウォールポートを開きます。

    # firewall-cmd --add-port=44323/tcp
    # firewall-cmd --permanent --add-port=44323/tcp

3.3. PCP 設定の確認

PCP が正常に設定されたこととサービスがアクティブであることを確認するには、以下のコマンドを実行します。

# pcp

このコマンドで、アクティブな PCP の設定概要が出力されます。

pcp コマンドの出力例

Performance Co-Pilot configuration on satellite.example.com:

 platform: Linux satellite.example.com 3.10.0-862.3.3.el7.x86_64 #1 SMP Wed Jun 13 05:44:23 EDT 2018 x86_64
 hardware: 8 cpus, 4 disks, 1 node, 23380MB RAM
 timezone: AEST-10
 services: pmcd pmwebd
     pmcd: Version 3.12.2-1, 9 agents, 1 client
     pmda: root pmcd proc xfs linux apache mmv postgresql jbd2
 pmlogger: primary logger: /var/log/pcp/pmlogger/satellite.example.com/20180802.00.10

この例では、Performance Metrics Collector Daemon (pmcd) と Performance Metrics Web Daemon (pmwebd) の両方のサービスが稼働しています。また、PMDA がメトリクスを収集しています。最後の pmlogger がメトリクスを保存しているアーカイブファイルも記載されています。

第4章 PCP メトリクス

メトリクスは、ツリー構造で保存されます。たとえば、ネットワークメトリクスはすべて、network というノードに保存され、各メトリックはインスタンスと呼ばれ、単一または複数の値を使用できます。たとえば、kernel の負荷の場合には、1 分平均、5 分平均、および 15 分平均の、3 つのインスタンスがあります。

PCP は各メトリックエントリーについてデータとメタデータの両方を保存します。これにはメトリックの説明、データタイプ、単位、ディメンションなどが含まれます。たとえば、メタデータを使うと、PCP は異なるディメンションで複数のメトリクスを出力できます。

カウンターメトリクスの値は、増加しかしません。たとえば、特定デバイス上でのディスクの書き込み操作のカウントは、増加のみです。カウンターメトリックの値をクエリすると、PCP はこれをデフォルトでレート値に変換します。

CPU やメモリー、kernel、XFS、ディスク、ネットワークなどのシステムメトリクスの他に、以下のメトリクスが設定されます。

メトリクス説明

hotproc.*

主要 Satellite プロセスの基本的なメトリクス

apache.*

Apache HTTP サーバーのメトリクス

postgresql.*

PostgreSQL の基本的なメトリクス

mmv.fm_rails_*

Satellite のメトリクス

4.1. 利用可能なメトリクスの特定

  • PCP で利用可能なメトリクスすべてを一覧表示するには、以下のコマンドを実行します。

    # pminfo
  • すべての Satellite メトリクスと説明を一覧表示するには、以下のコマンドを実行します。

    # foreman-rake telemetry:metrics
  • アーカイブ化されたメトリクスを一覧表示するには、以下のコマンドを実行します。

    # less /var/log/pcp/pmlogger/$(hostname)/pmlogger.log
  • pmlogger デーモンは、データを受け取ると設定に従ってアーカイブ化します。アクティブなアーカイブファイルを確認するには、以下のコマンドを実行します。

    # pcp | grep logger

    出力には、以下のようなアクティブなアーカイブファイルの名前が含まれます。

    /var/log/pcp/pmlogger/satellite.example.com/20180814.00.10

第5章 メトリクスの取得

メトリクスを PCP から取得するには CLI または Web UI インターフェースを使用します。PCP には多くの CLI ツールが用意されており、ライブデータまたはアーカイブ化されたソースからデータを出力できます。Web UI インターフェースは、Grafana および Vector Web アプリケーションが提供します。Vector は PCP デーモンに直接接続し、ライブデータのみを表示できます。Grafana は PCP アーカイブファイルからデータを読み取り、最大 1 年前までのデータを表示できます。

5.1. CLI によるメトリクスの取得

PCP の CLI ツールを使用すると、ライブまたはアーカイブファイルからメトリクスを取得できます。

5.1.1. CLI によるライブメトリクスの取得

ディスクパーティションの書き込みインスタンスに関するメトリクスを出力するには、以下のコマンドを実行します。

# pmval -f 1 disk.partitions.write

この例では、PCP はディスクパーティションへの書き込み数のカウンター値をレート値に変換します。-f 1 は、値を小数第 2 位で四捨五入するように指定します。

出力例

metric:    disk.partitions.write
host:      satellite.example.com
semantics: cumulative counter (converting to rate)
units:     count (converting to count / sec)
samples:   all

                 vda1                  vda2                   sr0
                  0.0                  12.0                   0.0
                  0.0                   1.0                   0.0
                  0.0                   1.0                   0.0
                  0.0                   2.0                   0.0

システムメトリクスを 2 秒間隔でモニターするには、以下のコマンドを実行します。

# pmstat -t 2sec

5.1.2. CLI によるアーカイブ化されたメトリクスの取得

PCP CLI ツールを使ってアーカイブファイルからメトリクスを取得できます。これを実行するには、--archive パラメーターを追加してアーカイブファイルを指定します。

  • アーカイブファイル作成時に有効になっていた全メトリクスを一覧表示するには、以下のコマンドを実行します。

    pminfo --archive archive_file
  • アーカイブファイルでカバーされているホストと時間を確認するには、以下のコマンドを実行します。

    # pmdumplog -l archive_file

  • アーカイブファイルがカバーしている期間の各パーティションのディスク書き込みを一覧表示するには、以下のコマンドを実行します。

    # pmval --archive /var/log/pcp/pmlogger/satellite.example.com/20180816.00.10 \
      -f 1 disk.partitions.write
  • 14:00 から 14:15 までの時間で 2 秒間隔でのパーティション毎のディスク書き込み操作を一覧表示するには、以下のコマンドを実行します。

    # pmval --archive /var/log/pcp/pmlogger/satellite.example.com/20180816.00.10 \
      -d -t 2sec \
      -f 3 disk.partitions.write \
      -S @14:00 -T @14:15
  • 14:00 から 14:30 までの時間で、最小値/最大値および実際の最小値/最大値を含むすべてのパフォーマンスメトリクスの平均値を一覧表示するには、以下のコマンドを実行します。出力は表形式になります。

    # pmlogsummary /var/log/pcp/pmlogger/satellite.example.com/20180816.00.10 \
      -HlfiImM \
      -S @14:00 \
      -T @14:30 \
      disk.partitions.write \
      mem.freemem
  • 14:00 時以降にアーカイブに保存されたシステムメトリクスを一覧表示するには、以下のコマンドを実行します。メトリクスは top ツールと同様のフォーマットで表示されます。

    # pcp --archive /var/log/pcp/pmlogger/satellite.example.com/20180816.00.10 \
      -S @14:00 \
      atop

5.2. Web UI でのメトリクスの取得

Vector および Grafana Web アプリケーションでは、ダッシュボードスタイルのビューを提供し、デフォルトのウィジェットにはメトリクスの値が表示されます。要件に合わせてメトリクスを追加および削除できます。

ウィジェットごとに表示期間を選択することもできます。アーカイブされたメトリクスからカスタムの時間範囲を選択できるのは、Grafana のみです。

Grafana の使用方法に関する詳細は、Grafana Labs Web サイトを参照してください。Vector の使用方法に関する詳細は、Vector Web サイトを参照してください。

手順

Performance Co-Pilot の Webアプリケーション UI でメトリクスを取得するには、次の手順を実行します。

  1. http://satellite.example.com:44323 の URL を開きます。
  2. PCP Web UI で、アクセスする Web アプリケーションのダッシュボードを選択します。

図5.1 Grafana ダッシュボードの例

grafana screenshot

図5.2 Vector ダッシュボードの例

vector screenshot

第6章 メトリクスデータの保持

PCP データログに必要なストレージ容量は、以下の要素で決定されます。

  • ログ記録されるメトリクス
  • ログ間隔
  • 保持ポリシー

デフォルトのログ (サンプリング) 間隔は 60 秒です。

デフォルトの保持ポリシーでは、過去 14 日間のアーカイブが保持され、1 日以上前のものは圧縮されます。PCP アーカイブログは、/var/log/pcp/pmlogger/hostname ディレクトリーに保存されます。

6.1. デフォルトのログ間隔の変更

デフォルトのログ間隔は、以下の手順で変更します。

手順

  1. /etc/pcp/pmlogger/control.d/local 設定ファイルを編集します。
  2. LOCALHOSTNAME の行を編集し、-t XXs を追記します。ここでの XX は、新たな間隔 (秒単位) になります。
  3. pmlogger サービスを再起動します。

6.2. データ保持ポリシーの変更

デフォルトのデータ保持ポリシーは、以下の手順で変更します。

手順

  1. /etc/cron.d/pcp-pmlogger ファイルを編集します。
  2. pmlogger_daily のある行を見つけます。
  3. 何日後にデータをアーカイブ化するかという日数をパラメーター -x の値で設定します。
  4. 何日後にデータを削除するかという日数を、パラメーター -k の値で設定します。

    たとえば、-x 4 -k 7 というパラメーターの場合、データは 4 日後に圧縮され、7 日後には削除されます。

6.3. データストレージ使用量の確認

データストレージ使用量を確認するには、以下のコマンドを実行します。

# less /var/log/pcp/pmlogger/$(hostname)/pmlogger.log

これで利用可能な全メトリクスがログ記録された間隔ごとにグループ化されて一覧表示されます。各グループでは、一覧表示されたメトリクスの保存に必要なストレージも 1 日単位で一覧表示されます。

ストレージ統計数値の例

logged every 60 sec: 61752 bytes or 84.80 Mbytes/day

法律上の通知

Copyright © 2020 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.