リモナビ：fluentd でログをローカル環境にリアル転送

# fluentd によるログファイル転送
　ログのリアルタイム転送で **fluentd** が思い浮かばない人はいないでしょう。歴史もありますし、EFK（ElasticSearch, **fluentd**, kibana）などの用語すらあったりします。

　超有名ソフトなので機能説明は省略しますが、今回はこの flunetd によるログ転送の中継コネクションにリモナビを使うケースを紹介していきます。

:::note warn
<INS>ちょっとした厄介ごと</INS>
**fluentd** は利用のみならず、config 設定もとても容易で、ただ一点、ご存じの方も多いと思いますデータ転送と並列に実施される heartbeat に UDP 通信が利用されること。　<INS>デフォルトの 24224 ポートの公開は TCP|UDP 両方必要</INS>。インターネットを使って中継する際の唯一の面倒と言っていいのがこれ。
:::

　さて、中継にリモナビを使って、ローカルネットにログファイルを転送する上でこの課題、どう解決する？


# リモナビでローカルネットに転送
　**fluentd** は 転送元 out に forward、転送先 in に forward の、最も単純な設定を利用します。 はて？ IPポート 24224 の TCP, UDP ２つをリモナビで接続する？

:::note info
<INS>fluentd の設定による簡単な解決</INS>
 リモナビでは、１つの Sender で同一ポートを TCP|UDP で同時利用することができません。　ですが、問題ありません。そもそも fluentd の forward では、heartbeat機構をデータ転送の IPポート 24224 TCP で実現する設定があります。
 
 つまり、24224ポート TCP のみの中継コネクションさえ用意できれば、リアルタイム転送できるんです。
:::

　UDP を使わない方法も改めてするような話ではありませんが、知らない、やったことがない、って人も一定数いると思いますので、今回触れさせてもらいました。（リモナビを使う上で必要なことだから、なんですけどね）


### 接続構成
 <img width="720px" src="https://remonavi.com/img/remonavi_fluentd.png">

　接続構成図は中継にお決まり、[**RemoNavi Sender|SaaS|Receiver**] を配備して、転送元、転送先に **fluentd** を配備するだけの簡単構成。

　データベースに接続するかのように、転送先 fluentd を指定するだけ。 fluentd 転送で利用する TCP/IPポートは (24224) 。

 　ちょっと面倒なのは fluentd の config 設定。それについては、以下にズバリ設定例を掲載します。



# 具体的な設定

## 転送元の設定
 - 転送元 RemoNavi Sender の 設定
 　**fluentd** 設定に焦点をあてるので、**RemoNavi** の設定は最後に別掲します。
  
 - <INS>**転送元 fluentd 設定**</INS>
 今回は転送に nginx のアクセスログを利用しますので、 in は tail。
 out は forward で、ポイントは転送先。ここに **RemonNavi の Sender** を指定します。
    ``` fluent.conf
    <source>
        @type tail
        format ltsv
        path /var/log/nginx/access.log
        pos_file ./access.log.pos
        tag nginx.access
    </source>
    
    <match nginx.access>
        @type forward
        heartbeat_type transport       <-- heartbeat を TCPに
        heartbeat_interval 30          
        require_ack_response true
        <server>
            host localhost             <-- RemoNavi Sender の転送先IPアドレス
            port 9101                  <-- RemoNavi Sedner の転送先IPポート
        </server>
    </match>
    ```
    ```
    fluentd -c flunet.conf  　直起動ならこんな感じですが、起動管理はお任せします。
    ```

## 転送先の 設定
 - 転送元 RemoNavi Receiver の 設定
 　**fluentd** 設定に焦点をあてるので、**RemoNavi** の設定は最後に別掲します。
  
 - <INS>**転送元 fluentd 設定**</INS>
  転送を受信するので、in は foward。
  out は 紹介なので、受信したデータを表示するだけにします。
    ``` fluent.conf
    <source>
        @type forward
        port 24224                     <-- 今回はデフォルトの 24224 を利用します
        tag nginx.access
    </source>
    
    <match nginx.access>
        @type stdout　　　　　　　　　　 <-- 今回はファイル保存せず表示だけにします
    </match>
    ```
    ```
    fluentd -c flunet.conf  　直起動ならこんな感じですが、起動管理はお任せします。
    ```


## RemoNavi の設定
　設定はこれまでにも幾度か説明してきましたので簡略掲載します。

 1. **RemoNavi SaaS** にて 「SecureGateway（中継路）設定」をします。
 1. 転送元・環境にて
 上記 fluentd.confの設定では、fluentd と RemoNavi Sender を同一ホストにインストール
     1. **RemoNavi Sender** をインストール
     1. **RemoNavi Sender** の利用設定
         - 待受ポート番号は [<INS>9101</INS>] で利用設定
 1. 転送先・環境にて
     1. **RemoNavi Receiver** をインストール
     1. **RemoNavi Receiver** を利用設定

  <img width="720px" src="https://remonavi.com/img/remonavi_fluentd_setting.png">
  
-  Sender | Receiver は RemoNavi SaaS から DL してインストールする必要があります。 
-  インストール詳細はリモナビ社のドキュメントサイトの「運用マニュアル」を参照してください。
    　https://remonavi.com/?pos=saas_doc