Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Grafana用のRedisデータソースで構築された3つの実際のアプリ

更新3/29/21:https://coronavirusapi.com/は最近、データへの無料アクセスを閉鎖し、登録済みのファーストレスポンダーのみが利用できるようにしました。残念ながら、これはコロナウイルスの症例視覚化プロジェクトのデモが機能しなくなることを意味しますが、Grafana WorldmapパネルにRedisTimeSeriesデータを表示する必要がある場合、ヒントは他の多くの実装にも役立ちます。

以前の投稿では、Grafana用の新しいRedisデータソースの使用方法を紹介して示しました:

  • Grafana用のRedisデータソースプラグインの紹介
  • Grafanaプラグインに新しいRedisデータソースを使用する方法

この投稿では、Redisに保存して、Grafanaで視覚化できる多くの興味深いデータセットについてのアイデアを提供するように設計された実際の例をいくつか紹介します。 3つの異なるアプリケーションについて説明します。

  1. 天気ダッシュボード
  2. コロナウイルス症例の視覚化
  3. ポップアップストアのデモ

1。天気ダッシュボード

世界にはさらに別の天気ダッシュボードが必要だと本当に思いますか?はい、そうです!

確かに、ほとんどの場合、私はあまり天気オタクではありません。天気がどういうものか気にしないことがよくあります。そして、私がそうするときでさえ、最高の天気ダッシュボードは通常私の家の外を見ているただの窓です。しかし、時々、写真を撮ったり、ドローンを飛ばしたりするために外出する暇を見つけたとき、私の内なる天気オタクが目覚めます。

もちろん、大きな問題はどこに行けばいいのかということです。ニュージャージーの私の家から車で数時間以内に興味深い場所がたくさんあり、天気はそれぞれ非常に異なる可能性があります。私が本当に欲しいのは、1つの画面に12か所の天気を表示するダッシュボードです。これにより、状況を一目で比較できます。重要なのは、お互いの近くの場所を比較したいだけではありません。

Grafana用のRedisデータソースで構築された3つの実際のアプリ

同様に重要なのは、数字を扱うのが大好きです。風景写真は、雲量が20%〜50%のときに最も効果的に機能することを知っています。私のドローンを飛ばすには、時速10マイル未満の風速が理想的で、時速10〜20マイルはタフで、時速20マイルを超えるものは危険です。ですから、このようなかわいい天気アイコンは私にはあまり役に立ちません:

そのことを念頭に置いて、Redisを使用して天気ダッシュボードを作成した方法を次に示します。

幸いなことに、生の気象データは現在、幅広い気象APIを介して広く利用可能であり、それらの多くは無料です(いくつかの制限があります)。 OpenWeatherMap APIを使用することにしました。その無料プランでは、必要なものがすべて揃っているためです。1時間あたり48時間の天気予報、1日あたり7日間の天気予報、現在の状況です。

APIからデータを取得し、RedisTimeSeriesモジュールと現在の状態を使用してRedisデータベースに時間/日予測を入れ、履歴の別の時系列セットに入れる簡単なPythonスクリプトを作成しました。

天気ダッシュボードは、2つの必須のダッシュボードルールに従います。

  1. すべてのデータを1つの画面に表示する必要があり、スクロールは必要ありません。
  2. ダッシュボードに表示される状況をできるだけ早く理解できるようにする必要があります。
Grafana用のRedisデータソースで構築された3つの実際のアプリ

ダッシュボードの上部には、1つの場所の現在の状態が表示されます。これは、プライマリまたはお気に入り、または利用可能な場所のリストから選択したものです(ダッシュボードの左上隅にGrafanaテンプレート変数選択リストがあります)。また、その場所での特定のアクティビティに適した期間も表示されます。 Grafanaを使用すると、気温の低/高ゾーン、風速の危険ゾーンを強調表示し、曇りの程度を表示し、日中と夜間の期間をマークできます。

下部のセクションでは、場所をアクティビティ別にグループ化して、簡単に比較できるようにしています。円が大きいほど、特定の場所での特定のアクティビティに適した時間が長くなります。

Grafana用のRedisデータソースで構築された3つの実際のアプリ

2。コロナウイルス症例の視覚化

私は旅行が大好きですが、2020年には何百万人もの人々が何ヶ月も家に留まりました(永遠ではないことを願っています!)。現在、多くの州が徐々に再開し始めているため、賢く旅行し、出発地と目的地の両方でCOVID-19の状況を理解することが非常に重要です。つまり、現在の状況だけでなく、長期的な傾向にも注意を払う必要があります。

これは、私のGrafana U.S. StatesCoronavirusDashboardが表示するものです。これは、RedisTimeSeriesモジュールにロードされたコロナウイルスAPIデータに基づいています。

Grafana用のRedisデータソースで構築された3つの実際のアプリ

標準のグラフ表現に加えて、データもマップ上に描画されます。 Redisデータソースプラグインは、Grafana Worldmapパネルでは公式にはサポートされていませんが、2つの簡単な手順で機能させることができます。

ステップ1: 変換「Labelstofields」を時系列出力結果に適用します:

Grafana用のRedisデータソースで構築された3つの実際のアプリ

ステップ2: マップパラメータ「ロケーションデータ」をテーブルモードに変更し、関連するフィールドをマップします。

Grafana用のRedisデータソースで構築された3つの実際のアプリ

これらの2つの手順により、時系列の値をマップ上の関連するポイントに固定できます。これは、RedisTimeSeriesの「geohash」ラベルによって設定されます。 「州」というラベルは、地図上の場所の名前を表示するために使用されます。

3。ポップアップストアのデモ

私はRedis5.0で導入された新しいデータ型であるRedisStreamsの大ファンであり、データ処理のためにキューを監視するための高速でシンプルなソリューションを探していました。私たちのチームは、Redisデータソースに取り組んでいる間、Re​​disGears(開発者がRedisでデータフローを実装する関数を記述して実行し、データの分散と展開を抽象化できる動的フレームワーク)を別のプロジェクトで検討し始め、それらを一緒に使用することにしました。ポップアップストアのこのデータパイプラインデモ用。

RedisGearsは、さまざまなタイプの入力データを操作するいくつかのタイプのリーダーをサポートしています。ストリームメッセージを監視するために、イベントモードでStreamReaderを使用しました。このモードでは、ストリームに追加された新しいメッセージによって生成されたイベントに応答してリーダーが実行されます。

# Add Time-Series
def tsAdd(x):
   xlen = execute('XLEN', x['key'])
   execute('TS.ADD', 'ts:len:'+x['key'], '*', xlen)
   execute('TS.ADD', 'ts:enqueue:' + x['key'], '*', x['value'])

# Stream Reader for any Queue
gb = GearsBuilder('StreamReader')
gb.countby(lambda x: x['key']).map(tsAdd)
gb.register(prefix='queue:*', duration=5000, batch=10000, trimStream=False)

StreamReaderは、トリガー方法を制御する複数の引数を受け入れます。この例では、リーダーが5秒ごと、または10,000メッセージを受信した後にトリガーされるようにします。最後のオプションであるtrimStreamは、実行後にストリームをトリミングしないことを指定します。

RedisTimeSeriesを使用して、着信メッセージの数とキューサイズのサンプルを保存しました。 Grafana用のRedisデータソースプラグインに関する紹介ブログ投稿で説明されているように、時系列はGrafanaで簡単に視覚化できます。

Grafana用のRedisデータソースで構築された3つの実際のアプリ

Redis Streams、RedisTimeSeries、RedisGears、およびRedis Data Sourceがどのように連携できるかを示すために、動的ダッシュボードを使用してポップアップストアのデモを作成しました。

Grafana用のRedisデータソースで構築された3つの実際のアプリ

このGrafanaダッシュボードには次のものが表示されます:

  • 利用可能な製品: 注文が完了すると減少するプロダクトキーの値
  • 顧客の注文、注文処理、および完了した注文: queue:customers、queue:orders、queue:completeストリームの長さ
  • 顧客のオーバーフロー: 顧客が送信した注文と完了した注文の違い
  • 注文する顧客: 5秒で作成された注文
  • キュー内の注文: 処理待ちの注文
  • 完了したフロー: 注文は5秒で完了しました

このプロジェクトのGitHubリポジトリを見て、負荷の生成方法、使用したRedisGearsスクリプト、TS.RANGEコマンドを使用してRedisTimeSeriesデータをクエリするようにRedisデータソースを構成する方法を確認してください。

結論

これらの3つの実際のシナリオは、さまざまなRedisモジュールでGrafana用のRedisデータソースを使用する方法を示しています。彼らがあなたにこのテクノロジーを使用してあなた自身のアプリケーションを構築するように刺激することを願っています。

あなたは良い仲間になります。 RedisデータソースプラグインはGrafanaリポジトリで公開されて以来、すでに10,000回以上ダウンロードされており、Grafanaダッシュボードを改善できる人気のコミュニティプラグインに含まれ、Redisクラスター、Sentinel、Unixソケットのサポートが追加されています。アクセス制御リスト(ACL):

Grafana用のRedisデータソースで構築された3つの実際のアプリ

しかし、それだけではありません。 Redis Techブログに注目して、Grafanaストリーミング機能とインタラクティブ機能を組み合わせてRedis-cliパネルでGrafanaを可観測性を超えたエキサイティングなプロジェクトについて学びましょう。


  1. UpstashRedisを使用したNetlifyグラフのグローバルキャッシュ

    昨日、NetlifyはNetlify Graphと呼ばれる新機能を発表しました。私の同僚は最近、写真の同様の欠落部分を強調し、Netlifyは解決に向けて良い一歩を踏み出しました。 基本的に、Netlify Graphは、開発者がWebアプリのGraphQL API呼び出しを構築するのに役立ちます。NetlifyDashboardでGraphQLリクエストを準備した後、シングルクリックでクライアントコードをプロジェクトに挿入できます。 Netlify関数をサードパーティサービスと一緒に使用することには欠点があります。クライアント側のリクエストは、最初にNetlifyバックエンド(関数)に送

  2. Android向けの16の最高の回復アプリ

    Android スマートフォンは、あらゆる難易度のさまざまなタスクを実行できます。そのうちの 1 つは、あらゆる電子スマート デバイスに不可欠なデータ ストレージです。また、スマートフォンは、いつでもあらゆる種類のデータにアクセスできるようにする、画像、ビデオ、電子メール、および機密のビジネス ドキュメントのポータブル センターです。ただし、Android スマートフォンは、他の電子機器と同様に、さまざまな理由で誤動作したり、データを失ったりする可能性があります。しかし、市場で入手可能な Android データ復元アプリを使えば、簡単に復元できます。今日、失われたデータを回復するために選択でき