LoginSignup
0
0

More than 3 years have passed since last update.

AWS データ分析環境の構築

Last updated at Posted at 2020-10-09

AWS データ分析環境の構築

EC2環境構築

CloudFormationを使用し、VPCを作成。作成されたVPCにログを出力するEC2を構築していきます。
CloudFormationの画面に移動し、スタックの作成を行います。
今回使用するyamlファイルは参考資料のGitのほうにあるのでそれを利用します。
実行が終わるとEC2が出来上がり、/root/esdemo/testapp.logにログ出力が始まります。
実行がうまくいけば下のようにEC2のコンソール画面にインスタンスが一つ立っているのでSSH接続します。2020-10-05 (1).png

SSH接続を行い以下のようにコマンドを打つとログが出力されます。

$ sudo su -
# tail -f /root/es-demo/testapp.log

 2020-10-05 (2).png

このようにして可視化を行うことが出来ます。

IAMロールの作成とEC2へのアタッチ

IAMのコンソール画面に移動しロールを選択し作成を行います。
AWSサービスを選択し「EC2」を選択。アクセス権限ポリシー、タグの追加画面は何もせず次に行き、ロール名を入力し作成を行います。

作成したIAMロールをEC2へアタッチするためにEC2のコンソール画面に移動し、先ほど作成したインスタンスを選択します。選択した後、アクションボタンから「インスタンスの設定」→「IAMロールを変換」をクリックします。そして先ほど作成したIAMロールをアタッチします。

Fluentdのインストール

Fluentdはログデータを収集しJSONに変換して出力する機能を提供するオープンソースソフトウェアです。これを使用する事でログの収集を効率よく行うことが出来ます。

EC2にSSHでログインし以下のコマンドを実行します。

$ sudo su -
#yum -y install redhat-lsb-core gcc

# rpm -ivh http://packages.treasuredata.com.s3.amazonaws.com/3/redhat/6/x86_64/td-agent-3.1.1-0.el6.x86_64.rpm

# vi /etc/init.d/td-agent  (好きなエディタで大丈夫です)
TD_AGENT_USER=td-agent → TD_AGENT_USER=root 


# chkconfig td-agent on

Elasticsearch Service の設定

マネジメントコンソール画面からElasticsearch Serviceを選択します。
新しいドメインの作成を行い、デプロイタイプを「開発およびテスト」を選択します。
ドメインの設定ではドメイン名を入力しインスタンスタイプは「t2.small.elasticsearch」を選択しました。
アクセスとセキュリティの設定においてネットワーク構成をパブリックアクセスにします。
ドメインアクセスポリシーにおいて「カスタムアクセスポリシー」を選択し、タイプに「IPv4アドレス」プリンシパルに「*」を入力、アクションに「許可」を選択して構築を行います。
構築するのに少し時間が掛かります。

IAMロールの設定

先程作成したIAMロールに以下のようにポリシーを設定します。
IAMの画面からロールをクリックします。そして先ほど作成したロールを選択します。
そのロールのアクセス権限タブにある「ポリシーをアタッチします」をクリックします。
[AmazonESFullAccess]を検索しアタッチします。

Fluentdの設定

FluentdからElasticsearch Serviceにログデータを送信するための設定を行います。
まずElasticsearch Serviceを選択しダッシュボードから先ほど作成したドメイン名をクリック。
エンドポイントにあるURLの文字列を控えておきます。2020-10-05 (3).png

続いてそのままElasticsearch Serviceのところから「アクション」を選択し「アクセスポリシーの変更」を選択します。
ドメインアクセスポリシーにおいてカスタムアクセスポリシーを選択し、以下の内容を設定し画面一番下の送信をクリックします。
タイプに「IAM ARN」を選択、プリンシパルに「*」を入力、アクションに「許可を選択」
2020-10-05 (4).png

送信が終わったらEC2にログインしElasticsearchのプラグインをインストールします。

$ sudo su -
#Elasticsearch のプラグインをインストール
# td-agent-gem install -v 2.6.0 fluent-plugin-elasticsearch

#プラグインのインストールの確認
# td-agent-gem list | grep plugin-elasticsearch

#td-agent.confを書き直します。
# vi /etc/td-agent/td-agent.conf

td-agent.confを書き直す内容は以下になります。

<source>
    @type tail
    path /root/es-demo/testapp.log
    pos_file /var/log/td-agent/testapp.log.pos
    format /^\[(?<timestamp>[^ ]* [^ ]*)\] (?<alarmlevel>[^ ]*) *? (?<host>[^ ]*) * (?<user>[^ ]*) * (?<number>.*) \[(?<text>.*)\]$/
    time_format %d/%b/%Y:%H:%M:%S %z
    types size:integer, status:integer, reqtime:float, runtime:float, time:time
    tag testappec2.log
</source>

<match testappec2.log>
    type_name testappec2log
    @type elasticsearch
    include_tag_key true
    tag_key @log_name
    host ここに先程控えたURLを記入します。https:// は含めないです。
    port 443
    scheme https
    logstash_format true
    logstash_prefix testappec2log
    flush_interval 10s
    retry_limit 5
    buffer_type file
    buffer_path /var/log/td-agent/buffer/testapp.log.buffer
    reload_connections false
</match>

編集が終わったら以下のコマンドを入力し動作を確認します。

#td-agent のプロセスを起動します。
# /etc/init.d/td-agent start

#Fluentd のログを確認
# tail -f /var/log/td-agent/td-agent.log

Elasticsearch Serviceの設定

マネジメントコンソール画面からElasticsearch Serviceを選択します。
まず作成したドメインの「ドメインのステータス」が「アクティブ」で「検索可能なドキュメント」の件数が1件以上になっていることを確認し選択します。
Kibanaの右のURLをクリックします。
[Welcome to Elastic Kibana] 画面が表示されるため、 [Explore on my own] を選択し、 Kibana の画面を開きます。
[Create index pattern] をクリックし、 [Create index pattern] 画面において、 [Index pattern] に「 testappec2log-* 」を入力し、右側の [Next step] をクリックします。2020-10-05 (5).png

[Time Filter field name] において、 [@timestamp] を選択し、画面右下の [Create index pattern] をクリックします。
Kibana の画面の左ペインからkibana_managementアイコンをクリックし、 [Saved Objects] をクリックします。画面右上の [Import] をクリックします。

[Saved Objects] 画面において、[Import] アイコンをクリックし「 2-visualization.json 」を選択し、 [Import] をクリックします。続いての画面において、 [New index patten] に対して、「 testappec2log-* 」を選択し、 [Confirm all changes] をクリックし、インポートを完了します。問題なくインポートが完了したら、 [Done] をクリックすると、元の画面に戻ります。(この2-visualization.jsonファイルは参考資料のGitにあるのでそれを参照してください。 )
続いて、再度 [Saved Objects] 画面において、[Import] アイコンをクリックし、 Asset 資料の「 2-dashboard.json 」を選択し、 [Import] をクリックし、インポートします。問題なくインポートが完了したら、 [Done] をクリックすると、元の画面に戻ります。(この2-dashboard.jsonファイルも参考資料のGitにあるのでそれを参照してください。 )

以上のような設定を行うことが出来るとKibana の画面で以下のような値が表示されます。2020-10-05 (8).png

<参考資料>
https://github.com/aws-samples/amazon-s3-datalake-handson/tree/master/JP
Fluentdに関して
AWSのIAMロールとポリシーの違い

0
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
0
0