月別アーカイブ: 2018年3月

APIを利用したCloudWatchの設定

こんにちは。配信/インフラチームの佐々木です。

弊社ではAWS上にシステムを構築していますが、前回お話しした通り監視ツールはCloudWatchを利用するケースが増えております。 今回はAPIを利用してCloudWatchを設定する手順をご説明します。

Alarmの設定

CloudWatchの用途としてインスタンスの監視に使うケースは多いと思います。そこでインスタンスのAlarmを設定するスクリプトを作ってみました。aws-cliとbotoどちらかを利用するのですが、今回はaws-cliで実装しています。

このように引数にNameタグを指定して利用します。

インスタンスIDで指定する方がシンプルな実装になるのですが、インスタンスIDはコピーペーストする必要がありますし、Nameタグの方がワイルドカード指定も出来て便利です。またアラーム名にもNameタグが入っていた方わかりやすくて良いと思います。ただNameタグが一意である必要がありますのでその点は注意が必要です。

Dashboardの設定

CloudWatchのDashboardもAPIを利用して設定することが可能です。その手順を記載します。

APIの仕様は以下になるのですが、元になる設定が無いと難しいと思いますので、適当なDashboardから定義をコピーします。ここでは2台のインスタンスのCPU使用率とNetworkInのメトリックを登録しています。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutDashboard.html

[アクション]の[ダッシュボードの編集]を選択すると、Jsonの定義を取得できます。ここから直接変更することも可能です。

コピーしたJsonを元に編集します。インスタンスを1台増やしてサイズも倍にしてみました。

作成したJsonファイルを以下のコマンドで適用します。

完成しました。

またこちらのページに、複数インスタンスを自動で登録するスクリプトが載っております。台数や取得するパラメータが多い場合などにはかなり有用かと思います。

https://aws.amazon.com/jp/blogs/news/new-api-cloudformation-support-for-amazon-cloudwatch-dashboards/

今回は以上になります。

監視ツールの比較

こんにちは。配信/インフラチームの佐々木です。

今回は監視用ミドルウェアについて比較(と個人的な所感)について記載したいと思います。 私自身が実際に利用したことのあるツールが殆どなので、使用感なども踏まえてお話できればと思います。

Zabbix

ZabbixはラトビアのZabbix社で開発されているツールで、OSSの監視ツールではNagiosと並んでシェアが高い製品になります。Zabbixの特徴としては非常に多機能で、監視については大抵の事がZabbixで出来ますので、監視を一元管理したい場合には非常に有効なツールになります。その一方設定が複雑で、動作も他のツールと比較すると重いです。C言語/PHPで書かれており、設定ファイルがXML(GUIで設定することの方が多いと思いますが)、データストアにMysql/PostgreSQLが利用されていますが、大規模なインフラの監視の場合はRDBの知識が必要になってきます。

Nagios

NagiosはZabbixとよく比較されるツールですが、この二つは意外と差異が多い印象です。Nagiosはアラート機能に特化しているツールで、メトリクス可視化用のツール(munin等)と使い分けて利用する事が多いです。その分軽量かつ設定もシンプルで、バックエンドにデータストアの利用もありません。設定はテキストファイルに記述し、この点もGUIで管理するZabbixとは大きな違いがあります。

Munin

前述の通りNagios等と組み合わせて使われる事が多いツールですが、可視化用のツールなもののアラート通知の機能もちゃんと搭載されています。

Monit

Monitはアラート機能に特化しているツールで、導入と設定が簡単なため、カジュアルに最低限の監視だけしたい!という場合にお勧めできるツールです。一応WEBインターフェースも用意されているのですが、メトリクスを見るのにはあまり適していません。

Sensu

SensuはNagiosの問題点を解決する用途で開発されたツールで、クラウド環境に適した作りになっているのが大きな特徴です。Chef/Puppetを利用することで、エージェントをインストールするだけで監視を開始でき、オートスケール等に対応しやすいのが売りです。SensuはRubyで書かれていますが、データストアにRedis、エージェントとの通信部分にRabbitMQ、WEBインターフェースにGraphite等が使われていて、様々なミドルウェアを必要としますがそれをChef/Puppetで簡単にインストールする、というコンセプトの製品です。設定は全てJsonで行うので、この点もコードとして扱いやすいというメリットがあります。

PandraFMS

PandraFMSはスペインのArtica社で開発されているツールで、AWS等のクラウド/仮想環境への対応やスマートフォンでのWEBインターフェースを備えており、最近の環境に適した製品になっています。無償版と有償版の他にSaasがあるのが特徴で、こういった料金体系の製品はかなり珍しいかと思います。有償版があるだけに使いやすいUIを備え、設定もGUIで行います。開発言語はPerlなようです。

私は今回紹介する中でSensuとPandraFMSだけは利用経験が無いのですが、双方とも機会があれば使ってみたいと思う製品です。

Amazon CloudWatch

監視ツールというよりAWSの機能の一つなのですが、APIを利用することによりAWS以外のリソースも監視可能です。昔は使いにくかったのですが最近かなり改善されており、実際弊社でもアラート通知・メトリクス可視化でCloudWatchを利用するケースが増えています。料金がかかってしまうのが難点ではありますが、監視サーバ用にインスタンスを立てるよりも安く済むケースもありそうですし、AWSを利用している場合はぜひお勧めしたい機能です。

Makerel

はてな社で開発されているSaas型の監視ツールで、日本国内で開発されているだけに日本人向けのUIになっているのが特徴です。面白いのはサーバサイドがScala、エージェントがGo言語で書かれているのですが、エージェント部分はソースが公開されているという点です。Pluginのプルリクエストも受け付けているようで、開発に参加してみるのも面白いかもしれません。

今回は以上となります。