リアルタイム分析のためにDockerを使用してRedisをPrometheusとGrafanaでモニターする方法

9388 ワード


時系列データは、基本的には、時間順に格納された一連のデータであり、長期間にわたって連続的に生成される.これらの測定およびイベントは追跡され、監視され、ダウンサンプリングされ、時間をかけて集計される.イベントは、例えば、IOTセンサーデータであってもよい.すべてのセンサーは時系列データの源です.シリーズの各々のデータ点は、ラベルとしてソース情報および他のセンサ測定値を記憶する.あらゆるソースからのデータラベルは、同じ構造または順序に従わないかもしれません.
時系列データベースは、時間内の各ポイントのためのそのようなデータを格納して、検索するように設計されたデータベースシステムである.タイムスタンプ付きデータは、予想外の間隔で生成されるデータと同様に、定期的な間隔で生成されるデータを含むことができる.

時系列データベースを使用しますか?
  • アプリケーションが迅速に蓄積し、他のデータベースがそのスケールを処理するように設計されていないデータが必要な場合.
  • 金融または産業用.
  • あなたのアプリケーションが何十億もの記録のリアルタイム分析を実行する必要があるとき.
  • アプリケーションがミリセカンドタイムスケールでオンラインクエリを実行し、CPUの効率的なアドホッククエリをサポートする必要がある場合.

  • 既存の伝統的データベースに対する挑戦
    リレーショナルデータベースにまだ時系列データを格納する多数の解決策を見つけるかもしれません、しかし、彼らは全く非効率で、欠点の彼ら自身のセットで来ます.典型的な時系列データベースは、通常時系列データを管理するために造られます、したがって、それが直面する挑戦のうちの1つは時系列データの上に何らかの種類の計算を含むユースケースであります.つの良い例は、時系列データベースで生のビデオフィードを捕えることができました.あなたが顔認識のためにAIモデルを走らせたいならば、あなたは時系列データを抽出しなければならないでしょう.リレーショナルデータベースは不変の時系列データのために必要でないロックと同期のオーバーヘッドを運びます.これは、ingestおよびqueryの両方に要求されるパフォーマンスより遅くなります.スケーリングアウトするとき、それはまた、追加の計算リソースに投資することを意味します.これらのデータベースは、ラベルのための堅い構造を実施して、非構造化データに対応することができません.また、古いデータを掃除するためのスケジュールされた仕事も必要です.時系列ユースケースを超えて、これらのデータベースは他のユースケースにも使用されます.これは、時系列クエリの実行の過使用が他のワークロードに影響する可能性があることを意味します.

    何がredistimeseriesですか?
    ReDistimesSeriesは、時系列データを処理する必要性に対処する目的に組み込まれた時系列データベースです.これは、リレーショナルデータベースによって実施制限を削除し、収集し、管理し、スケールで時系列データを提供することができます.メモリのデータベースとして、redistimeseriesは標準的なノード上で毎秒50万レコード以上を摂取することができます.我々のベンチマークは、あなたが16人のRedisシャードのクラスタで、1秒につき11.5万の記録以上を摂取することができることを示します.
    redistimeseriesリソースが効率的です.RedistimesMilesを使用すると、ダウンサンプリングでコンパクトなデータにルールを追加することができます.たとえば、1日で10億以上のデータポイントを収集した場合、データを集計してデータを集計することで、データセットサイズを1440のデータポイント(24 * 60 = 1440)に減らすことができます.また、データ保持ポリシーを設定することができますし、それらを必要としない時間でデータを期限切れにします.RedistimesSeriesは、平均、最小、最大、合計、カウント、範囲、最初、最後に集計データをすることができます.サブミリセカンドレイテンシで10万個以上の集計クエリを実行できます.また、特定の時間範囲内のラベルに逆のルックアップを行うことができます.

    redistimeseriesのnotables機能が含まれます:
  • 高ボリューム挿入、低レイテンシ読み取り
  • 開始時刻と終了時刻
  • 集約されたクエリ( min , max , avg , sum , range , count , first , last , std . p , std . s , var . p , var . s )
  • 設定可能な最大保持期間
  • ダウンサンプリング/コンパクト化
  • セカンダリインデックス-各シリーズは、ラベルによってクエリを許可するラベル

  • プロメテウスなぜ?
    PromeTheusは、ツールキットを監視し、警告するオープンソースシステムです.それは時間シリーズデータ、すなわちメトリクス情報としてそのメトリックを収集し、格納する.メトリックは、時間とともに記録された変化を意味する時系列における数値測定である.これらのメトリックは、ラベルと呼ばれるオプションのキー値ペアと一緒に、それが記録されたタイムスタンプで格納されます.メトリックは、アプリケーションが特定の方法で動作している理由を理解する上で重要な役割を果たします.
    RemememeSeriesのためのPrometheusリモートストレージアダプタ
    Redistimeseries組織では、PrometheusとGrafanaを含む他のツールとRedistimeseriesを統合するのに役立つプロジェクトを見つけることができます.RemememeSeries用のPrometheusリモートストレージアダプタが利用可能であり、プロジェクトはhttps://github.com/RedisTimeSeries/prometheus-redistimeseries-adapter . ReDistimesSeriesをバックエンドデータベースとして使うのは基本的に読み書きアダプタです.ReDistimesSeriesアダプターはRemote Writeを通してPrometheusメトリックを受け取り、ReDistimesorsモジュールでREDISに書きます.

    始める

    必要条件:
  • gitをインストール
  • インストール
  • Dockerをインストールする

  • ステップ1.リポジトリをクローンする
     git clone https://github.com/RedisTimeSeries/prometheus- 
     redistimeseries-adapter
    

    手順2.Dockerの作成ファイルの確認
    このDockerは4つのサービスを定義します.
  • プロメテウス
  • アダプタ
  • グラファナ
  • レッドシス
  •  version: '3'
     services:
       prometheus:
         image: "prom/prometheus:v2.8.0"
         command: ["--config.file=/prometheus.yml"]
         volumes:
           - ./prometheus.yaml:/prometheus.yml
         ports:
           - 9090:9090
      adapter:
        image: "redislabs/prometheus-redistimeseries-adapter:master"
        command: ["-redis-address", "redis:6379", "-web.listen-address", "0.0.0.0:9201"]
      redis:
        image: "redislabs/redistimeseries:edge"
        ports:
          - "6379:6379"
      grafana:
        build: ./grafana/
        ports:
          - "3000:3000"
    

    プロメテウス
    プロメテウスサービスは直接ドッキングハブから引っ張られるイメージ「PROM/Prometheus」を使用します.そして、コンテナとホストマシンとを露光ポート9090にバインドする.プロメテウス構成ファイルは、ホストとコンテナにボリュームをマウントすることによってアクセスされます.

    ストレージアダプタ
    アダプターサービスはイメージを使用します.コンテナのデフォルトコマンドを設定します.

    レッドシス
    REDISサービスは、直接イメージを使用します.その後、コンテナとホストマシンを露出ポートにバインドします

    グラファナ
    Grafanaサービスは、カレントディレクトリのDockerFileから構築されたイメージを使用します.その後、コンテナとホストマシンを露出ポート3000にバインドします.

    ステップ3.Dockerを作成する
    ディレクトリを変更して以下のCLIを作成し実行します.
     docker-compose up -d
     ajeetraina@Ajeets-MacBook-Pro compose % docker-compose ps
      NAME                   COMMAND                  SERVICE             
     STATUS              PORTS
     compose-adapter-1      "/adapter/redis-ts-a…"   adapter             
     running             
     compose-grafana-1      "/run.sh"                grafana             
     running             0.0.0.0:3000->3000/tcp
     compose-prometheus-1   "/bin/prometheus --c…"   prometheus          
     running             0.0.0.0:9090->9090/tcp
     compose-redis-1        "docker-entrypoint.s…"   redis               
     running             0.0.0.0:6379->6379/tcp
    

    ステップ4.グラファナへのアクセス
    オープンhttp://hostIP:3000 Grafanaダッシュボードにアクセスします.デフォルトのユーザ名とパスワードはadmin/adminです.

    ステップ5.プロメテウスデータソースを追加
    左側サイドバーでは、「設定」オプションが表示されます.「データソース」を選択し、プロメテウスを選択します.

    をクリックします.
    ステップ6.プロメテウスデータソース
    すべてのプロメテウスダッシュボードの“インポート”をクリックします.

    ステップ7.Redisデータソースの追加
    もう一度、“データソース”をクリックし、redisを追加します.

    をクリックします.

    手順8.センサースクリプトを実行する
    Redisチームによって構築されたいくつかのデモスクリプトをドライブする時間です.まず、以下のリポジトリをクローンします
    Gitクローンhttps://github.com/RedisTimeSeries/prometheus-demos
    このレポは、prometheusとgrafanaとredistimeseriesの統合を紹介する一連の基本的なデモが含まれています.センサースクリプトを拾いましょう.
     python3 weather_station/sensors.py
    
    このスクリプトは、センサーの数の温度と湿度のランダム測定を追加します.
    Grafanaダッシュボードの右上隅に“パネルを追加”に移動し、温度と湿度の値を追加を開始します.

    手順9.へのアクセス
    開くhttps://HOSTIP:9090 プロメテウスダッシュボードにアクセスするには、これ以上の設定なしにセンサーの値です.

    このブログはもともと投稿されましたhere 著者によって.