share facebook facebook2 twitter menu hatena pocket slack

2015.09.01 TUE

crm_monコマンドのエラーメッセージを自動削除するスクリプト

WRITTEN BY三浦 剛慈

pacemaker+corosyncでファイルオーバーを設定していると、フェイルオーバー発生時に・・・

# crm_mon -1
============
Last updated: Thu Jul 16 23:03:29 2015
Stack: Heartbeat
Current DC: server02 (XXX-XXXX-XXX-XXXX-XXXXXXXXX) - partition with quorum
Version: 1.0.11-XXXXXXXXXXXXXXXXX
2 Nodes configured, unknown expected votes
1 Resources configured.
============

Online: [ server01 server02 ]


Failed actions:
    service_start_0 (node=server01, call=15, rc=-2, status=Timed Out): unknown exec error
    service_start_0 (node=server02, call=15, rc=-2, status=Timed Out): unknown exec error

crm_monコマンドFailed actionsのエラーメッセージが残ることがたまにあり、そのままにしておくとフェイルバックが出来なくなるので

#crm_resource -H server01 -r service -C
#crm_resource -H server02 -r service -C

上記コマンドを実行して削除する必要があります
いちいちサーバに乗り込んでcrm_monコマンドで削除対象のサーバ名(node名)やサービス名を確認したりするのは辛いし、
そう滅多に実行する機会が少ないので、コマンド名やパラメータを忘れてしまう事も多いので・・・

それを自動化するスクリプトを(ざっくりですがw)書きました(python製)

#!/usr/bin/env python
import commands
import os

failflg = False

crm_mon_print_list = (commands.getoutput('crm_mon -1')).replace(',','').split('n')
for crm_mon_print in crm_mon_print_list:
    if failflg == True:
        faillog    = (crm_mon_print.strip()).split(' ')
        hostname   = faillog[1].split('=')[1]
        servicename= (faillog[0].split('_'))[0]
        os.system("crm_resource -H " + hostname + " -r " + servicename + " -C")

    if "Failed actions:" in crm_mon_print:
        failflg = True

元記事はこちら

crm_monコマンドのエラーメッセージを自動削除するスクリプト