はまやんはまやんはまやん

hamayanhamayan's blog

splunkで日本語を使って検索が効かなかった問題を解決した方法例

絶対忘れるから備忘録。
正攻法なのかはわからない。
正しい方法を知ってる人はぜひ教えてほしいです…

事象

こんな感じにちゃんと入ってるけど日本語みたいに検索しても出てこない。

原因

\uXXXXで入ってるからダメっぽい。

rawで見るとこんな感じ。\uXXXXの表記になってると普通に検索できない。
HECで送る場合は以下のようなリクエストになっている。
ここで議論されていることと同一。

curl https://[splunk]:8088/services/collector/event -H "Authorization: Splunk [token]" -d '{"event": {"japanese": "\u65e5\u672c\u8a9e"}}' -k

自分の場合はpythonで叩いていて、json.dumpsを使ってdata部分を作成しているとこうなった。

解決

\uXXXXエンコードせずにjsonに変換してやればいい。
具体的にはこの記事にあるようにjson.dumps時にensure_ascii=Falseをつけてやる。
CLI的には素直に

curl https://[splunk]:8088/services/collector/event -H "Authorization: Splunk [token]" -d '{"event": {"japanese": "日本語"}}' -k

みたいな感じになるようにすればいい。比較してみると、以下のように見た目は一緒なんだけど、

rawテキスト表記にしてみると、

のように違ってくる。rawテキストで見たときに、\uXXXXの表記ではなくそのままの文字になってなければ検索でもちゃんと引っかかってくる。