こんにちは。matsです。
IMは膨大な量のデータを扱うビッグデータカンパニーでありますが、それと同時にAWSをゴリゴリつかうオートスケールカンパニー(?)でもあります。
ほぼ全てのサーバをオートスケールによって運用しており、高い対障害性と運用の効率化を実現しております。今回はAWSのオートスケールを使って数百台規模のサーバを運用する際に、非常に便利な3つのサービスをご紹介したいと思います。
1. Mackerel
Mackerelはクラウド型のモニタリングサービスです。最近はサーバのリソースだけでなく、スクリプトによる監視も行えるようになっています。
各サーバで稼働するエージェントにより監視を行うプッシュ型のサービスのため、オートスケールとの相性が非常によく、台数の増加に伴う運用負荷の増加が殆どありません。同様のサービスではDataDogがありますが、SearviceとRoleでサービスを分類・管理出来るという点と、ボリュームディスカウントが効く点からMackerelを採用しております。
また、SearviceとRoleでサービスを分類するというやり方は、残りの2つのサービスでも採用しているため弊社においては非常に重要な概念になります。
2. Papertrail
日本ではあまり聞かないサービスですが、PapertrailはGitHubなどの採用実績のあるログの集約・監視を行うサービスになります。
リモートSyslog形式で投げ込むことにより、複数のサーバのログをまとめてブラウザ上からほぼリアルタイムに見ることが出来ます。(まとめる単位はMackerelのSearviceとRoleに合わせています。)サーバ台数が多いと、各サーバに入ってログを確認するということだけでも大変になってくるので重宝しています。
特定文字列の監視を設定し、Slack等にアラートを飛ばすことも可能です。
また、集めたログはS3に日別で自動アーカイブすることが可能なので、IMではほぼ全てのログをPapertrailに投げ込んでいます。(PT側の保存期間を短くして、S3にアーカイブするといった使い方も可能)
これだけ至れり尽せりな仕様でありながら、数十ドル/月で利用可能です。(検索可能な期間と月間に受信するログの量で変動します)
正直、何でコレが流行っていないのか理解に苦しむレベルのネ申サービスです。
3. Rundeck
RundeckはOSSのタスクスケジューラーになります。ブログなどでcronの代替として紹介されていることが多いですが、AWSとの連携により真の力を発揮することが出来ます。
Rundeckはプラグインにより、EC2のインスタンスの一覧を取得可能で、その際に付与されているタグも識別することが出来ます。
Mackerelなどで利用しているSearviceとRoleを適切にタグに設定していれば、そのグルーピング単位でジョブの実行やソースコードのデプロイを行うことが可能です。これにより、ホスト名やIPで個々のサーバを管理する必要がなくなります。
また、アドホックにコマンドを発行することも可能なので、全台のOpenSSLのバージョンを調べるといった使い方も出来たりします。
PapertrailとRundeckは国内の事例が少ないようなので、別途記事を書こうかと思います。