質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Kibana

Kibanaとは、ElasticSearchをバックエンドとする、データを可視化するGUIツールです。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Elasticsearch

Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

Q&A

解決済

1回答

3553閲覧

logstashでelasticsearchへメールを取り込む際のkuromojiの適用方法

sysjojo

総合スコア325

Kibana

Kibanaとは、ElasticSearchをバックエンドとする、データを可視化するGUIツールです。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Elasticsearch

Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

0グッド

0クリップ

投稿2018/08/03 05:56

前提・実現したいこと

OpenStackのローカルネットワーク内で、Hinemos+Postfix/dovecot、Elasticsearch+kibana、Logstashをそれぞれ別のインスタンスで稼働させています(それぞれ、以下、監視サーバー、可視化サーバー、連携サーバーと呼ぶこととします。加えて監視対象となるサーバーもこれらとは別に動作しています)。

このとき、Hinemosが障害を検知して飛ばしたメールをElasticsearch+kibanaで可視化しようとしており、こちらのページを参考に以下のような設定をしています。

/etc/logstash/conf.d/logstash.conf@連携サーバー
input { #input settings imap { host => "192.168.253.99" #監視サーバーのIP port => 143 user => "alert" password => "alert_no_password" folder => "INBOX" type => "hinemos" secure => false delete => true check_interval => 30 } } filter { #filter settings } output { #output settings elasticsearch { hosts => [ "192.168.253.105:9200" ] #可視化サーバーのIP index => "hinemos-%{+YYYYMMdd}" } }
ElasticSearch APIコール(PUT _template/hinemos)@可視化サーバー
{ "template": "hinemos-*", "settings": { "index": { "analysis": { "tokenizer": { "kuromoji_user_dict": { "type": "kuromoji_tokenizer", "mode": "normal" } } } } }, "mappings": { "_default_": { "dynamic_templates": [ { "named_analyzers": { "match_mapping_type": "string", "match": "message", "mapping": { "fielddata": true, "analyzer": "kuromoji", "fields": { "keyword": { "type": "keyword" } } } } } ] } } }

発生している問題・エラーメッセージ

この時、Elasticsearchにはindexが作成されるのですが、その内容は次のようになっています。

ElasticSearch APIコール(GET /hinemos-20180803/_search?q=*)@可視化サーバー
{ "took": 25, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 4, "max_score": 1, "hits": [ { "_index": "hinemos-20180803", "_type": "doc", "_id": "NUf-_WQBZwW9FI3QeQPC", "_score": 1, "_source": { "date": "Fri, 03 Aug 2018 13:14:17 +0900", "content-type": "text/plain; charset=UTF-8", "x-original-to": "alert@surveyserver", "received": "from mail-server.test (surveyserver [192.168.253.99]) by hinemos (Postfix) with ESMTP id 4C69FC5854D; Fri, 03 Aug 2018 13:14:17 +0900", "@version": "1", "errors-to": "alert@surveyserver", "message": """ ファシリティID:web02 ファシリティ名:web02 ノード名:web02 OS:Linux OSリリース: OSバージョン:Linux web02 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 IPアドレス:192.168.253.112 監視種別:Hinemosエージェント監視 アプリケーション:watch_hinemosagent_all 内容: Hinemosエージェントは利用不可です """, "from": "Hinemos Admin <hinemos@surveyserver>", "to": "alert@surveyserver", "mime-version": "1.0", "@timestamp": "2018-08-03T04:14:17.000Z", "delivered-to": "alert@surveyserver", "reply-to": "Hinemos Admin <hinemos@surveyserver>", "type": "hinemos", "subject": "Hinemosメール通知(【危険】192.168.253.112)", "content-transfer-encoding": "base64", "message-id": "<1020158609.197.1533269657424@surverserver>", "return-path": "hinemos@surveyserver" } }, ***** 3件分省略 ***** } ] } }

messageに形態素解析を適用させているつもりなのですが、その気配がないので確認すべきログや設定でお気付きの箇所があればご教示頂ければありがたいです。
以下のログは確認していますが、おかしな点に気付けていません。

  • 可視化サーバー

/var/log/logstash/logstash-plain.log
/var/log/elasticsearch/elasticserach.log

  • 連携サーバー

/var/log/logstash/logstash-plain.log

試したこと

こちらを参考にelasticsearchのインデックステンプレートを違う内容に変えて見たりもしましたが、settings部分は効いているように思う(当初number_of_shards、number_of_replicasの指定がなかったため、Elasticsearchのステータスがyellowになっていた)のですが、mappings部分が効いてる気配がないので、設定が有効なのか、の判断も自信がありません。

変更内容。ElasticSearch APIコール(PUT _template/hinemos)@可視化サーバー
{ "template": "hinemos-*", "settings": { "index": { "number_of_shards" : 1, "number_of_replicas" : 0, "analysis": { "analyzer":{ "my_ja_analyzer": { "type": "custom", "tokenizer": "kuromoji_tokenizer", "char_filter": [ "icu_normalizer", "kuromoji_iteration_mark" ], "filter": [ "kuromoji_baseform", "kuromoji_part_of_speech", "ja_stop", "kuromoji_number", "kuromoji_stemmer" ] } } } } }, "mappings": { "_default_": { "dynamic_templates": [ { "named_analyzers": { "match_mapping_type": "string", "match": "message", "mapping": { "fielddata": true, "analyzer": "my_ja_analyzer", "fields": { "keyword": { "type": "keyword" } } } } } ] } } }

補足情報(FW/ツールのバージョンなど)

  • 監視サーバー

OS: CentOS Linux release 7.5.1804 (Core)
Hinemos: 6.1.0
Postfix: 2.10.1
dovecot: 2.2.10

  • 可視化サーバー

OS: CentOS Linux release 7.4.1708 (Core)
Elasticsearch 6.3.1
Elasticsearch-plugin: analysis-icu,analysis-kuromoji
kibana 6.3.2

  • 連携サーバー

OS: CentOS Linux release 7.5.1804 (Core)
Logstash: 6.3.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

Elasticsearch6からmappingsに複数のtypeを指定できなくなっているようで、logstashのimap pluginが設定したtypeと違う文字列を指定することでエラーが起きて取り込めなくなっていました。

  • imap pluginが定義したtypeと同じtypeを指定する
  • fielddata: trueを定義する

ことで取り込めるようになりました。

参考
https://discuss.elastic.co/t/rejecting-mapping-update-to-as-the-final-mapping-would-have-more-than-1-type/124316
https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

投稿2018/08/10 02:19

sysjojo

総合スコア325

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問