# 「Cloudwatch input plugin」によるログの読込み状況保持/引継ぎについて

**URL:** <https://discuss.elastic.co/t/cloudwatch-input-plugin/272670>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [May 11, 2021, 10:10am UTC](https://discuss.elastic.co/t/cloudwatch-input-plugin/272670 "2021-05-11T10:10:54Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nishisaka](https://avatars.discourse-cdn.com/v4/letter/n/e47c2d/32.png) [@Nishisaka](https://discuss.elastic.co/u/Nishisaka)\
**Post date:** [May 11, 2021, 10:10am UTC](https://discuss.elastic.co/t/cloudwatch-input-plugin/272670/1 "2021-05-11T10:10:55Z")

</div>

AWSのCloudWatchメトリクスを収集するため、  
EC2インスタンス(Linux)にLogstash(7.11)をインストールし、  
「Cloudwatch input plugin」を利用してメトリクスの収集を行おうとしております。

現状、Logstashサーバ2台を現用/待機構成(コールドスタンバイ)としており、  
障害時に待機系に切替わった際は、待機系にはフェールオーバ以降に発生したメトリクスから収集することになります。

現用系ダウン時～待機系起動までの間のメトリクスを収集したく、  
現用系にて最後に読み込んだ直後のメトリクスから、  
待機系にて収集を再開したいと考えております。  
上記実現にあたり、読込み状況の保持、および引継ぎをする方法をご教示いただけないでしょうか。  
※「Cloudwatch input plugin」には、Sincedbのような設定が存在しないですが、  
例として下記のように、「Cloudwatch input plugin」のrubyスクリプトを修正すれば  
読込み状況の引継ぎが実装可能ではと考えました。  
しかし、どのように修正すれば良いのかが分からず困っております。  
もし、ご存じの方がいらっしゃいましたらご教示頂けませんでしょうか。

【参考rubyスクリプト】  
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-cloudwatch- 2.2.4/lib/logstash/inputs/cloudwatch.rb

よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![bruce\_shimizu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bruce_shimizu/32/68786_2.png) [@bruce\_shimizu](https://discuss.elastic.co/u/bruce_shimizu)\
**Post date:** [June 2, 2021, 1:52am UTC](https://discuss.elastic.co/t/cloudwatch-input-plugin/272670/2 "2021-06-02T01:52:20Z")

</div>

Logstash自体に、現用/待機といったクラスタの様な構成、つまりクラスタ内で状態を共有する様な仕組みがないので、

```
現用系ダウン時～待機系起動までの間のメトリクスを収集したく、
現用系にて最後に読み込んだ直後のメトリクスから、
待機系にて収集を再開したいと考えております。

```

といったことを厳密に保証する様なことは実現はできないです。これはPluginが何であれ同じことです。

Logstashの実装上、Input -\> Internal Queue -\> Filter/Outputとなるので、このInternal Queueに入った分のメッセージは、Logstashがクラッシュしたら消えてしまします。通常は、このInternal QueueはMemoryですが、Persistent Queueという機能でDiskに持つことで、メッセージロスを「ある程度」防ぐことは可能です。

> **[Execution Model | Logstash Reference \[7.13\] | Elastic](https://www.elastic.co/guide/en/logstash/current/execution-model.html)**

ただし、これも1台のLogstashインスタンスにおける話で、複数台のLogstash間で状態を引き継ぐことは仕組み上出来ないです。

一つのアイデアとして、Persistent QueueのDiskを外部ストレージに持って、現用系のLogstashが落ちたら、待機系で再度そのDiskをマウントして、そこから読み出すと言うことは理論上は可能ですが、動作が保証されているもの（サポートされている使われ方）ではないです。

また、上記のInternal Queueに溜まっている量を抑えることで、障害児のロストを少なく出来ますし、逆にInternal Queueに一度に取り込む量を多くすることで、パフォーマンスの向上を図ることができますが、この辺りはLogstashの典型的なチューニング項目になります。

> **[Tuning and Profiling Logstash Performance | Logstash Reference \[7.13\] | Elastic](https://www.elastic.co/guide/en/logstash/current/tuning-logstash.html)**

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 30, 2021, 1:52am UTC](https://discuss.elastic.co/t/cloudwatch-input-plugin/272670/3 "2021-06-30T01:52:34Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
