AWS 最近やったことのまとめ

  • このエントリーをはてなブックマークに追加
  • Pocket

最近AWS上で遊んでいたことのまとめ。

主にVPCの中にサブネット作成したり、EC2立てたり、Zabbixで監視したり、Cloud WatchのAPIを叩いてRDSをモニタリングしたことの備忘録。
ちなみにリージョンは料金の安いオレゴン。

AWS VPCの作成

特に難しいところはないけど、DNS解決を有効にしないといろいろと不便なのでそこだけ気を付ける。

aws-vpc

サブネットの作成

これもまた難しいところはない。
今回はRDS用のサブネットも作成したのでマルチA-Z用にアベイラビリティーゾーンを分けたものも作る必要がある。

aws-vpc-subnet

サブネット スコープ 用途 備考
web_server public Webサーバ  
dmz public 踏み台用 DMZ的な位置づけ。
db private RDS  
az_db private RDS マルチA-Z用にアベイラビリティーゾーンを分けたDBサブネット。
シングルなら不要だが、ないとRDS DBSGが作れないので作成する

セキュリティグループの作成

Webサーバ用のSG。

aws-vpc-security

sshのポートを変更したり送信元を制限したりは後でやるとして、
赤枠の下2つはそれぞれZabbixサーバーからとPING用のポート。

カスタムTCPルール

  • from zabbix-server

  • 送信元にZabbixを構築したEC2が置かれてるサブネットを指定する

  • 今回は dmz 踏み台用のサブネットを指定

すべての ICMP

  • (PINGって特定のポートを持たないらしいね)

  • Zabbixから疎通確認する際に必要

  • 同じく dmz 踏み台用のサブネットを指定

Zabbixサーバを構築した踏み台のセキュリティグループはZabbixエージェントのポートをあけてあげる。

EC2の作成

毎度おなじみ。
今回はWebと踏み台の2台を作成。
気を付けるとしたらこのくらいか。

  • セキュリティグループの設定でELB経由以外でアクセスできないようにする

  • 踏み台にElastic IPを振ってあげる

  • Webサーバへは踏み台越しにアクセスできる

  • 踏み台にWebサーバのpemを忘れずにscpする

※WebサーバはELBの管理下にいれば80・443へアクセスできるので大丈夫

Webサーバの設定

設定というかログ関連。
あまり意味はないけど今回は久々にapacheで作ってみた。

ELBを付けるとヘルスチェックがあるたびにアクセスログに溜まってうざいのでなんとかする。
ついでにapache v2.2以降の仕様もデストロイ。

/etc/apache2/sites-available

これでログもスッキリ。

Zabbixの構築

構築自体はこちらを参照。

監視対象にエージェントをインストール

今回で言うとWebサーバ。

インストール

設定
/etc/zabbix/zabbix_agentd.conf

エージェントを再起動して完了。

Zabbixへホストの追加

さっきエージェントをインストールしたWebサーバを監視する。

zabbix01

以下のように設定する。
グループはプロジェクトの名前とかシステム名とかで新しく作るといい感じ。

※ホスト名はzabbix_agentd.confで設定した名前じゃないと監視できないので注意

zabbix02-mask

ホストの追加はこれだけでOKだけど、監視項目が設定されてないのでテンプレートを設定する。

zabbix03-mask

この例だとデフォルトの「Template OS Linux」を設定してる。
お好きになすってくだせぇ。

特にエラー等々なければ設定完了。
後はグラフとかスクリーンでWebサーバのモニタリングができる。

ZabbixでRDSをモニタリングする

今回のメインがこちら。
ZabbixからAWS RDSは基本的にモニタリングできない。
「RDSだけはCloud Watchで~」という運用もいいかもしれないが、
やっぱり一元管理したい。

そこでAWS Cloud WatchのAPIを叩いて値を取得してみる。

AWS SDKのインストール

Cloud WatchのAPIを叩くためにSDKを用意する。

今回はrubyでスクリプトを作成。
https://aws.amazon.com/jp/sdk-for-ruby/

rubyのインストールとSDKのインストール

2015.11.10 現在、aws-sdk for ruby のバージョンが2番台になってしまい、1番台で作成されたrubyファイルが動作しなくなっているので注意。

2番台のドキュメントもあるがAWS SDKは下位互換があんまり考慮されていないので・・・

時間もお金もリソースもないのでv1でスクリプトを書く。
許してくれ。

やりたいことはこんな感じで引数を渡せば値が取れるようにしたい。

昔作ったスクリプトがこちら。
誰かのサイトを参考にして作ったんだが、思い出せないっす・・・

これをZabbixに実行させる。

Zabbixの外部チェック機能

先ほどのスクリプトを設定する。
配置場所はzabbix_setver.confの [ ExternalScripts ] に指定した・されてる場所。

aptで入れたのでデフォルトは /etc/zabbix/externalscriptsになるようだ。
ディレクトリがない場合は作成する。
パーッミッションのユーザはzabbixでなくてOK。

先ほどのスクリプトを実行できるようにする。

下準備はこれで完了。

RDS用のホスト追加

ZabbixへRDS用のホストを追加する。
値の取得はAPI経由なのでIP等の設定は不要。

ホスト名に RDSの「DBインスタンス」の名前を指定すればOK。

テンプレート~アイテムの作成

ホストに対してもアイテムを作れるけどテンプレートにつけてた方がいろいろと都合がよいのでまずはテンプレートを作成する。

zabbix-template-rds

お次はアプリケーション。
こんな感じでいいんじゃないかと。

zabbix-template-app

続いてアイテムの作成。
ここで先ほどのスクリプトを叩いてもらうように設定する。
タイプを「外部チェック」にして、キーにコマンドっぽいものを入力する。

zabbix-tamplate-item

これでOK.

他のリソースを見たい場合は新しくアイテムを追加してキーに設定するコマンドの “CPUUtilization” を “DatabaseConnections” に変更すればDBコネクションの数を取得できたりする。

後は特にエラー等なければ [監視データ] – [ 最新データ ] で値が見れる。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*