1
0

More than 3 years have passed since last update.

100日後にエンジニアになるキミ - 88日目 - データ - データ転送について

Last updated at Posted at 2020-06-16

昨日までのはこちら

100日後にエンジニアになるキミ - 86日目 - データベース - Hadoopについて

100日後にエンジニアになるキミ - 76日目 - プログラミング - 機械学習について

100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて

100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について

100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1

100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて

100日後にエンジニアになるキミ - 53日目 - Git - Gitについて

100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて

100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて

100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1

100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1

100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1

100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1

今回はデータの転送に関するお話です

データ転送について

WEB系のサービスにおいて、ログデータの収集はサービスの継続に大きな影響を与えます。

通常はWEBサーバーが稼働している場所にログが出力されますが
集計などを行う場合はWEBサーバー以外の場所で行うことが多いはずです。

昨今のデータ量の増大化を考えると、集計専用のデータベースなどに
ログデータを貯めて集計を行うケースが多いため、ログファイルを別のサーバー等に
移動させる処理が必要となります。

そういったファイルの転送の仕組みがサービスには必要不可欠になるため
ファイルの転送を行う専用のソフトウェアを導入していたりします。

fluentdについて

Fluentdはクロスプラットフォームのデータ収集ソフトウェアです。
主にRuby言語で書かれており開発者は古橋貞之(Treasure Data)さんです。

Fluentd github

オープンソースで公開されており、Linuxや各種OSで動作します。

image.png

割とデータ周りの作業を行うエンジニアには馴染みのあるツールなのではないでしょうか。

インプットとアウトプットを指定する形で使用します。
サーバーtoサーバーの用途で利用したり、プラグインなどを活用することで
出力先としてはローカルファイル意外に、AWS S3Hadoop HDFSMongoDBCassandra
MySQLPostgreSQLRedisetcを選ぶことができます。。

ログファイル自体は欠損させると問題になることから、いったんS3などのストレージに貯めて
改めて集計用のデータベースに格納すると言うケースが多いように感じます。

基本的にはログを出力するアプリケーションが稼働しているサーバーに
インストールして稼働させる形になります。

ログの収集のユースケース

アクセスログ、およびアプリケーションログの収集は以下のような手順が考えられます。

1.サーバ上のアプリケーションがログを出力する
2.そのログを各サーバ上に起動してある転送用Fluentdが受け取る
3.Fluentdはネットワーク越しにログ集約用Fluentd(もしくはAWS S3など)
に対して転送する
4.ログ集約用Fluentdは集まってきたログをどこかに書き込む
(file, AWS S3, Hadoop HDFS, MongoDB など)

ざっくりとしたログの転送の仕組みはこうです。

fluentd.001.jpeg

アプリケーション側ではログは非同期でどんどん生成されていきます。
そのため取りこぼしがないように一同に迅速に集約しておく必要があります。

ログファイルの命名規約などを決めておきルールにしたがって
転送をするようにして、転送後は元のサーバーのファイルは消されていきます。

集める際はファイルの種別や日付などでまとめ、検索や取り出し
データベースへの格納などがスムーズに運ぶように整理するようにします。

昔はテープなどでデータをバックアップしたりしていましたが
最近ではクラウドストレージに集約しておくケースも増えています。

まとめ

ゲームやWEB系のサービスではログ解析は必須ですがログ解析をするための準備として
ログを収集する仕組みも不可欠です。

サーバーサイドのエンジニアや、データを取り扱うエンジニアを目指す場合は
データ転送の仕組みを抑えておくと良いでしょう。

君がエンジニアになるまであと12日

作者の情報

乙pyのHP:
http://www.otupy.net/

Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter:
https://twitter.com/otupython

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0