第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 がメトリクスを保存しているアーカイブファイルも記載されています。