manticoresearch インストール（CentOS7）

いつか記事にできればと温めておりました。開発パッケージではありますが、ManticoreSearchにてLogstashからのデータインサート時における自動スキーマに対応したようです！

ということ早速試したいと思います。

# 1. 環境
OS: CentOS 7.9 (3.10.0-1160.92.1)
CPU: 8CPU（11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz）
Mem: 8GB

# 2. OS最新化
いつもの通り、最新化しておきます。
```bash
yum -y update
timedatectl set-timezone Asia/Tokyo
yum install vim wget git
vim /etc/selinux/config    #無効化しておきます。
reboot
```

# 3. manticoresearchインストール
試験的にfirewalldも止めています。
```bash
systemctl stop firewalld
systemctl disable firewalld
yum -y install https://repo.manticoresearch.com/manticore-repo.noarch.rpm
yum -y --enablerepo manticore-dev install manticore manticore-extra manticore-common manticore-server manticore-server-core manticore-tools manticore-executor manticore-buddy manticore-backup manticore-columnar-lib manticore-server-core-debuginfo manticore-tools-debuginfo manticore-columnar-lib-debuginfo  manticore-icudata
```

# 4. 設定ファイル編集

デフォルトだとlocalhostでポートが上がるので、サーバのローカルIPに変更します。
```bash
vim /etc/manticoresearch/manticore.conf

searchd {
    listen = XX.XX.XX.XX:9312             #サーバのIPに変更
    listen = XX.XX.XX.XX:9306:mysql　　　 #サーバのIPに変更
    listen = XX.XX.XX.XX:9308:http　　　　 #サーバのIPに変更
    log = /var/log/manticore/searchd.log
    query_log = /var/log/manticore/query.log
    pid_file = /run/manticore/searchd.pid
    data_dir = /var/lib/manticore
}
:wq
```

サービス起動します。
```bash
systemctl enable manticore
systemctl start manticore
```

動作確認用にMariadbのクライアントパッケージを入れます。
```bash
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
yum -y install MariaDB-client.x86_64
```

# 5. Logstash OSSのインストール

別Linuxノードから以下のコマンドを実行してLogstashをインストールします。
※対応しているLogstashが7.13以下となりますので、ご注意ください。
```bash
wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.12.1-x86_64.rpm
rpm -ivh logstash-oss-7.12.1-x86_64.rpm
```

# 6. Logstash設定ファイルを作成
テスト用のファイルを作成します。
```bash
vim /etc/logstash/conf.d/file.conf
input {
    stdin {
        codec => json
    }
}

output {
    stdout {
        codec => rubydebug
    }
    elasticsearch {
        index => "testindex0002"
        hosts => ["http://"ManticoreSearchのIP:9308"]
        ilm_enabled => false
        manage_template => false
    }
}
:wq
```

# 7. Logstash起動
では、Logstashを起動します
```bash
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file.conf
Using bundled JDK: /usr/share/logstash/jdk
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
//・・・・・・・・・・省略・・・・・・・・・
[INFO ] 2023-06-30 15:24:34.860 [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[INFO ] 2023-06-30 15:24:34.890 [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
```

標準入力からJSON形式の内容をコンソールに貼り付けます。
```bash
{ "amaount": 10, "quantity": 2}         #貼り付け

#結果
#↓
{
    "@timestamp" => 2023-06-30T06:24:38.451Z,
       "amaount" => 10,
      "quantity" => 2,
      "@version" => "1",
          "host" => "manticore-logstash"
}
```

成功しました！では、ManticoreSearch側でも見てみましょう。
```bash
mysql -P 9306 -u root -h "ManticoreSearchのIP"
mysql: Deprecated program name. It will be removed in a future release, use '/usr/bin/mariadb' instead
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 6.0.5 1399e6f6b@230629 dev (columnar 2.0.5 106d244@230620) (secondary 2.0.5 106d244@230620) git branch master...origin/master

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show tables;     # indexの確認
+---------------+------+
| Index         | Type |
+---------------+------+
| testindex0002 | rt   |
+---------------+------+
2 rows in set (0.000 sec)

MySQL [(none)]> select * from testindex0002;    # indexデータの確認
+---------------------+--------------------------+----------+--------------------+---------+----------+
| id                  | @timestamp               | @version | host               | amaount | quantity |
+---------------------+--------------------------+----------+--------------------+---------+----------+
| 4974179136428834818 | 2023-06-30T06:24:38.451Z | 1        | manticore-logstash |      10 |        2 |
+---------------------+--------------------------+----------+--------------------+---------+----------+
1 row in set (0.001 sec)

MySQL [(none)]>
```

いかがでしたでしょうか？

まだ開発パッケージであり正式リリースはされていないものの、処理速度などからOpenSearchやElasticSearchの代わりになりうるの可能性が飛躍したなと自分は感じました！