DUICUO

オープンソース | Sensu Monitoring を使い始める

[[264060]]

このオープンソース ソリューションを使用すると、クラウド インフラストラクチャをシンプルかつ効果的に監視できます。

Sensuは、オープンソースのインフラストラクチャおよびアプリケーション監視ソリューションです。サーバー、関連サービス、アプリケーションの健全性を監視し、サードパーティとの連携を通じてアラートや通知を送信します。Rubyで記述されており、RabbitMQまたはRedisを使用してメッセージを処理でき、Redisを使用してデータを保存できます。

クラウドインフラストラクチャをシンプルかつ効果的に監視したいなら、Sensuが最適です。Slack、HipChat、IRCなど、組織で既に利用している多くの最新のDevOpsコンポーネントと統合でき、PagerDutyを使用してモバイルやポケベルにアラートを送信することもできます。

Sensu のモジュール型アーキテクチャにより、各コンポーネントを同じサーバーまたは完全に独立したマシンにインストールできます。

構造

Sensuの主要な通信メカニズムはトランスポートです。各Sensuコンポーネントは、相互にメッセージを送信するためにトランスポートに接続する必要があります。トランスポートでは、RabbitMQ(本番環境では推奨)またはRedisを使用できます。

Sensuサーバーはイベントデータを処理し、アクションを実行します。クライアントを登録し、フィルター、インバータ、ハンドラーを使用して結果を検査し、イベントを監視します。サーバーはクライアントに検査指示を発行し、Sensu APIは監視データとコア機能にアクセスするためのRESTful APIを提供します。

Sensuクライアントは、Sensuサーバーによってスケジュールされたチェック、またはローカルで定義されたチェックを実行します。Sensuは、すべての永続データをデータストア(Redis)に保存します。Uchiwaは、Sensu APIと通信するためのWebインターフェースです。

センスシステム.png

Sensuをインストールする

状態

  • サーバーノードとして Linux システムを使用します (この記事では CentOS 7 を使用します)。
  • 監視対象となる 1 台以上の Linux マシン (クライアント マシン)。

サーバー側

Sensu を使用するには Redis のインストールが必要です。Redis をインストールするには、EPEL リポジトリを有効にしてください。

  1. $ sudo yum install epel - release - y

次にRedisをインストールします。

  1. $ sudo yum install redis - y

/etc/redis.confを変更して、保護モードを無効にし、各アドレスをリッスンし、パスワードを設定します。

  1. $ sudo sed - i 's/^protected-mode yes/protected-mode no/g' / etc / redis . conf
  2. $ sudo sed - i 's/^bind 127.0.0.1/bind 0.0.0.0/g' / etc / redis . conf
  3. $ sudo sed - i 's/^# requirepass foobared/requirepass password123/g' / etc / redis . conf

Redis サービスを有効にして開始します。

  1. $ sudo systemctl enable redis
  2. $ sudo systemctl start redis

Redis がインストールされ、Sensu が使用できるようになりました。

それではSensuをインストールしましょう。

まず、Sensu リポジトリを設定し、パッケージをインストールします。

  1. $ sudo tee / etc / yum . repos . d / sensu . repo << EOF
  2. [ sensu ]
  3. name = sensu
  4. baseurl = https : //sensu.global.ssl.fastly.net/yum/\$releasever/\$basearch/
  5. gpgcheck = 0
  6. enabled = 1
  7. EOF
  8. $ sudo yum install sensu uchiwa - y

Sensu の最もシンプルな設定ファイルを作成しましょう。

  1. $ sudo tee / etc / sensu / conf . d / api . json << EOF
  2. {
  3.   "api" : {
  4.         "host" : "127.0.0.1" ,
  5.         "port" : 4567
  6.   }
  7. }
  8. EOF

次に、ローカル ホストのポート 4567 でリッスンするようにsensu-apiを設定します。

  1. $ sudo tee / etc / sensu / conf . d / redis . json << EOF
  2. {
  3.   "redis" : {
  4.         "host" : "<IP of server>" ,
  5.         "port" : 6379 ,
  6.         "password" : "password123"
  7.   }
  8. }
  9. EOF
  10. $ sudo tee / etc / sensu / conf . d / transport . json << EOF
  11. {
  12.   "transport" : {
  13.         "name" : "redis"
  14.   }
  15. }
  16. EOF

これら2つのファイルでは、SensuがRedisをトランスポートメカニズムとして使用するように設定し、Redisがリッスンするアドレスを指定します。クライアントはトランスポートメカニズムに直接接続する必要があります。各クライアントには両方のファイルが必要です。

  1. $ sudo tee / etc / sensu / uchiwa . json << EOF
  2. {
  3.     "sensu" : [
  4.         {
  5.         "name" : "sensu" ,
  6.         "host" : "127.0.0.1" ,
  7.         "port" : 4567
  8.         }
  9.     ],
  10.     "uchiwa" : {
  11.         "host" : "0.0.0.0" ,
  12.         "port" : 3000
  13.     }
  14. }
  15. EOF

このファイルでは、Uchiwa が各アドレス(0.0.0.0)に対してポート3000でリッスンするように設定します。また、Uchiwa がsensu-api (既に設定済み)を使用するように設定します。

セキュリティ上の理由から、作成した構成ファイルの所有者を変更します。

  1. $ sudo chown - R sensu : sensu / etc / sensu

Sensu サービスを有効にして開始します。

  1. $ sudo systemctl enable sensu - server sensu - api sensu - client
  2. $ sudo systemctl start sensu - server sensu - api sensu - client
  3. $ sudo systemctl enable uchiwa
  4. $ sudo systemctl start uchiwa

UchiwaのWebサイトにアクセスしてみてください: http://<服务器的IP 地址>:3000

実稼働環境では、Redis の代わりに RabbitMQ クラスターをトランスポートとして実行し (ただし、Redis クラスターも実稼働環境で使用できます)、複数の Sensu サーバー インスタンスと API インスタンスを実行して負荷分散と高可用性を実現することをお勧めします。

Sensuがインストールされました。クライアントの設定をしましょう。

クライアント側

新しいクライアントを追加するには、ファイル/etc/yum.repos.d/sensu.repoを作成して、クライアント上で Sensu リポジトリを有効にする必要があります。

  1. $ sudo tee / etc / yum . repos . d / sensu . repo << EOF
  2. [ sensu ]
  3. name = sensu
  4. baseurl = https : //sensu.global.ssl.fastly.net/yum/\$releasever/\$basearch/
  5. gpgcheck = 0
  6. enabled = 1
  7. EOF

リポジトリを有効にした後、Sensu をインストールします。

  1. $ sudo yum install sensu - y

sensu-clientを構成するには、サーバー上に同一のredis.jsonファイルとtransport.jsonファイルを作成し、さらにclient.json構成ファイルも作成します。

  1. $ sudo tee / etc / sensu / conf . d / client . json << EOF
  2. {
  3.   "client" : {
  4.         "name" : "rhel-client" ,
  5.         "environment" : "development" ,
  6.         "subscriptions" : [
  7.         "frontend"
  8.         ]
  9.   }
  10. }
  11. EOF

nameフィールドには、このクライアントを識別するための名前(通常はホスト名)を指定します。 environmentフィールドはフィルタリングに役立ち、 subscriptionsクライアントが実行する監視チェックを定義します。

***、サービスを有効にして開始し、Uchiwa にチェックインすると、クライアントが自動的に登録されます。

  1. $ sudo systemctl enable sensu - client
  2. $ sudo systemctl start sensu - client

扇子チェック

Sensu チェックには、プラグインと定義の 2 つのコンポーネントがあります。

SensuはNagiosの検査プラグイン仕様と互換性があるため、Nagiosの検査プラグインは変更せずにそのまま使用できます。検査プラグインはSensuクライアントによって実行される実行ファイルです。

定義をチェックすることで、Sensu はプラグインをいつどこで実行するかを知ることができます。

クライアント側

クライアントマシンにチェックプラグインをインストールしましょう。このプラグインはクライアントマシンで実行されることに注意してください。

EPEL を有効にしてnagios-plugins-httpをインストールします。

  1. $ sudo yum install - y epel - release
  2. $ sudo yum install - y nagios - plugins - http

では、このプラグインを手動で実行して理解してみましょう。クライアント側で実行中のWebサーバーの状態を確認してみましょう。Webサーバーを実行していないため、失敗するはずです。

  1. $ / usr / lib64 / nagios / plugins / check_http - I 127.0 . 0.1
  2. connect to address 127.0 . 0.1 and port 80 : Connection refused
  3. HTTP CRITICAL - Unable to open TCP socket

予想通り失敗しました。実行の戻り値を確認してください。

  1. $ echo $ ?
  2. 2

Nagios Inspection プラグインの仕様では、プラグイン実行の 4 つの戻り値が定義されています。

プラグインの戻りコード
0わかりました
1警告
2致命的
3未知

この情報を使用して、サーバー上でチェック定義を作成できるようになりました。

サーバー側

サーバーマシンで、ファイル/etc/sensu/conf.d/check_http.jsonを作成します。

  1. {
  2.   "checks" : {
  3.     "check_http" : {
  4.       "command" : "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1" ,
  5.       "interval" : 10 ,
  6.       "subscribers" : [
  7.         "frontend"
  8.       ]
  9.     }
  10.   }
  11. }

commandフィールドでは、前にテストしたコマンドを使用します。`interval` interval 、Sensu にこのチェックの頻度を秒単位で伝えます。***、 subscribersチェックを実行するクライアントを定義します。

sensu-apisensu-server再起動し、Uchiwa で新しいチェックが利用可能であることを確認します。

  1. $ sudo systemctl restart sensu - api sensu - server

Sensuは強力なツールです。この記事では、その機能について簡単に紹介するにとどめています。詳細についてはドキュメントをご覧ください。また、Sensuコミュニティについて詳しくは、Sensuのウェブサイトをご覧ください。