月刊あんどりゅーくん(10月号)


(2) 知恵袋

今回は、Pacemakerのログを収集するツールをご紹介します。

Pacemakerでクラスタ環境を構築したりテストしたりしていると
いろいろとうまくいかないことがありますよね。
ぐーぐる先生にも聞いてみたけど、もうだめだ…という時は
Linux-HA Japanのメーリングリストや本家のメーリングリストに問い合わせてみましょう。

で、問い合わせをするときに、「どういうふうにうまくいかないのか」という症状の説明だけではなく

次のような情報も一緒に報告すると、なにが問題であるのか、どこを直せばいいのか
といったアドバイスをもらいやすくなります。

  • Pacemaker関連のバージョン情報(pacemaker, heartbeat, corosync, glue, agentsなど)
  • Pacemaker以外のバージョン情報(Python, glib, libxmlなど)
  • OSのバージョン情報
  • 設定ファイル(cib.xmlやha.cfなど)
  • ログファイル(ha-log,やsyslogの出力など)
  • 遷移グラフ(/var/lib/pengine/pe-*)

なんかたくさんあって大変そう、と思うかもしれませんが
Pacemakerにはhb_reportというログ収集ツールが付属しています。
(正確にいうと、cluster-glueのパッケージに含まれています)

[root@node01 ~]# which hb_report
/usr/sbin/hb_report
[root@node01 ~]# hb_report

usage: hb_report -f {time|"cts:"testnum} [-t time] [-u user] [-l file]
 [-n nodes] [-E files] [-p patt] [-L patt] [-e prog] [-MSDCZAVsvhd] [dest]

 -f time: time to start from or a CTS test number
 -t time: time to finish at (dflt: now)
 -d     : don't compress, but leave result in a directory
 -n nodes: node names for this cluster; this option is additive
 (use either -n "a b" or -n a -n b)
 if you run hb_report on the loghost or use autojoin,
 it is highly recommended to set this option
 -u user: ssh user to access other nodes (dflt: empty, root, hacluster)
 -l file: log file
 -E file: extra logs to collect; this option is additive
 (dflt: /var/log/messages)
 -s     : sanitize the PE and CIB files
 -p patt: regular expression to match variables containing sensitive data;
 this option is additive (dflt: "passw.*")
 -L patt: regular expression to match in log files for analysis;
 this option is additive (dflt: CRIT: ERROR:)
 -e prog: your favourite editor
 -M     : don't collect extra logs (/var/log/messages)
 -D     : don't invoke editor to write description
 -C     : remove the destination directory
 -Z     : if destination directories exist, remove them instead of exiting
 (this is default for CTS)
 -A     : this is an OpenAIS cluster
 -S     : single node operation; don't try to start report
 collectors on other nodes
 -v     : increase verbosity
 -V     : print version
 dest   : destination directory

よく使うオプションはこんな感じ。

-f ログ収集の開始時間を指定します。
-t ログ収集の終了時間を指定します。
-u ユーザ名を指定します。デフォルトはrootです。
-D レポートを作成する際にコメントをつけることができるのですが、この機能を無効にします。
-C 収集したログは、<dest>.tar.bz2に圧縮されますが、収集処理の途中に作成された一時ディレクトリを削除します。

例えば、13時20分から13時40分までのログを集めたい場合は次にようなオプションをつけてhb_reportを実行します。

[root@node01 ~]# hb_report -f 13:20:00 -t 13:40:00 -u root -D -C /tmp/hb_report

 node01: INFO: found log /var/log/ha-debug
 node02: INFO: found log /var/log/ha-debug
 node01: INFO: found log /var/log/messages
 node02: INFO: found log /var/log/messages
 The report is saved in /tmp/hb_report.tar.bz2

Thank you for taking time to create this report.

Heartbeatスタックの場合、ha.cfからクラスタ内のノード名を検索します。
上の例では、ノード名node01とnode02の情報を収集しています。
ノードを指定したい場合は、-nオプションを使用します。

なお、リモートホストにはsshで接続するので、ユーザのパスワードを入力する必要があるかもしれません。
hb_reportはクラスタ内のどのノードで実行してもかまいません。
Pacemakerが停止している状態でもログを収集することができます。

では、どんなログが収集されたのかtar.bz2の中身を見てみましょう。

[root@node01 ~]# tar tjfv /tmp/hb_report.tar.bz2

 drwxr-xr-x root/root         0 2011-10-04 13:35:32 hb_report/
 -rw------- root/root       253 2011-09-30 14:35:08 hb_report/ha.cf
 -rw-r--r-- root/root    125468 2011-10-04 13:35:32 hb_report/ha-log.txt
 -rw-r--r-- root/root      6538 2011-10-04 13:35:32 hb_report/description.txt
 -rw-r--r-- root/root       552 2011-10-04 13:35:26 hb_report/crm_mon.txt
 drwxr-xr-x root/root         0 2011-10-04 13:35:32 hb_report/node01/
 lrwxrwxrwx root/root         0 2011-10-04 13:35:31 hb_report/node01/ha.cf -> ../ha.cf
 -rw-r--r-- root/root     30561 2011-10-04 13:35:24 hb_report/node01/ha-log.txt
 -rw------- root/root     18884 2011-10-04 13:35:27 hb_report/node01/cib.xml

 省略

 drwxr-xr-x root/root         0 2011-10-04 13:35:27 hb_report/node02/pengine/
 -rw-r--r-- root/root      1124 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-6.dot
 -rw------- hacluster/haclient 596 2011-10-04 13:30:00 hb_report/node02/pengine/pe-input-1.bz2
 -rw------- hacluster/haclient 2142 2011-10-04 13:33:23 hb_report/node02/pengine/pe-input-4.bz2

 省略

ha-logとか(ha-log.txtに名前がかわってるけど)遷移グラフ(pengine/pe-*)とかがちゃんと収集されていますね!

解凍して、もうちょっと詳しく見てみましょう。

[root@node01 ~]# cd /tmp/
 [root@node01 tmp]# tar xfj hb_report.tar.bz2
 [root@node01 tmp]# cd hb_report
 [root@node01 hb_report]# ls -l

 合計 180
 -rw-r--r-- 1 root root   3259 10月  4 13:35 analysis.txt
 drwxr-xr-x 3 root root   4096 10月  4 13:35 node01
 drwxr-xr-x 4 root root   4096 10月  4 13:35 node02
 -rw-r--r-- 1 root root    552 10月  4 13:35 crm_mon.txt
 -rw-r--r-- 1 root root   6538 10月  4 13:35 description.txt
 -rw-r--r-- 1 root root   1267 10月  4 13:35 events.txt
 -rw-r--r-- 1 root root 125468 10月  4 13:35 ha-log.txt
 -rw-r--r-- 1 root root     43 10月  4 13:35 ha-log.txt.info
 -rw------- 1 root root    253  9月 30 14:35 ha.cf
 -rw-r--r-- 1 root root    106 10月  4 13:29 hostcache
 -rw-r--r-- 1 root root     23 10月  4 13:35 members.txt
 -rw-r--r-- 1 root root   5894 10月  4 13:35 sysinfo.txt

description.txtやsysinfo.txtを見ると、パッケージやOSのバージョンがわかるようになっています。

[root@node01 hb_report]# cat description.txt

 Please edit this template and describe the issue/problem you
 encountered. Then, post to
 Linux-HA@lists.linux-ha.org
 or file a bug at
 http://developerbugs.linux-foundation.org/

See http://linux-ha.org/wiki/ReportingProblems for detailed
 description on how to report problems.

Thank you.

Date: Tue Oct  4 13:35:32 JST 2011
 By: hb_report -f 13:20:00 -t 13:40:00 -u root -D -C /tmp/hb_report
 Subject: [short problem description]
 Severity: [choose one] enhancement minor normal major critical blocking
 Component: [choose one] CRM LRM CCM RA fencing heartbeat comm GUI tools other

Detailed description:
 ---
 [...]
 ---

Common system info found:
 heartbeat version: 3.0.5 (node: 7e3a82377fa8c88b4d9ee47e29020d4531f4629a)
 cluster-glue: 1.0.7 (601814740a68 default tip)
 resource-agents: # Build version: $Format:%H$
 CRM Version: 1.0.11 (614a4bc7ea74 stable-1.0 tip)
 package pacemaker is not installed
 package libpacemaker3 is not installed
 package pacemaker-pygui is not installed
 package pacemaker-pymgmt is not installed
 package pymgmt-client is not installed
 package openais is not installed
 package libopenais2 is not installed
 package libopenais3 is not installed
 corosync 1.3.1-1.1.el5 - (none) x86_64
 package libcorosync4 is not installed
 resource-agents 3.9.1-1.1.el5 - (none) x86_64
 省略
 package libdlm is not installed
 package libdlm2 is not installed
 package libdlm3 is not installed
 package hawk is not installed
 package ruby is not installed
 package lighttpd is not installed
 package kernel-default is not installed
 package kernel-pae is not installed
 package kernel-xen is not installed
 glibc 2.5-58 - Red Hat x86_64
 glibc 2.5-58 - Red Hat i686
 Platform: Linux
 Kernel release: 2.6.18-238.el5
 Architecture: x86_64
 Distribution: Description:      Red Hat Enterprise Linux Server release 5.6 (Tikanga)

crm_mon.txtをみるとhb_reportを実行したときのクラスタの状態がわかります。

[root@node01 hb_report]# cat crm_mon.txt

 ============
 Stack: Heartbeat
 Current DC: node02 (22222222-2222-2222-2222-222222222222) - partition with quorum
 Version: 1.0.11-614a4bc7ea74 stable-1.0 tip
 2 Nodes configured, unknown expected votes
 2 Resources configured.
 ============

Online: [ node01 node02 ]

 Resource Group: grpDRBD
 dummy01    (ocf::pacemaker:Dummy): Started node01
 dummy02    (ocf::pacemaker:Dummy): Started node01
 dummy03    (ocf::pacemaker:Dummy): Started node01
 Master/Slave Set: msDRBD
 Masters: [ node01 ]
 Slaves: [ node02 ]

また、ノード名でディレクトリが作成されていますが各ノードのログファイルだけではなく
実行状況(RUNNING)、DCノード(DC)を判断するためのファイルが作成されています。

[root@node01 hb_report]# ls -l node01

 合計 136
 -rw-r--r-- 1 root root     0 10月  4 13:35 RUNNING
 -rw-r--r-- 1 root root  1942 10月  4 13:35 cib.txt
 -rw------- 1 root root 18884 10月  4 13:35 cib.xml
 lrwxrwxrwx 1 root root    14 10月  4 13:36 crm_mon.txt -> ../crm_mon.txt
 -rw-r--r-- 1 root root    96 10月  4 13:35 crm_verify.txt
 -rw-r--r-- 1 root root     0 10月  4 13:35 dlm_dump.txt
 -rw-r--r-- 1 root root  1770  9月  9 22:00 drbd.conf
 drwxr-xr-x 2 root root  4096  9月  9 21:25 drbd.d
 -rw-r--r-- 1 root root   455 10月  4 13:35 events.txt
 -rw-r--r-- 1 root root 30561 10月  4 13:35 ha-log.txt
 -rw-r--r-- 1 root root    24 10月  4 13:35 ha-log.txt.info
 lrwxrwxrwx 1 root root     8 10月  4 13:36 ha.cf -> ../ha.cf
 -rw-r--r-- 1 root root    37 10月  4 13:35 hb_uuid.txt
 lrwxrwxrwx 1 root root    12 10月  4 13:36 hostcache -> ../hostcache
 lrwxrwxrwx 1 root root    14 10月  4 13:36 members.txt -> ../members.txt
 -rw-r--r-- 1 root root  3631 10月  4 13:35 messages
 -rw-r--r-- 1 root root    23 10月  4 13:35 messages.info
 -rw-r--r-- 1 root root    51 10月  4 13:35 permissions.txt
 lrwxrwxrwx 1 root root    14 10月  4 13:36 sysinfo.txt -> ../sysinfo.txt
 -rw-r--r-- 1 root root 43916 10月  4 13:35 sysstats.txt

 [root@node01 hb_report]# ls -l node02

 合計 208
 -rw-r--r-- 1 root root     0 10月  4 13:35 DC
 -rw-r--r-- 1 root root     0 10月  4 13:35 RUNNING
 -rw-r--r-- 1 root root  1968 10月  4 13:35 cib.txt
 -rw------- 1 root root 18960 10月  4 13:35 cib.xml
 lrwxrwxrwx 1 root root    14 10月  4 13:36 crm_mon.txt -> ../crm_mon.txt
 -rw-r--r-- 1 root root    97 10月  4 13:35 crm_verify.txt
 -rw-r--r-- 1 root root     0 10月  4 13:35 dlm_dump.txt
 -rw-r--r-- 1 root root  1770  9月  9 22:00 drbd.conf
 drwxr-xr-x 2 root root  4096  9月  9 21:25 drbd.d
 -rw-r--r-- 1 root root   812 10月  4 13:35 events.txt
 -rw-r--r-- 1 root root 94964 10月  4 13:35 ha-log.txt
 -rw-r--r-- 1 root root    24 10月  4 13:35 ha-log.txt.info
 lrwxrwxrwx 1 root root     8 10月  4 13:36 ha.cf -> ../ha.cf
 -rw-r--r-- 1 root root    37 10月  4 13:35 hb_uuid.txt
 lrwxrwxrwx 1 root root    12 10月  4 13:36 hostcache -> ../hostcache
 lrwxrwxrwx 1 root root    14 10月  4 13:36 members.txt -> ../members.txt
 -rw-r--r-- 1 root root  3255 10月  4 13:35 messages
 -rw-r--r-- 1 root root    23 10月  4 13:35 messages.info
 drwxr-xr-x 2 root root  4096 10月  4 13:35 pengine
 -rw-r--r-- 1 root root    51 10月  4 13:35 permissions.txt
 lrwxrwxrwx 1 root root    14 10月  4 13:36 sysinfo.txt -> ../sysinfo.txt
 -rw-r--r-- 1 root root 43138 10月  4 13:35 sysstats.txt

遷移グラフはDCノードで出力されます。
遷移グラフの解析方法はまた別の回で紹介します。

[root@node01 hb_report]# ls -l node02/pengine/

 合計 72
 -rw------- 1 hacluster haclient   600 10月  4 13:29 pe-input-0.bz2
 -rw-r--r-- 1 root      root       169 10月  4 13:35 pe-input-0.dot
 -rw------- 1 hacluster haclient   596 10月  4 13:30 pe-input-1.bz2
 -rw-r--r-- 1 root      root       169 10月  4 13:35 pe-input-1.dot
 -rw------- 1 hacluster haclient  1463 10月  4 13:33 pe-input-2.bz2
 -rw-r--r-- 1 root      root     10605 10月  4 13:35 pe-input-2.dot
 -rw------- 1 hacluster haclient  1975 10月  4 13:33 pe-input-3.bz2
 -rw-r--r-- 1 root      root      7032 10月  4 13:35 pe-input-3.dot
 -rw------- 1 hacluster haclient  2142 10月  4 13:33 pe-input-4.bz2
 -rw-r--r-- 1 root      root      4445 10月  4 13:35 pe-input-4.dot
 -rw------- 1 hacluster haclient  2287 10月  4 13:33 pe-input-5.bz2
 -rw-r--r-- 1 root      root      1665 10月  4 13:35 pe-input-5.dot
 -rw------- 1 hacluster haclient  2374 10月  4 13:33 pe-input-6.bz2
 -rw-r--r-- 1 root      root      1124 10月  4 13:35 pe-input-6.dot

コミュニティにログを投稿する場合は、とりあえずha-logと遷移グラフが空ファイルでないことを確認しておいてください。

[root@node01 ~]# tar tjfv /tmp/hb_report.tar.bz2 | grep ha-log

 -rw-r--r-- root/root    125468 2011-10-04 13:35:32 hb_report/ha-log.txt
 -rw-r--r-- root/root     30561 2011-10-04 13:35:24 hb_report/node01/ha-log.txt
 -rw-r--r-- root/root        24 2011-10-04 13:35:25 hb_report/node01/ha-log.txt.info
 -rw-r--r-- root/root        43 2011-10-04 13:35:32 hb_report/ha-log.txt.info
 -rw-r--r-- root/root     94964 2011-10-04 13:35:25 hb_report/node02/ha-log.txt
 -rw-r--r-- root/root        24 2011-10-04 13:35:25 hb_report/node02/ha-log.txt.info

 [root@node01 ~]# tar tjfv /tmp/hb_report.tar.bz2 | grep pengine

 drwxr-xr-x root/root         0 2011-10-04 13:35:27 hb_report/node02/pengine/
 -rw-r--r-- root/root      1124 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-6.dot
 -rw------- hacluster/haclient 596 2011-10-04 13:30:00 hb_report/node02/pengine/pe-input-1.bz2
 -rw------- hacluster/haclient 2142 2011-10-04 13:33:23 hb_report/node02/pengine/pe-input-4.bz2
 -rw-r--r-- root/root          4445 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-4.dot
 -rw-r--r-- root/root          7032 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-3.dot
 -rw------- hacluster/haclient 1463 2011-10-04 13:33:16 hb_report/node02/pengine/pe-input-2.bz2
 -rw-r--r-- root/root          1665 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-5.dot
 -rw------- hacluster/haclient 2287 2011-10-04 13:33:28 hb_report/node02/pengine/pe-input-5.bz2
 -rw-r--r-- root/root           169 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-1.dot
 -rw-r--r-- root/root           169 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-0.dot
 -rw------- hacluster/haclient 1975 2011-10-04 13:33:19 hb_report/node02/pengine/pe-input-3.bz2
 -rw------- hacluster/haclient 2374 2011-10-04 13:33:30 hb_report/node02/pengine/pe-input-6.bz2
 -rw------- hacluster/haclient  600 2011-10-04 13:29:59 hb_report/node02/pengine/pe-input-0.bz2
 -rw-r--r-- root/root         10605 2011-10-04 13:35:27 hb_report/node02/pengine/pe-input-2.dot

hb_reportはcluster-glueのパッケージに含まれていますが
Pacemaker 1.1系ではcrm_reportコマンドがpacemakerのパッケージに含まれています。
Pacemaker 1.0.11にもバックポートされているので一応使えます。

使い方はhb_reportとほとんど同じです。

[root@node01 ~]# crm_report -f "2011-10-4 13:20:00" -t "2011-10-4 13:40:00" \
                                -H -u root --dest /tmp/crm_report

 node01:  WARNING: The tarball produced by this program may contain
 node01:           sensitive information such as passwords.
 node01:
 node01:  We will attempt to remove such information if you use the
 node01:  -p option. For example: -p "pass.*" -p "user.*"
 node01:
 node01:  However, doing this may reduce the ability for the recipients
 node01:  to diagnose issues and generally provide assistance.
 node01:
 node01:  IT IS YOUR RESPONSIBILITY TO PROTECT SENSITIVE DATA FROM EXPOSURE
 node01:
 node01:  Calculated node list: node01 node02
 node01:  Collecting data from node01 node02  (2011年10月04日 13時20分00秒 to 2011年10月04日 13時40分00秒)
 node01:  Including segment [1-268] from /var/log/ha-debug
 node02:  Including segment [1-768] from /var/log/ha-debug
 node01:
 node01:  Collected results are available in /tmp/crm_report.tar.bz2
 node01:
 node01:  Please create a bug entry at
 node01:      http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker
 node01:  Include a description of your problem and attach this tarball
 node01:
 node01:  Thank you for taking time to create this report.
 node01:


収集しているログもhb_reportとほぼ同じなので、しばらくはhb_reportでいいんじゃないかという気がします。
メーリングリストにログを投稿する際は、hb_reportを活用してみてください。

 

では、今月はこれにてどろん!εεεεεヾ(*´ー`)ノ

困ってるはよーくわかるんだけどさ、一週間分のsyslogをCD-ROMでご送付いただきましてもちょっと~。

プラハで開催されるLinuxCon Europe 2011に間借りして
https://events.linuxfoundation.org/events/linuxcon-europe  

F2Fでミーティングしよう!と、らーすくんが言ってた例のやつですが
中止?と思いきや、やっぱり開催するようです。

CFP: HA Mini-Conference in Prague on Oct 25th
http://www.gossamer-threads.com/lists/linuxha/dev/75239

あんどりゅーくんも登場の予定。
http://twitter.com/#!/beekhof/status/119199660995903489

アジェンダは特に決まっていないので、集まってきた人たちから
質問や提案があればそれを話し合うという感じになりそうです。
10月25日、プラハに行かれる方はぜひ。
あんどりゅーくんとらーすくん、ちら見するだけでも。

では、今回もリリース情報と知恵袋です。

(1) リリース情報
Announce: Two project changes
http://www.gossamer-threads.com/lists/linuxha/pacemaker/75039

あんどりゅーくんからのお知らせです。
– でじゃんくんが作っているcrmシェルは別プロジェクトになります。
– PacemakerがIPC(inter-process communication)やスケジューリングに使っているライブラリを変更します。

確かに、ツールは別プロジェクトとしてわけていたほうがわかりやすいのかも。
でも、できればプロジェクトはわけないでほしいなと思ったりもします。
Pacemakerは関連するパッケージがたくさんあってただでさえ複雑なのでこれ以上増やしてほしくし、
でじゃんくんの作っているcrmシェルとあんどりゅーくんの作っているcrmd,pengineは激しく依存関係があるので
リリースのタイミングとかはあわせてほしいなあ。
まあでも、でじゃんくんはマメなので大丈夫なのかなと思いつつ楽観的に見守ります。

一方、ライブラリの変更はかなりイタイ。
下手すると、メッセージングレイヤとしてHeartbeatが使えなくなる可能性があります。
Heartbeat 3系はDRBDを作っているLinbitがメンテナンスしてるんですが
Linbitはこのへん、どう思っているんですかねえ。
DRBDの場合、Pacemaker+Heartbeatの組み合わせが鉄板なのかなあと思っていたのですが。
あんどりゅーくん曰く、「互換性残せるように頑張ってみる」とのことですがホントかよ…。

ちなみに、上記2点の変更はPacemaker 1.1系以降に影響してきます。
Pacemaker 1.0系には変更が入らないので、Pacemaker 1.0 + Heartbeat 3系の組み合わせにも影響はありません。
ああ、LinbitもPacemaker 1.1系ではCorosyncに乗り換えていくのかもしれないですねえ。
ころちゃん、最近はお腹が痛くなったりしていないのかねえ。

Pacemaker 1.1系にも魅力的な機能がいろいろ追加されているのですが(フェイルカウントの自動削除とかリソース配置の優先度付けとか)
安定性を重視するのであれば、Pacemaker 1.0.x + Heartbeat 3.0.x がおすすめです。

さて、GUI関連でもプロジェクトが変更されました。

DRBD-MC 0.9.9のリリース
http://www.gossamer-threads.com/lists/linuxha/users/75156

LCMC(Linux Cluster Management Console) 1.0.0のリリース
http://www.gossamer-threads.com/lists/linuxha/users/75271

LCMCはDRBD-MCのforkということですが、実質的にDRBD-MCは開発停止とみていいと思います。
DRBD-MCを開発していたRastoさん(らすとさん?)がLCMCを引き継ぐので、今後はLCMCの動向をおっかけたいと思います。
https://github.com/rasto/lcmc

LCMCのクライアント、スクリーンショットを見てみたんですけど、ちょ!ロ ゴ www

このロゴはLinux-HA Japanでつくったんですよ!
ロゴ、着々と世界制覇中!
あんどりゅーくんもそうなんですけど、色を青っぽくかえちゃうのはなんで?
赤だと「危険!」っていうイメージがあるからでしょうか?

Pages: 1 2

Comments are closed.