シンジです。AWSの全操作ログを取得しておくと、実は裏でAWSが自分の環境を触ったりしているのも見えたりするのでかなり楽しいです。いやいや、事件事故が起きたときにもなにかと便利なので、CloudTrailを有効にしておくのは超オススメなのですが、有効にしたところで人間が見るには耐えないログファイルが大量に出てくるので、それを人に優しい形にしようとしてみたら、その手順が人に優しくなかったという話です。
ログの可視化にはTrailDashを使います
cloudpackでは、Logstorageとか、Splunkといった有償の最高なソフトウェアでログ解析しているのですが、個人利用ではかなり厳しい価格設定なので、TrailDashを使って無料で構築します。
前提として
TrailDashを動かすためのEC2にIAM Roleを紐付ける必要があるので、もし既存のサーバーでTrailDashも一緒に動かしたいのであれば、既にIAM Roleの紐付けが無い場合は、EC2の作り直しになります。
すだちブログがまさにそれで、一度AMIを取得して、EIPの紐付けを解いて(ダウン発生)、EIPを新しいEC2に付け直して(復旧)、ってな具合でやりました。(ELB使ってロードバランスしていないロードバランスすだちくんなのだ)
更に前提として
Dockerを使いますが、今日時点でのAmazon LinuxとyumでインストールできるDockerではTrailDashが起動してきません。で、いろいろやった結果、DockerをGithubから落としてきて、自分でMakeしてごにょごにょしてやる必要があります。これがマジで面倒(待ち時間が長い)
手順概要
- AWS CloudTrailを有効にします
- SNSの設定をします
- S3バケットの設定をします
- SQSの設定をします
- EC2にIAM Role付けて起動します(今回はAmazon Linux)
- Dockerをインストールします
- Dockerを超絶最新版にします
- TrailDashをインストールします
- TrailDashの使い方を覚えようと努力します
- 突如訪れる世界平和
まずはAWS CloudTrailを有効化する
AWSマネジメントコンソールから、AWS CloudTrailを選択すると、下の画面がでます。
はじめましょう!
お好きな感じで入力して下さい。S3バケットと、SNS Topicは自動的に作成されます。便利〜
SQSの設定をします
名前だけ決めたら、後はそのままでOKです
作成されたキューをクリックして、キュー操作、SNSトピックへのキューのサブスクライブ、をクリック
トピックを選択して、サブスクライブしましょう。
でもって作成出来たキューを見ると、下の方にURLが書いてありますよね。
URL: https://sqs.ap-northeast-1.amazonaws.com/なんかここに数字/自分で決めた名前
これ後で使いますので控えておきます。
IAM Roleを設定しよう
今度はIAM Roleです。AWSマネジメントコンソールからIAMを選択して、左側メニューからロールをクリック。新しいロールを作成して下さい。
ロール名の設定を行いますが、この名前、二度と変えられないので、奇跡的センスを抜群に発揮して決めて下さい。
ロールタイプの選択は、Amazon EC2を選択して下さい。
ポリシーのアタッチですが、厳密には以下のようになれば良いです。
{ "Id": "AllowTraildashAccountAccess", "Statement": [ { "Sid": "AllowTraildashBucketAccess", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": "arn:aws:s3:::", "Principal": { "AWS": [ " " ] } }, { "Sid": "AllowTraildashObjectAccess", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3::: /*", "Principal": { "AWS": [ " " ] } } ] }
シンジは手早く幸せな気持ちになりたかったので、こうしました。ごめんなさい。
EC2を立ち上げます
今回は新規でEC2を立ち上げる想定にします。Amazon Linuxです。t2.microで十分です。
起動時に先程作成したIAM Roleをくっつけてやります。
更に下の方に行くと「高度な詳細」といういかにもプロっぽい項目があるので、ここに以下のアレをアレします。
#cloud-config write_files: - content: | repo_update: true repo_upgrade: true locale: ja_JP.UTF-8 timezone: Asia/Tokyo owner: root:root path: /etc/cloud/cloud.cfg.d/99_mysettings.cfg permissions: '0644' runcmd: - yum update -y
と書いてやります。こうすると、起動時に勝手にいろいろ最新版にしてくれます。便利〜
で、重要なのがセキュリティグループですが、SSH用の22番は自分のIPアドレスだけアクセスできるように閉じておきましょう。追加でカスタムTCPルールを追加して、7000番を空けておきます。これも接続元は自分のIPのみにしておきましょう。
なので、22と7000が自分のIPで空いてる、2つがあればOKです。
ここからはサーバーにSSHログインして作業です
sudo su - yum install -y docker service docker start
とりあえずDockerは起動完了です。起動させておきます。
Dockerを最高なDockerでドッカドッカする
これ、30分くらいかかるかもなので、みかんでも食べながら気長に待ちましょう。
yum install git make -y git clone https://git@github.com/docker/docker cd docker make build
長かったぜ。終わったら次です。これはそこそこさくっといきます。
make binary
完成だぜ!!!
いま動いているDockerは要らない子なので停止させます。
service docker stop
最高のDockerを起動させる
まずは既存のDockerをリネームして待避させておきます
mv /usr/bin/docker /usr/bin/docker-iranaiko
最高のDockerを最高な場所に配置します
cp /root/docker/bundles/latest/binary/docker-1.10.0-dev /usr/bin/docker
最高の起動
service docker start
バージョン確認してみましょう
docker version Client: Version: 1.10.0-dev API version: 1.22 Go version: go1.5.2 Git commit: 312c826 Built: Mon Dec 21 23:29:56 2015 OS/Arch: linux/amd64 Server: Version: 1.10.0-dev API version: 1.22 Go version: go1.5.2 Git commit: 312c826 Built: Mon Dec 21 23:29:56 2015 OS/Arch: linux/amd64
よろしい。
ようやくTrailDashのインストールです
SQSのURLだけ書き換えて下さい。
docker run -i -d -p 7000:7000 -e "AWS_REGION=ap-northeast-1" -e "AWS_SQS_URL=https://ここにさっきメモったSQSのURLを書く" -e "DEBUG=1" -v /home/traildash:/var/lib/elasticsearch/ appliedtrust/traildash
念のため、起動確認です
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 721ee5cb719a appliedtrust/traildash "/root/start" About an hour ago Up About an hour 0.0.0.0:7000->7000/tcp hopeful_northcutt
ブラウザからポート7000でアクセスします
http://IPアドレス:7000
で、アクセスしてみてください。最高です。たぶん。
そのうちDockerのVersionがあがれば、Dockerをmakeしなくても済むはずです
DockerのGithubでのやりとりを見てたところ、バグ持ちで、エラーも同様でした。というわけで今回はわざわざdevの最新版を引っ張ってきたわけです。きっと時間が解決してくれます。
とりあえずこれでKibana3.1.2が起動してます
シンジはKibanaを使ったことが無いので使い方が分かりません!!そしてシンジはこっそりとLogstorageとSplunkに出戻りするのです。AWS Configも可視化できるし?
というのは冗談で、すだちブログにせっかく入れてみたのでこれからいろいろ試してみたいと思います〜
参考リンク
https://github.com/AppliedTrust/traildash