InfluxDBがデータを保存しない!8086ポート閉じてInfluxDB SYN FLOOD攻撃とみなされてデータを保存しなくなった

スポンサーリンク

InfluxDBがまた2日くらいデータを蓄積しなくなった。現在はラズパイ3B+が母艦で各種センサーのデータをラズパイに大量に投げているので、SYN FLODDアタックと勘違いしてtcp_syncookiesを閉じられたり、バージョンが古くなって正常に動かなくなったりして、その都度対処しています。

ラズパイ3はやはりInfluxDBをまともに使うには力不足なのでしょう。ラズパイ4を母艦にするか検討中。

InfluxDBはラズパイ3では荷が重い?

InfluxDBが収集するデータを減らしたつもりですが、それでもtopコマンドを見るとInfluxDBがCPU使用率70~400%の高い数値でラズパイを圧迫している・・・

結構頻繁にデータを取得せずにGrafanaは↓このような表示になって困る。

InfluxDB

Possible SYN flooding on port 8000

InfluxDBがデータを収集しなくなったらdmesgのTCPの項目をチェックしてみる。

どうやら8000ポートが大量に送られてくるので攻撃されていると勘違いして遮断しているみたい。

ものすごい数のポート8000からの処理がTIME_WAITになっていてInfluxDBに保存されない状態だった。

特にアタックではなくデータ収集しているので許可する。net.ipv4.tcp_syncookiesの「1」で許可、「0」ではじく(攻撃されている場合)

1にしたらInfluxDBにデータが保存されるようになった。

が、暫く経つとまた「Bad Gateway(502)」の表示になる・・・

再起動して210秒後?にまたでてきた・・・

データの送信を減らして、CronなどのInfluxDBにインサートするデータの更新時間を10分と長めにしてなんとかしのぐ。

2日ほどずっとInfluxDBのデータが蓄積されない

2019/11/14 net.ipv4.tcp_syncookies=1のコメントアウトを削除して有効にしてみる。

これで持続的に攻撃されてると勘違いすることはなくなる?

influxコマンドで入ろうとすると・・・

このようなエラーになる・・・

Influxは正常に動いているみたいだけど、

8086へのPingは返答なし・・・

8083もポートが開いてない!!どういうこと?

正常だと以下のようになる。

InfluxDBのバージョンが少し古い

Influxdbのパッケージのバージョン。最新バージョンが1.7.7.1だから少し古い、バージョンアップする。

apt-get upgradeしたらすごく時間がかかった、アップグレードしてないツールがたくさんあったみたい。

InfluxDB1.7.9-1になったけど・・・まだポート8086が開いてない。

削除して再インストールする。

だめ・・・

と思ったら・・・しばらくしたら何事もなかったように戻った。

ポート8086が開いてる。

アップグレードしたから治ったのか?InfluxDBを削除後インストールしたからちゃんと動き出したのかは不明。

Grafanaもちゃんと見えるようになってきた↓世話が焼けます。

InfluxDB

でもやはりラズパイ3だと力不足です。

upgradeを自動化

今後も不具合が置きたら手動でアップグレードしたりするのが面倒なので、unattended-upgradesで自動化することにします。

ラズパイ4だと以下のようになりました。

unattended-upgrades

ラズパイ3だとなにやらさらに説明が出た。

設定

設定は以下のようにしました。stableのみアップグレードすることと、アップグレード後に2時に再起動する。

unattended-upgradesをインストールしなくても、Cronで以下のようにしてもいけるようです。(毎週月曜日の3時に実行)

IPアドレスが変わった場合

ラズパイのIPアドレスが変わって「Network Error: Bad Gateway(502)」と怒られる時もある。

 
Network Error: Bad Gateway(502)

InfluxDBの8086が開いていてGrafanaの設定だけの場合はGrafanaのデータベースのURLを変更する。根本的にInfuxDBが8086ポートを開いてない場合も同様のエラーが起きるのでその場合はInfuxDBで対処する。

DB設定でGrafanaのURLを変更

Grafanaの左メニューの歯車アイコン > Configration > Data Sourcesに進む。

以下のような画面になりますので、データベースを押す。データベースの数だけ設定していきます。

sudo vi /etc/hosts sudo vim /etc/hostname

HTTPのURLを変更する。

sudo vi /etc/hosts sudo vim /etc/hostname

Hostnameを設定する箇所は2つ

IPアドレス固定にしてない場合は、面倒なのでhostnameを使うといいと思いました。

例えばhostnameを「Raspi3B」にする場合は以下のようにhosts,hostnameの2つのファイルを編集します。

これでローカルからのみですが「http://Raspi3B:8086」でGrafanaにアクセスすることができるようになります。

結局のところTIME_WAITがたまるのでラズパイ4でInfluxDBを使う

Grafanaでちゃんとグラフが表示されても、常時ラズパイ3B+のInfluxDBのCPU使用率が高く、TIME_WAITにたくさん処理待ちが溜まっているのでラズパイ4に移行するしかなさそう。

どっちにしろこれ以上センサーを増やせないので今後はラズパイ3を母艦にはできなさそう。

InfluxDBのデータベースどうやって移動しようか?

ここで↓InfluxDBのバックアップ・リストア書いたけど時間がかかるので面倒だからWindowsでVirtualboxのUbuntu起動してInfluxDBのDBを取り出してコピーしてみます。

自宅環境センシングの2回目の記事として今回はラズパイ(Raspberry Pi)にデータベースのInfluxDBを入れて将来的にセンシングしたデータをInfluxDB保存していきます。そして次回は、GrafanaというデータをWebで美しく

以上、InfluxDBが正常に動作しないときに解決した方法です。またInfluxDBでトラブル置きた場合も追記していきます。