LoginSignup
1
1

More than 3 years have passed since last update.

SplunkのPythonに文字コード変換の外部ライブラリを入れる

Last updated at Posted at 2020-03-24

今回もカスタムサーチコマンドの作成に関する投稿です。ここでは、カスタムサーチコマンドで使用する外部ライブラリのインストール方法を記載します。なお、この方法はメーカー非推奨なので、実施する場合は自己責任でお願いします。(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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1