第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 です。
手順
Red Hat Enterprise Linux の
optional
リポジトリーを有効にします。# subscription-manager repos --enable rhel-7-server-optional-rpms
PCP パッケージを以下のコマンドでインストールします。
# satellite-maintain packages install pcp \ pcp-pmda-apache \ pcp-pmda-postgresql \ pcp-system-tools \ pcp-webjs
Performance Metrics Collector デーモンおよび Performance Metrics Logger デーモンを有効にして、開始します。
# systemctl enable pmcd pmlogger # systemctl start pmcd pmlogger
3.1. PCP データ収集の設定
以下の手順では、プロセス、Satellite、Apache HTTP サーバーおよび PostgreSQL のメトリクスを PCP が収集するように設定します。
手順
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
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
PMDA をモニタリングするプロセスをインストールします。
# cd /var/lib/pcp/pmdas/proc # ./Install
PCP が Apache HTTP サーバーからメトリクスを収集するように設定します。
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
Apache HTTP サーバー PMDA を有効にします。
# cd /var/lib/pcp/pmdas/apache # ./Install
Satellite インストーラーが拡張ステータスモジュールの設定ファイルを上書きしないようにします。
次の行を
/etc/foreman-installer/custom-hiera.yaml
設定ファイルに追加します。apache::purge_configs: false
PCP が PostgreSQL からメトリクスを収集するように設定します。
/var/lib/pcp/pmdas/postgresql
ディレクトリーに切り替えます。# cd /var/lib/pcp/pmdas/postgresql
インストーラーを実行します。
# ./Install
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
設定ファイルに保存されています。
SELinux を
pcp_pmcd_t
ドメインパーミッションに変更して、PCP の PostgreSQL データベースへのアクセスを許可します。# semanage permissive -a pcp_pmcd_t
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
Satellite で telemetry 機能を有効にします。
Satellite からメトリクスを収集できるようにするには、メトリクスを
statsd
プロトコルでpcp-mmvstatsd
デーモンに送信する必要があります。メトリクスは集計され、PCP MMV API 経由で入手可能になります。Foreman Telemetry および
pcp-mmvstatsd
パッケージをインストールします。# satellite-maintain packages install foreman-telemetry pcp-mmvstatsd
pcp-mmvstatsd
サービスを有効にして起動します。# systemctl enable pcp-mmvstatsd # systemctl start pcp-mmvstatsd
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'
メトリクスをアーカイブファイルに毎日保存するようにスケジュールします。
# 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
Apache HTTP サーバーおよび PCP を再起動してデータ収集を開始します。
# systemctl restart httpd pmcd pmlogger
3.2. Web UI によるメトリクスへのアクセス有効化
以下の手順では、PCP で収集したメトリクスに Web UI でアクセスする方法を説明します。
手順
Red Hat Enterprise Linux の
optional
リポジトリーを有効にします。# subscription-manager repos --enable rhel-7-server-optional-rpms
PCP Web API およびアプリケーションをインストールします。
# satellite-maintain packages install pcp-webapi pcp-webapp-grafana pcp-webapp-vector
PCP Web サービスを起動して、有効にします。
# systemctl start pmwebd # systemctl enable pmwebd
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
がメトリクスを保存しているアーカイブファイルも記載されています。