前書き
sosreportをサーバのOS構築後の情報取得やカスタマーサポートで使ってらっしゃる方は多いと思います。
しかし、デフォルトでは収集してくれない情報もあります。例えば、/etc/passwd や /etc/group など。
おそらくセキュリティ的な理由であえて取得しないようになっていると思われますが、せっかくのOS情報収集ツールなのに少し不便です。そこでsosreportをカスタマイズして、追加の情報も取得できるようにしてみました。
カスタマイズ方法
sosreport自体の説明や使い方はこちらでは省略します。
sosreportはPythonで書かれているため、カスタマイズして追加の情報を取得するには、Pythoneでpluginを書くことになります。
pluginの書き方はこちらを参照しました。
How to Write a Plugin
環境
- CentOS 7.5(仮想マシン)
- VirtualBox on Mac
今回、sosreportで追加で取得する情報
- /etc/passwdファイル
- /etc/groupファイル
- /etc/sudoersファイル
-
localectl status
のコマンド実行結果
単純にOSの設定ファイルをコピーするだけでなく、任意のコマンド結果も取得することができます。今回キーボードの設定をコマンドで取得することにしました。
sosreportの変更箇所
/usr/lib/python2.7/site-packages/sos/plugins/に下記のファイルを作成します。
from sos.plugins import Plugin, RedHatPlugin
class MyPlugin(Plugin, RedHatPlugin):
"""This plugin copies some stuff"""
def setup(self):
self.add_copy_spec([
"/etc/passwd",
"/etc/group",
"/etc/sudoers",
self.add_cmd_output("localectl status")
])
後は普通にsosreportを実行するだけです。
実行結果
取得したsosreportの結果ファイルを解凍すると以下のファイルが追加されています。
- etc/passwd
- etc/group
- etc/sudoers
- sos_commands/myplugin/localectl_status