• 検索結果がありません。

PCP 入門 Performance Co-Pilot を使い始めましょう Christian Horn Technical Account Manager 2019/06/05

N/A
N/A
Protected

Academic year: 2021

シェア "PCP 入門 Performance Co-Pilot を使い始めましょう Christian Horn Technical Account Manager 2019/06/05"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

PCP

入門

Performance Co-Pilotを使い始めましょう

Christian Horn

Technical Account Manager 2019/06/05

(2)

アジェンダ

スピーカーの自己紹介

パフォーマンスモニタリングとは、現在のソフトの比較

PCP

とは

PCP

のインストール説明

PCP

の基本的な仕組み

紹介: pmrep, pminfo, pcp atop

PMDA

をインストールする事

pmdiff

を使いましょう

(3)

自己紹介 : Christian Horn

旧東ドイツ出身

2001

年から、ドイツのミュンヘンに住む

@T-Systems:

技師、エンジニア

@

レッドハット ドイツ: TAM

2016

年、東京へ引っ越す

@

レッドハット ( 株 ) : AMC TAM

問題の調査、 PCP の改善など

趣味:

日本語の勉強、ベートーベンの第九を歌う事

登山、サイクリング

1978

2019

1988

1995

2009

(4)

パフォーマンスモニタリングとは

モニタリングの種類:

1)

アベイラビリティモニタリング:

あるシステムやサービスが動いているかどうか

例: Zabbix, Nagios, IBM Tivoli

2)パフォーマンスモニタリング:システム関係の値を読む事

システムの負荷、ネットワークのスループット

例: collectd, PCP

(5)

現在のソフトの比較

sar

は昔から Red Hat Enterprise Linux (RHEL) に入っているソフト

使い方が簡単

あるバージョンの sar で保存されたデータを分析するためには、

全く同じバージョンの sar をインストールする必要

様々なオプションがある

sar PCP

の比較(英語)

collectl

は小さくて便利な Perl スクリプト。色々なケースで

役に立つ、他のツールのような柔軟性に欠ける

Performance Co-Pilot (PCP)

は RHEL なら、おすすめ

最近、 prometheus というソフトが流行っている。 Kubernetes と

(6)

PCP

とは

PCP

は 20 年以上前に誕生

データを収集:様々なシステムのソースから、例えば mariadb,

PostgreSQL, Apache

。様々なエンジンの名前は Performance Metrics

Domain Agents(PMDA)

集めたデータを読む為に:様々なツールがある

データの分析のため: pmdiff

データの視覚化のため: pmchart, pmrep

RHEL7

以降には、 PCP

のパフォーマンスデータは sosreport にも含ま

れている

(7)

インストール

PCP

のパッケージは RHEL6/7/8 の普通のレポジトリに入っている

PCP

は様々なパッケージに分かれていて、

「 yum search pcp 」で探す事が可能

基本的なインストール:

「自動配置パッケージ」:

RHEL8:

普通のレポジトリに入っている

RHEL7: optional

チャネルに入っている

レポジトリを追加:

# subscription-manager repos \

--enable=rhel-7-server-optional-rpms

# yum install pcp-zeroconf pcp-system-tools

内容:

pcp-atop

pcp-collectcl

pcp-free

pcp-iostat

[...]

(8)

PCP

の分解

[*] 現在、 grafana のパケージは RHEL に含まれていない pmcd pmda-lmsensors pmda-postgresql pmlogger pmchart pminfo pcp atop pmie pcp-web[...] grafana* pmda-[...] [...] pmda-oracle pmda-podman pmda-nginx consumers PMDAs

(9)

インストール ... 完了しました!

pmcd pmlogger pmchart pminfo pmie [...] [...] pmda-oracle pmda-podman pmda-nginx consumers PMDAs [root@rhel8 ~]# ps axf

PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] [...] 7500 ? Ssl 0:00 /usr/libexec/pcp/bin/pmcd 7513 ? S 0:00 \_ /var/lib/pcp/pmdas/root/pmdaroot 7518 ? S 0:00 \_ /var/lib/pcp/pmdas/proc/pmdaproc -d 3 7526 ? S 0:00 \_ /var/lib/pcp/pmdas/xfs/pmdaxfs -d 11 7532 ? S 0:00 \_ /var/lib/pcp/pmdas/linux/pmdalinux 7537 ? S 0:00 \_ /var/lib/pcp/pmdas/kvm/pmdakvm -d 95 7544 ? S 0:00 \_ /var/lib/pcp/pmdas/dm/pmdadm -d 129 9810 ? S 0:00 \_ python3 [..]/pmdanfsclient.python 8041 ? S 0:00 /usr/libexec/pcp/bin/pmlogger -P -r -T24h10m [...] 8474 ? Ss 0:00 /usr/bin/pmie -b -P [...]

(10)

基本的なデーモン

pcp-zeroconf

をインストールした後で、いくつかの

コンポーネントが設定され、起動している :

pmcd

デーモンは PCP における通信の中心

pmlogger

はパフォーマンスデータをディスクに保存

pmie

はスクリプトを実行、警告をメールで送るなど

様々な PMDA がパフォーマンスデータを集め、 pmcd に

(11)

様々な PMDA が存在

[root@rhel8 ~]# yum search pcp-pmda [...]

======== Name Matched: pcp-pmda ==========================

pcp-pmda-dm.x86_64 : Performance Co-Pilot (PCP) metrics for the Device Mapper : Cache and Thin Client

pcp-pmda-bcc.x86_64 : Performance Co-Pilot (PCP) metrics from eBPF/BCC modules pcp-pmda-lio.x86_64 : Performance Co-Pilot (PCP) metrics for the LIO subsystem […]

[root@rhel8 ~]# yum search pcp-pmda | grep '^pcp-pmda' | \ sed -e 's,\..*,,' -e 's,pcp-pmda-,,' | sort | uniq | xargs

activemq apache bash bcc bind2 bonding cifs cisco dbping dm docker ds389 ds389log elasticsearch gfs2 gluster gpfs gpsd haproxy infiniband json libvirt lio lmsensors logger lustre lustrecomm mailq memcache mic mounts mysql named netfilter news nfsclient nginx nvidia-gpu oracle papi pdns perfevent podman postfix postgresql prometheus redis roomtemp rpm rsyslog samba sendmail shping slurm smart snmp summary systemd trace unbound vmware weblog zimbra zswap

(12)

pminfo

を使いましょう

metric

とは: PMDA が提供しているパフォーマンスデータ

pminfo

を実行すると、動いている pmcd が収集した metric を出力

ディスクに保存されたデータも読む事が可能

「 -fT 」というパラメータでヘルプと現在の metric 値を表示する事が出来る

[root@rhel8 ~]# pminfo -fT [..] mem.util.active metric の名前 Help:

Memory that has been used more recently and metricの説明 usually not reclaimed unless absolutely necessary.

Value 217216 metricのソースで読んでいる値 [..]

network.interface.inet_addr metricの名前 Help:

string INET interface address (ifconfig style) metricの説明

inst [0 or "lo"] value "127.0.0.1" metricのソースで読んでいる値 inst [1 or "eth0"] value "192.168.4.68"

(13)

アーカイブファイルを読もう

● pcp-zeroconf によって、 pmlogger が動いている ● pcp-zeroconfの設定で、 pmloggerは /var/log/pcp/pmlogger/<hostname> 配下にデータを保存する ● そのディレクトリにおいて末尾が 「 0 」 のファイルが アーカイブファイル。 pminfoに「 -a 」を追加して、アーカイブされた metricsを見ることが出来る : # pminfo -a <archivefile> 例: pminfo -a \ /var/log/pcp/pmlogger/rhel8c/20190516.07.31.0 ● PCPの様々なコマンドは「 -a 」で、システムで動いて いる pmcd の代わりに、アーカイブファイルを使える [root@rhel8c ~]# cd /var/log/pcp/pmlogger/rhel8c/ [root@rhel8c rhel8c]# ll 合計 3616 [..] 467412 5 月 17 07:30 20190517.03.14.0.xz [..] 8992 5 月 17 07:30 20190517.03.14.index [..] 50428 5 月 17 07:29 20190517.03.14.meta.xz [..] 23812 5 月 17 07:31 20190517.07.30.0.xz [..] 312 5 月 17 07:31 20190517.07.30.index [..] 47508 5 月 17 07:30 20190517.07.30.meta.xz [..] 284252 5 月 20 03:45 20190520.01.45.0 [..] 272 5 月 20 03:45 20190520.01.45.index [..] 240235 5 月 20 03:45 20190520.01.45.meta [..] 217 5 月 20 01:45 Latest [..] 30130 5 月 20 01:45 pmlogger.log [..] 30205 5 月 17 11:16 pmlogger.log.prior [root@rhel8c rhel8c]#

(14)

pmrep

を使いましょう

pmrep

は vmstat の様に、 metric を出力出来る

pmrep

は vmstat の様に、 metric を出力出来る

[root@rhel8 ~]# pmrep \

kernel.all.uptime kernel.all.cpu.user kernel.all.cpu.sys \ 希望の metrics kernel.all.cpu.idle kernel.all.cpu.intr

k.a.uptime k.a.c.user k.a.c.sys k.a.c.idle k.a.c.intr sec ms/s ms/s ms/s ms/s 4101 N/A N/A N/A N/A 4102 119.620 318.988 1455.381 19.937 4103 0.000 0.000 1990.623 10.003 4104 140.054 370.144 1450.563 20.008 4105 130.120 350.324 1391.287 30.028 metricsの値 4106 179.456 538.367 1166.461 39.879 4107 59.909 149.773 1737.370 9.985 4108 10.003 0.000 1990.597 0.000 4109 0.000 0.000 1991.661 0.000 [...]

(15)

atop

などのツール

metrics

を使って、必要な人気なツールを作成した。

例えば、 atop

というコマンドが PCP metrics を使って作成した。「 pcp atop 」

と実行すると、 PCP のメトリクスを使って、 atop と同等の出力が得られる。

「 pcp iostat 」、「 pcp dstat 」なども存在。 pcp-system-tools というパケージに

入っている

アーカイブデータも使う可能。

例えば、「システム XYZ

で 9 時頃にパフォーマンスの問題があった」との電話が

来たら、これを使える:

# pcp atop -r <archivefile> -b 9:00

出力は 9 時のデータになる

(16)

PMDA

をインストール

[root@rhel8 ~]# pminfo -f lmsensors Error: lmsensors: Unknown metric name [root@rhel8 ~]#

[root@rhel8 ~]# yum search pcp-pmda […]

[root@rhel8 ~]# yum -y install pcp-pmda-lmsensors [...]

[root@rhel8 ~]# cd /var/lib/pcp/pmdas/lmsensors/ [root@rhel8 lmsensors]# ./Install

Updating the Performance Metrics Name Space (PMNS) ...

Terminate PMDA if already installed ...

Updating the PMCD control file, and notifying PMCD ... Check lmsensors metrics have appeared ... 7 metrics and 7 values

[root@rhel8 ~]# [root@rhel8 ~]# pminfo -f lmsensors

lmsensors.pch_skylake_virtual.temp1 value 41 lmsensors.coretemp_isa.temp3 value 39 lmsensors.coretemp_isa.temp2 value 38 [...]

(17)

問題を PCP で調べましょう

電話が鳴っています:

「システム XYZ で、 10 時 40 分頃にパフォーマンスの

問題があった」

とのこと。

以前、そのシステムに pcp-zeroconf をインストールした。 PCP

のアーカイブファイルを使って、調べましょう。

(18)

どの metrics が大切ですか?

動いているシステムの pmcd が提供している metrics:

[chris@rhel8 ~]# pminfo | wc -l

2830

一部は pmlogger のアーカイブファイルに入っている:

[chris@rhel8 ~]# pminfo -a 20190513.09.28.0 | wc -l

1208

[chris@rhel8 ~]#

RHEL 8

では 1200 以上入っています!

どちらが面白いかな。一つ一つで、 pminfo で、調べる時間が無。

(19)

pmdiff

を使いましょう

どの metricsが調査の役に立つでしょうか。つまり、どの metrics が 10 時 40 分に異常でしたか。 [chris@rhel8 ~]# pmdiff -S 09:30 -T 10:30 -B 10:39 -E 10:42 20180815.09.28.0 20180815.09.28.0 20180815.09.28.0 Ratio Metric-Instance 09:30-10:30 10:39-10:42 0.000 0.055 |+| kernel.percpu.cpu.user ["cpu2"] 0.001 0.203 >100 kernel.percpu.cpu.sys ["cpu2"] 0.005 0.251 50.20 kernel.all.cpu.sys 0.002 0.068 34.00 kernel.all.cpu.user 0.002 0.068 34.00 kernel.all.cpu.vuser 0.001 0.034 34.00 kernel.percpu.cpu.sys ["cpu1"] 0.004 0.099 24.75 kernel.all.load ["1 minute"] 0.810 18.75 23.15 xfs.perdev.allocs.free_block ["/dev/mapper/root"] 11906 197904 16.62 xfs.perdev.xstrat.bytes ["/dev/mapper/root"] 2.919 48.32 16.55 xfs.perdev.allocs.alloc_block ["/dev/mapper/root"] 26.88 270.0 10.04 kernel.percpu.intr ["cpu2"] 0.001 0.009 9.00 kernel.percpu.cpu.user ["cpu1"] 0.002 0.014 7.00 kernel.percpu.cpu.sys ["cpu3"] [..]

これによると、

当時 CPU や

ファイルシステムが

ビジーだったようです。

システムが正常に動作していた時間帯: 「 -S 」と「 -T 」の間 問題が起こっていた時間帯 : 「 -B 」と「 -E 」の間 データファイル名前

(20)

今回の調査の順番

違いが多い metrics を探す

→ pmdiff

→ kernel.percpu.cpu.sys / kernel.all.load / xfs.perdev.allocs.free_block

プロセスステータスの metrics を探す

→ pminfo -T -a <file> proc | less

その時間のプロセスステータスを読む

→ pmrep -a <file> -S @10:41:15 -T @10:43:18 \

-p proc.runq.runnable proc.runq.blocked | less

その時間に動いていたプロセスを比べる:

→ pminfo -f -a <file> -O @10:40:15 proc.psinfo.sname | grep R

→ pminfo -f -a <file> -O @10:41:19 proc.psinfo.sname | grep R

(21)

PCP cheat sheet

コマンド パッケージ 意味

yum install pcp-zeroconf - 基本的なインストール、設定

yum install pcp-system-tools - ツールをインストール

yum search pcp-pmda - pmdaパケージの表

systemctl status pmcd pmlogger pcp pmcdと pmloggerd が動いているかどうか

pminfo pcp metricsの詳細が見える

pmrep pcp-system-tools vmstatのように metrics を読む

pmchart pcp-gui metricsで図を作る

pcp {atop, dstat, free, iostat, ..} pcp-system-tools metrics を読む

(22)

まとめ

PCP

は簡単に使えるという事が分かりました。現在のデータや保存されたデー

タにもアクセスしました。

これから、 pcp-zeroconf を全部のシステムにインストールしたら、問題が発生

した時に調査出来ます。 kickstart などに書き込んだら、自動的にインストール

出来ます。

おすすめの man ページ: PCPIntro(1), pminfo(1), pmrep(1), pmdiff(1)

記事:

自分のソフトをモニターリング(英語)

Kbase:

Introduction to storage performance analysis with PCP (英語)

Index of PCP articles, solutions, tutorials and white papers(英語)

(23)

参照

関連したドキュメント

スライダは、Microchip アプリケーション ライブラリ で入手できる mTouch のフレームワークとライブラリ を使って実装できます。 また

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

自分は超能力を持っていて他人の行動を左右で きると信じている。そして、例えば、たまたま

たとえば、市町村の計画冊子に載せられているアンケート内容をみると、 「朝食を摂っています か 」 「睡眠時間は十分とっていますか」

父親が入会されることも多くなっています。月に 1 回の頻度で、交流会を SEED テラスに

 「フロン排出抑制法の 改正で、フロンが使え なくなるので、フロン から別のガスに入れ替 えたほうがいい」と偽

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば