Z170 Pro4に64GBのメモリ

ASRock Z170 Pro4を使っているのだけど、以前は32GBまでのメモリだったような気がするのだけど、そのサイトの仕様には64GBが最大上限になっているので、増設を試みる。

64GBにするためには16GBのメモリが4枚必要になるのだけど、NTT-X Storeで2枚で14,980円で売っていたので、2個買った。買ったやつはAX4U2666316G16-DBGというもの。今使っているメモリもNTT-Xで購入したのだけど、NTT-Xはクーポンを提供しているものがあったりするので、そういうものは結構、最安値になるので利用している。

DDR4 2666がZ170 Pro4のサイトに記述されていなかったので、ちょっと不安に感じもしたけど、たぶん、そのひとつ下でも動くだろう考えて、メモリを交換した。電源を入れたら普通に認識していたので、特に問題なさそう。

FessでIngestのパイプラインを使う

ちょっと前に対応するコードは入れていたのだけど動いていなかった…。ということで、次の13.2.1から使えるようになるはずです。

どう使うかというと、まずはパイプラインを以下のようにElasticsearchに設定しておく。(zip版で試したので9201ポート)

$ curl -XPUT -H "Content-Type: application/json" localhost:9201/_ingest/pipeline/split -d '{
  "description": "Splitter",
  "processors": [
    {
      "split": {
        "field": "tags",
        "separator": ","
      }
    }
  ]
}' 

あとは、Fessの管理画面でクロール設定の設定パラメータのところに

config.pipeline=split 

を記述しておけば、そのクロール設定でクロールしたものにはElasticsearch上のパイプラインが適用されます。

今回は動作確認をしたいので、設定パラメータに

field.value.tags=aaa,bbb

も入れておく。これでtagsフィールドに強制的にaaa,bbbの文字列が入る。入れるけど、パイプラインが適用されて配列として最終的にはインデックスに入る想定。

あとはクロールを実行して

$ curl -XPOST -H "Content-Type: application/json" localhost:9201/fess.search/_search?pretty
...
           "tags" : [
             "aaa",
             "bbb"
           ], 

という感じでインデクシングされたことが確認できる。

Fess 13.2のリリース

今回は、Elasticsearch 7.2に対応したくらいでしょうか。それ以外だと、G1GCのパラメータ調整を行ったりしてます。たまにOOMが出たりもするので…。商用でも13系を使っていきたいので、そろそろいけるかなという感じです。

ここからダウンロードできます。ご利用ください。

Fess 13.1のリリース

今回は特に目新しい新機能はないと思うけど、変更点としては以下の感じ。

  • Elasticsearch 7.1系対応
  • Label Updaterをジョブに追加
  • 韓国語のNoriに対応
  • elasticsearch-httpclientの独自スレッドプール追加
  • サジェスト表示がバグっていたので修正

といった感じだろうか。ラベルの更新については今まで、ラベルの設定を変えたけど、再インデクシング以外に反映できないという状態だったのだけど、このバージョンからはスケジューラのジョブの中にLabel Updaterがあるので、それを実行すればラベルの更新をしてくれる。

という感じですが、ここから利用可能です。

ElasticsearchのログをGKEでStackdriverで取り込む

GKEとかで普通にElasticsearchを使って、コンソールのログをStackdriverで回収してもらえば、Logs Viewerで見ることができると思うけど、ログレベルがINFOかERRORの2択になる。つまり、WARNとかのログはINFOとして出てしまう。これはStackdriverに投げているfluentdがログメッセージのパースができなければ、stdoutならINFOで、stderrならERRORみたいな決め方になっているためで、fluentd-configmap.yamlあたりをみればわかる。

それではどうするか?だけど、fluentd-configmap.yamlには

format /^(?<severity>\w)(?<time>\d{4} [^\s]*)\s+(?<pid>\d+)\s+(?<source>[^ \]]+)\] (?<log>.*)/

という感じでパースするフォーマットが書いてあるのでこれに合わせる必要がある。<time>\d{4}って、何を指しているのだろうとかも思ったけど、MMddだった。

Elasticsearchのでデフォルトのログフォーマットとかはlog4j2.propertiesを見ると

appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n

という感じになっていると思うけど、この辺のログフォーマットを

appender.console.layout.pattern = %.-1p%d{MMdd HH:mm:ss.SSSSSS} 1 [%node_name] %m%xThrowable{separator(|)}%n

みたいな感じで、patternたちを変更しておく。ログレベルが始めの1文字で表されている。pidはとりあえず適当に1とかにしたけど、きちんと取得してもよいのかも(試してない)。あとは、スタックトレースが1行内に収めないと、Stackdriver上で分解されれるので1行にしておく。

これも普通にぐぐると、エージェントを組み込むとか、GKEのfluentdの設定をカスタマイズするとかがほとんどな気がするので、このログフォーマット問題は結構ハマる気がする…。