今回もカスタムサーチコマンドの作成に関する投稿です。ここでは、カスタムサーチコマンドで使用する外部ライブラリのインストール方法を記載します。なお、この方法はメーカー非推奨なので、実施する場合は自己責任でお願いします。(Splunk本体がSplunk上のPythonで動いており、勝手にライブラリをアップデートしたり、新しいライブラリを入れると、Splunk本体の動作に影響が出る場合があるという理由で非推奨らしい)
また、Ubuntu18.04で検証していますので他のOSでは使えない場合があることもご承知ください。
#目的
メール関連のログを見ていると、よく下のようなデータを見受けました。メールのタイトルや送信者名が日本語だと、このようにコード変換して出力されるみたいです。
=?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrGyhC?=
Splunkではこれらのコードはそのまま取り込まれます。更にSplunkにはコード変換用SPLがないため日本語に戻して検索することができません。
そこで、文字コードを変換するカスタムサーチコマンドを作成することを考えたのですが、自分がよく使用する文字変換ライブラリnkf for python
がSplunk上のPythonにインストールされていないことに気が付きました。色々調べて何とかSplunk上のPythonにnkf for python
のライブラリを入ることができたので、その手順を記載します。
#ライブラリの取得
兎にも角にもライブラリを手に入れなければ話になりません。今回はpipを使った方法で行います。まず、Ubuntuの端末で以下のコマンドを入れます。
# pip install nkf
ライブラリのインストール先を調べるために、Ubuntu上のPythonでsys.path
を実行します。
# python
・・・省略・・・
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/[ユーザ名]/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
このパスをたどると/home/[ユーザ名]/.local/lib/python2.7/site-packages/
フォルダに、nkf.so
ファイルが作られていると思います。これが、インストールされたnkf for python
のライブラリの本体です。
#Splunk上のPythonにインストール
次はSplunk上のPythonにnkf.so
を入れます。インストール先を調べるために、Splunk上のPythonでsys.pathを実行します。
# /opt/splunk/bin/splunk cmd python
・・・省略・・・
>>> import sys
>>> sys.path
['', '/opt/splunk/lib/python27.zip', '/opt/splunk/lib/python2.7', '/opt/splunk/lib/python2.7/plat-linux2', '/opt/splunk/lib/python2.7/lib-tk', '/opt/splunk/lib/python2.7/lib-old', '/opt/splunk/lib/python2.7/lib-dynload', '/opt/splunk/lib/python2.7/site-packages', '/opt/splunk/lib/python2.7/site-packages/bottle-0.12.17-py2.7.egg']
パスを見ると移動先のフォルダは同名の/opt/splunk/lib/python2.7/site-packages/
が適切と思われます。このフォルダにnkf.so
ファイルをコピーします。
# cp /home/[ユーザ名]/.local/lib/python2.7/site-packages/nkf.so /opt/splunk/lib/python2.7/site-packages/
#動作確認
本来ならカスタムサーチコマンドを作成して動作確認をすべきなのでしょうが、ただの動作確認だけならSplunk上のPythonで調べる方が楽なので、今回はこっちで動作確認します。
# /opt/splunk/bin/splunk cmd python
・・・省略・・・
>>> import nkf
>>> print nkf.nkf('-w','=?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrGyhC?=')
テストメール
ちゃんとライブラリを認識し文字変換ができるようになりました。後は、このライブラリを使いカスタムサーチコマンドを作成するだけですね。
#おわりに
他のOSだとパスが違う場合があると思ったので、念のためPythonでパスの調べる方法も載せておきました。他のライブラリのインストールも同様の方法でできると思いますが、今回のようにso
ファイルのコピーだけでできるとは限らないので注意してください。
何度も書きますがメーカー非推奨なので自己責任でお願いします。
動作環境
Ubuntu 18.04.4 LTS
Splunk 8.0.2.1