大規模データパイプラインのモニタリング

ShareThis は急成長しています! 私がこの会社で働いているこの4年間で、私たちは1部屋の会社から多くの部屋を持つ会社に成長しました。 また、無料の食事、豪華なオフィス、社員旅行など、典型的なスタートアップ企業の特典もすべて得られるようになりました。

価値を創造すると楽しいことが起こりますが、エンジニアリングには複雑さというコストがかかります。 現在、私たちは1日あたりテラバイトのデータをリアルタイムで生成しています。 今後1、2年のうちにさらに多くのデータを取り込み、データフローを2倍、3倍にしたいと考えています。 同僚に私たちがやっていることを話すと、「すごい」という反応が返ってくるのは嬉しいことです。

Kafka、Cassandra、Aerospike、BigQueryなどのツールを使えば、4年前よりもスケールアップが容易になっていますが、問題はインジェストではありません。 難しいのは、"そこにあるデータが正しいことをどうやって知っているのか?""すべてのデータがそこにあることをどうやって知っているのか?"と聞かれたときです。

"It just is" - 十分ではありません。

このような質問に答えるために、私たちはすべてのデータパイプラインを使って、かなり無償のモニタリングを行っています。 ありがたいことに、私たちのコードは共通のフレームワーク上に構築されているので、あるライブラリにモニタリングを追加すると、そのライブラリを使用しているすべてのアプリケーションに動的に追加されます。 素晴らしいですね。

もしかしたら、この技術のちょっとした内訳が、これからやろうとしている人の助けになるかもしれません。

グラファイト:Graphiteは、"グラフやダッシュボードをレンダリングするDjangoベースのWebアプリケーション "です。 CarbonとWhisperという他の2つのプロジェクトの上に構築されています(両プロジェクトはGraphiteの一部です)。 Carbonは、アグリゲーションとキャッシュのレイヤーとして機能し、UIをレスポンシブにします。 Whisperは「固定サイズのデータベースで、RRD(round-robin-database)に似たデザインと目的を持っています。Whisperは、RRD(round-robin-database)に似た設計と目的を持つ固定サイズのデータベースであり、数値データの長期保存を高速かつ確実に行うことができます。Whisperでは、最近のデータの高解像度(1ポイントあたりの秒数)を低解像度に劣化させて、過去のデータを長期的に保存することができます。"

Codahale:Codahale氏のライブラリは、実際に様々なサービス(Gangliaなど)のコネクタを備えています。 ここでは、Java Graphiteのコネクタを使っていますが、これで問題ありません。 メトリクス・オブジェクトは動的に作成することができ、基本的な統計、ヒストグラム、タイマーなどのログを取ることができます。 このライブラリでは、サーバーごとに1分ごとにログを取るように設定しているので、コールがバッチ処理され、トラフィックが低く抑えられます。

セイレン: の修正版を使用しています。 このDockerプロジェクト 内部には我々のコンポーネントがバンドルされています。 システム環境変数を使ってGraphiteとSlackを指定しています。 UIにアクセスしたら、Graphiteのメトリクスを使ってチェックを行い、Slackチャンネルにアラートを送ります(よく知られている機能を使います)。

お役に立てれば幸いです。 ハッピーハッキング ?

についてShareThis

ShareThis は、2007年以来、ソーシャルシェア、インタレスト、インテントのデータを統合することで、グローバルなデジタル行動の力を引き出してきました。300万以上のグローバルドメインにおける消費者の行動をもとに、ShareThis は、実際のデジタルデスティネーションにおける実際の人々の行動をリアルタイムに観察しています。

ニュースレターを購読する

最新のニュース、ヒント、アップデートを入手する

登録

関連コンテンツ