ログイン / 登録 アカウント

今回の記事では、GrafanaやRedisをPerformance Co-Pilot(PCP)と組み合わせて、環境内のすべてのマシンのパフォーマンスデータを保存しグラフ化する方法をご紹介します。話を簡単にするため、ここではマシンは2台だけセットアップしますが、マシンを増やしても考え方は同じです。

この記事を読み始める前に、このシリーズのパート1を読んでおいてください!

2台のマシンをセットアップし、server-1とserver-2と呼びます。server-1という名前のマシンはRedisを実行し、すべてのホストのPCPメトリクスを収集します。これは、このマシン上にRedisデータベースのためのスペースを確保する必要があることを意味します。デフォルトのPCPの設定では、ホスト1台あたり約100MBのディスク領域および約200MBのメモリが必要になります。Redisデータベースにデータを保存する仕組みは、pmseriesと呼ばれています。サーバ1の /etc/pcp/pmproxy/pmproxy.conf ファイル内で [pmproxy] セクションに以下が設定されていることを確認します。

# support Redis protocol proxying
redis.enabled = true

さらに [pmseries] セクションで以下の設定が行われていることを確認してください。

# allow REST API queries of fast, scalable time series
enabled = true

Server-1で以下のコマンドを実行し、redis のインストール、起動、永続的な有効化を行います。

yum install redis -y
systemctl start redis
systemctl enable redis
それが完了したら、いくつかのサービスを再起動します。
systemctl restart pmcd pmlogger pmproxy

これでserver-1は、pmloggerが設定された全てのホストの過去のパフォーマンスデータを記録できるようになりました。現時点ではpmloggerは、server-1のデータを収集するようにしか設定されていないので、もう一つのホストであるserver-2のデータも収集するよう設定してみましょう。

server-2 では pmcd サービスのリモート接続を有効にするためデフォルトの PMCD_LOCAL=1 を0に変更しましょう。この値は /etc/sysconfig/pmcd 内にあります。

# Behaviour regarding listening on external-facing interfaces;
# unset PMCD_LOCAL to allow connections from remote hosts.
# A value of 0 permits remote connections, 1 permits local only.
PMCD_LOCAL=0

ここでサービスを接続可能にする必要があります。

firewall-cmd --add-service=pmcd --permanent
firewall-cmd --reload

そして最後に、pcpのサービスを再起動します。

setsebool -P pcp_bind_all_unreserved_ports on

さてこの時点でserver-2は、pmloggerエージェントが接続しログを要求できるよう設定されています。

systemctl restart pmcd pmlogger

server-1 に戻り、 /etc/pcp/pmlogger/control.d/remote を編集して次の行を追加することで、pmloggerエージェントにserver-2用の設定を行います。

server-2 n n PCP_LOG_DIR/pmlogger/server-2 -r -T24h10m -c config.remote

完了次第、pmloggerを再起動します。

systemctl restart pmlogger

その後、以下のコマンドを実行でき、

cd /var/log/pcp/pmlogger/server-2 
ls *.0

「.0」で終わるファイルが確認できるはずです。

20200923.16.41.0

これでpcpのメトリックデータをserver-2からserver-1のマシンに収集できていることがわかります。

最初の投稿でセットアップしたGrafanaインスタンス(http://server-1:3000)に戻り、redis上のメトリクスデータをグラフ化する方法を見ていきます。

再度歯車アイコン(Configuration)、そして「Data Sources」をクリックします。ここで「Add Data Source」をクリックします。PCP Redisをマウスオーバーし表示されるSelectボタンをクリックします。HTTPセクションのフォームに「http://localhost:44322」のURLを入力し、フォームの下部にある「Save & Test」をクリックします。「Data source is working」というメッセージが返ってくるはずです。

PCP Grafana part 2 fig 1

これで設定が完了したので結果を見てみましょう。DashboardアイコンをクリックしManageをクリックします。ここでPCP Redis Host Overviewのオプションが表示されるのでそちらをクリックします。

デフォルトではPCP Redis Host Overviewダッシュボードには6時間分のデータが表示されますが、必要に応じてより短い時間に変更することもできます。これらのチャートには以下のようなあらゆる種類のメトリクスが表示されます。

  • ロードアベレージ

  • メモリ使用率

  • CPUごとのビジー率(user/sys)

  • 1秒あたりコンテキストスイッチ数

  • 実行可能プロセス数

  • メモリ(used/cached/free)

  • ネットワークスループット 受信/送信

  • ネットワークパケットドロップ 受信/送信

  • ネットワークパケット受信/送信

  • TCP タイムアウト/listenエラー/再送

  • ディスク レイテンシー/IOPS/スループット/ビジー率

PCP Grafana part 2 fig 2

このように難しい設定なしですぐにホストの様々なデータを見ることができます。また、ダッシュボードの左上の隅にHostというドロップダウンメニューがあります。ここには現在データを表示しているホストが表示され、別のホストを選択してデータを表示することもできます。複数のホストのデータをredisデータベースに取り込んでおり、設定したすべてのホストのメトリクスを見ることができます。この記事で紹介した方法を使用することで、ホスト単位の監視と、様々なところからの過去のパフォーマンスデータへのアクセスが可能となります!

シリーズ最後となる次回の記事では、ここまでの方法にBpftraceを組み込む方法をご紹介します!


About the author

Karl Abbott is a Senior Product Manager for Red Hat Enterprise Linux focused on the kernel and performance. Abbott has been at Red Hat for more than 15 years, previously working with customers in the financial services industry as a Technical Account Manager.