こんにちは。システム設計の中でかなりコアな分野ですが、監視設計というものがあります。これはシステムが正常に動作しているか?異常が発生していないか?を検知する仕組みの設計です。今回は、この監視設計の基礎として監視の目的や概要をまとめてみました。
監視設計はマイナーだけどシステム運用のうえではかなり重要な設計だよ。そもそも「何で監視が必要なのか?」から理解することがとても大切なんだ。
1.システム監視設計の目的
まずシステム監視設計と聞いて何を想像しますか?そもそもシステムを監視すると言っても、何のために監視をするのか疑問な方も多いのではないでしょうか?
目的を理解していない設計をしても良い設計はできません。そのため、まずはシステム監視の目的から理解しましょう。
システム監視とは、「システムが正しく動作していることを確認する」ための行為です。
この正しくは、いろいろな意味があります。業務アプリケーションが動いてること、正常に取引されていること、CPU使用率が閾値以内であることなどなどです。正しい状態は、システムの目的・種類・構成によって千差万別です。
世の中に色々な監視ツールがありまますが、自分のシステムの正しい状態を自動的に導き出してくれるツールはありません。そのため、監視設計を行う場合は、自分の担当するシステムにとって何が正しい状態なのかを?を定義する必要があります。
2.監視の種類
一口に監視といっても様々な観点の監視があります。私の書いてる分類が唯一無二の正解とは言いませんが、こんな分類があるいうところをご紹介します。
ビジネス監視
ビジネス監視は、システムサイドではなくユーザサイド目線の監視です。
個人的は、このビジネス監視は特に重要だと考えています。システムはただ開発しているだけではなく、システム開発をしている”目的”があります。
システムの開発が完了し、運用を開始した後にをそのビジネス目的を達成しているか監視するのがビジネス監視です。
例えば販売支援システムで月の売上金額に目標があるのであれば、月の売上金額を集計することが監視です。契約数であれば契約数を集計することが監視となります。
(詳細)
アプリケーション監視
ビジネス監視より一段階システムよりの監視がアプリケーション監視です。
システムのアプリケーションが正常に動作しているか監視します。例えばプロセスが正常に起動しているのか?などです。アプリケーションから排出されるエラーメッセージ監視もこの監視の要素です。
そもそもアプリケーションが正常に動作していない限りシステムを利用したビジネスはできないため、アプリケーションが正常に動作しているか確認する必要があります。
(詳細)
サーバ監視
サーバ監視は、アプリケーション監視よりインフラ目線の監視です。
例えば性能監視としてメモリ使用率、CPU使用率などを監視します。他にはOSや製品のプロセス監視やメッセージ監視も行います。
ここで重要な観点は、サーバとして各アプリケーションに対して適切なリソースを割り振られているかを監視することです。
今のご時世では、一つのサーバに一つのアプリケーションではなく、複数のアプリケーションが動作しているケースが多いかと思います。このような場合においてサーバ全体として、各アプリケーションに適切なリソースが割り振られているかは重要となります。
もし特定のアプリケーションが過負荷を発生させ、残りのアプリケーションが停止してしまったら大問題です。このような問題を避けるためにサーバ全体としてのリソースの使用状況把握は必要となります。
NW監視
最後になりますが、読んで字のごとくNW機器の監視です。NW機器の監視いいますが、実際の目的はNW(回線)が正常に動作しているかを確認することです。
一番はEND-END間の通信確認(ポーリング)が重要です。Pingでもなんでも通信ができているかが一番重要です。個々のNW機器は、SNMPなどを使用して性能情報含め諸々監視することが一般的です。
(詳細)
一口に監視といってもいろいろな観点がある。自分がどんな目的で監視したいのかしっかり考えるようにしよう。
3.システム監視設計の進め方
システム監視設計の進め方は、基本的に通常のシステム開発と変わりません。
「要件定義」⇒ 「設計」 ⇒ 「構築」 ⇒ 「試験」 ⇒ 「運用」
「要件定義」における重要な要素は、これから開発するシステムの目的を明確に定義することと、目的の達成を定量的に測定する方法を定義することです。さらにこのシステムにとっての「正しい状態」を正確に把握することです。
「設計」の箇所は、具体的な監視設計として「導入製品の決定」と「パラメーター設計」に分かれてきます。この際に、統一感のある監視設計を行うととが運用がしやすいシステムを作るための重要な要素です。
システム監視設計の特徴としては、「運用」フェーズに進む・・つまりリリースしたらすべて完了ではなく、大抵の場合はチューニングが入ると考えておいた方が良いです。運用者に負荷が入らないようにであったり、性能情報を正確に把握するためなど色々な事情でチューニングは必要となります。
大規模システムほど監視がバラける可能性があるため注意しよう。
<
(システム監視設計の基礎②はこちら)