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

PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

PCP入門Performance Co-Pilotを使い始めましょうChristian HornTechnical Account Manager2019/06/05

Page 2: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

PCP入門2

アジェンダ● スピーカーの自己紹介● パフォーマンスモニタリングとは、現在のソフトの比較● PCPとは● PCP のインストール説明● PCPの基本的な仕組み● 紹介: pmrep, pminfo, pcp atop● PMDAをインストールする事● pmdiffを使いましょう

Page 3: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

自己紹介 : Christian Horn● 旧東ドイツ出身● 2001年から、ドイツのミュンヘンに住む

● @T-Systems: 技師、エンジニア● @ レッドハット ドイツ: TAM

● 2016年、東京へ引っ越す● @ レッドハット (株 ): AMC TAM● 問題の調査、 PCPの改善など

● 趣味:● 日本語の勉強、ベートーベンの第九を歌う事● 登山、サイクリング

1978

2019

1988

1995

2009

3 PCP入門

Page 4: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

4 PCP入門

パフォーマンスモニタリングとはモニタリングの種類:

1) アベイラビリティモニタリング:● あるシステムやサービスが動いているかどうか● 例: Zabbix, Nagios, IBM Tivoli

2)パフォーマンスモニタリング:システム関係の値を読む事● システムの負荷、ネットワークのスループット● 例: collectd, PCP

Page 5: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

5 PCP入門

現在のソフトの比較● sar は昔から Red Hat Enterprise Linux (RHEL) に入っているソフト

● 使い方が簡単● あるバージョンの sar で保存されたデータを分析するためには、

全く同じバージョンの sar をインストールする必要● 様々なオプションがある● sar PCPと の比較(英語)

● collectl は小さくて便利な Perl スクリプト。色々なケースで役に立つ、他のツールのような柔軟性に欠ける● Performance Co-Pilot (PCP) は RHEL なら、おすすめ● 最近、 prometheus というソフトが流行っている。 Kubernetes とよく統合されており、 OpenShiftに入っている。

Page 6: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

6 PCP入門

PCPとは● PCP は 20年以上前に誕生● データを収集:様々なシステムのソースから、例えばmariadb,

PostgreSQL, Apache。様々なエンジンの名前は Performance Metrics Domain Agents(PMDA)

● 集めたデータを読む為に:様々なツールがある● データの分析のため: pmdiff● データの視覚化のため: pmchart, pmrep

● RHEL7 以降には、 PCP のパフォーマンスデータは sosreport にも含まれている

Page 7: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

7 PCP入門

インストール● 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● [...]

Page 8: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

8 PCP入門

PCPの分解

[*] 現在、 grafanaのパケージは RHELに含まれていない

pmcd

pmda-lmsensors

pmda-postgresql

pmlogger

pmchart

pminfo

pcp atop

pmie

pcp-web[...]

grafana*

pmda-[...] [...]

pmda-oracle

pmda-podman

pmda-nginx

consumersPMDAs

Page 9: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

9 PCP入門

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

pmcd

pmlogger

pmchart

pminfo

pmie

[...] [...]

pmda-oracle

pmda-podman

pmda-nginx

consumersPMDAs

[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 [...]

Page 10: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

10 PCP入門

基本的なデーモンpcp-zeroconf をインストールした後で、いくつかのコンポーネントが設定され、起動している :● pmcd デーモンは PCP における通信の中心● pmlogger はパフォーマンスデータをディスクに保存● pmie はスクリプトを実行、警告をメールで送るなど● 様々な PMDA がパフォーマンスデータを集め、 pmcd に報告する。「 yum search pcp-pmda」で探す事が可能

Page 11: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

11 PCP入門

様々な 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 Clientpcp-pmda-bcc.x86_64 : Performance Co-Pilot (PCP) metrics from eBPF/BCC modulespcp-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 | xargsactivemq 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[root@rhel8 ~]#

Page 12: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

12 PCP入門

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"[..]

Page 13: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

13 PCP入門

アーカイブファイルを読もう● 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]#

Page 14: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

14 PCP入門

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 [...]

Page 15: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

15 PCP入門

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時のデータになる

Page 16: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

16 PCP入門

PMDAをインストール[root@rhel8 ~]# pminfo -f lmsensorsError: 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 lmsensorslmsensors.pch_skylake_virtual.temp1 value 41lmsensors.coretemp_isa.temp3 value 39lmsensors.coretemp_isa.temp2 value 38[...]

Page 17: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

17 PCP入門

問題を PCPで調べましょう● 電話が鳴っています:

「システム XYZ で、 10時 40分頃にパフォーマンスの問題があった」とのこと。● 以前、そのシステムに pcp-zeroconfをインストールした。 PCP のアーカイブファイルを使って、調べましょう。

Page 18: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

18 PCP入門

どの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で、調べる時間が無。

Page 19: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

19 PCP入門

pmdiffを使いましょうどのmetrics が調査の役に立つでしょうか。つまり、どの metrics が 10時 40分に異常でしたか。

[chris@rhel8 ~]# pmdiff -S 09:30 -T 10:30 -B 10:39 -E 10:42 20180815.09.28.020180815.09.28.0 20180815.09.28.0 Ratio Metric-Instance09: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」の間データファイル名前

Page 20: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

20 PCP入門

今回の調査の順番● 違いが多い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

Page 21: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

21 PCP入門

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 を読む

du -sh /var/log/pcp coreutils アーカイブファイルの大きさの確認

Page 22: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes

22 PCP入門

まとめ● 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(英語)● Side-by-side comparison of PCP tools with legacy tools ( )英語

Page 23: PCP 入門people.redhat.com/kfujii/cc2019/R304S1_RHC2019_PCP入門...Performance Co-Pilot (PCP) は RHEL なら、おすすめ 最近、prometheus というソフトが流行っている。Kubernetes