Linuxシステムにおける監視の検討
一口に「監視」といっても、ハードウェア監視やOSのサービス監視、アプリケーションの監視、ユーザーの監視、セキュリティの監視、性能の監視など、様々な種類の監視があります。一般的に「ハードウェア監視」というと、サーバー、ストレージ、ネットワーク機器に障害が発生していないかの死活監視、または負荷の監視を意味します。
例えば、LAN経由でのサーバーの応答の有無、CPU、メモリ、ディスク、NIC、ファン、電源の障害検知、CPUの負荷状況と動作速度、メモリ使用量、ディスク使用量、通信の負荷状況、筐体内の温度、消費電力の監視などがあげられます。
このような監視業務を実現するためには、通常、ハードウェアのオンボードで搭載される遠隔管理・監視用チップや、複数の管理対象機器を同時に監視できる統合管理ソフトウェアの導入が検討されます。特に、管理対象機器の数や種類が多い場合は、監視ソフトウェアが稼働する管理サーバーを別途1台用意し、集中的に管理・監視を行うのが一般的です。
このようなハードウェア監視ソフトウェアは、ハードウェアベンダーから提供されていますが、監視したい項目や重視したい運用方法によって、採用する監視ソフトウェアが異なります。また、監視ソフトウェアの種類によって仕組みが異なりますが、通常は、監視対象となるサーバー上で稼働するOSに監視エージェントと呼ばれるソフトウェアをインストールし、統合管理ソフトウェアがインストールされた管理サーバーと監視エージェント間で通信します。
Linuxサーバー環境においては、古くからSNMP(Simple Network Management Protocol)と呼ばれる通信プロトコルを使って死活監視が行われています。以前は、SNMP自体がパスワード認証を平文(ひらぶん)で行っていたため、SNMPの利用自体が、セキュリティ上の懸念事項になっていましたが、現在では、SNMP v3(バージョン3)が暗号化のパスワード認証に対応しており、よりセキュアにSNMPによる通信が行えるようになりました。
Linuxシステムにおけるシステム監視は、ハードウェアベンダーが提供している監視エージェント型の監視方法と、オープンソースの監視ソフトウェアによるサービス監視などを組み合わせる方法が古くから採用されています。代表的なオープンソースソフトウェアの統合監視ツールとしては、ZABBIX(ザビックス)、Nagios(ナギオス)、Ganglia(ガングリア)などがありますが、その中でもZABBIXは、機能が豊富で使いやすく、設定も簡素であるという理由などからコミュニティの取り組みも非常に活発に行われています。
管理サーバーを構築せずにハードウェア監視を行う方法もあります。管理対象サーバーのオンボードに搭載されている遠隔管理チップが提供する監視用のWebページを表示する方法です。Webブラウザで遠隔管理チップにアクセスすると、管理対象サーバーの物理コンポーネントの状況をリアルタイムで監視することができます。管理サーバーを構築せずにハードウェア監視画面を手軽に表示できます。また、Linuxが稼働しているかどうかに関わらず遠隔管理チップにアクセスでき、電源ON、OFFや、BIOS画面の操作、OSの操作も遠隔操作できるため、非常に有用です。
HPE ProLiantサーバーシリーズやHPE Apolloシリーズに搭載されている遠隔管理チップの「iLO 4」経由でのハードウェア監視では、管理対象サーバーに監視エージェントをインストールする必要もありません。このような監視エージェントを使わないハードウェア監視を「エージェントレス監視」と言います。エージェントレス監視は、監視対象サーバーで監視エージェントが稼働しないため、計算資源を圧迫することもなく監視ができます。
一方、ハードウェア監視だけでなく、プロセス監視でも管理サーバーが不要なものもあります。代表的なものとしては、オープンソースソフトウェアのSupervisord(スーパーバイザーディ)やMonit(モニト)と呼ばれるプロセス監視ソフトウェアが存在します。先述の遠隔管理チップによるハードウェア監視と同様に、管理サーバーを構築せずに管理対象サーバーで稼動するプロセスを簡易的に監視することが可能です。ただし、SupervisordやMonitは、当然、管理対象サーバーのOSが稼働していることが前提です。SupervisordやMonitについては、以下のURLに示す筆者の連載記事に構築手順を記載していますので、参考にしてみてください。
オープンソースのSupervisordを使ったプロセス監視に関する情報:
https://www.itmedia.co.jp/enterprise/articles/1602/17/news004_2.html
https://www.itmedia.co.jp/enterprise/articles/1603/16/news001_2.html
https://www.itmedia.co.jp/enterprise/articles/1603/30/news001_3.html
オープンソースのMonitを使ったプロセス監視に関する情報:
https://www.itmedia.co.jp/enterprise/articles/1602/17/news004_3.html
バックエンドシステムにおける監視
今回のバックエンドシステムのシステム要件には、ハードウェア監視とサービス監視が含まれています。ハードウェア監視は、ハードウェア監視ソフトウェアが行いますが、Linux上で稼働するサービス監視は、どのように行うべきなのでしょうか。
実は、バックエンドシステムにおけるサービス監視は、HAクラスターソフトウェアと密接な関係にあります。HAクラスター構成のバックエンドシステムにおけるサービスの死活監視は、HAクラスターソフトウェアで監視します。HAクラスターソフトウェアは、物理サーバーの障害時や、Linuxで稼働する各種アプリケーションに何らかの障害が発生した場合に、正常な物理サーバーにアプリケーションを再起動させる役目を担っています。
したがって、サービス監視は、HAクラスターソフトウェアの必須の機能であり、物理サーバー自体の死活監視とサービス監視は、HAクラスターソフトウェアで担当させることが可能なのです。ただし、HAクラスターノードのCPUの負荷状況、ファン、温度、電源などの物理サーバー本体のコンポーネントの監視は、遠隔管理チップを使います。
フロントエンドシステムにおける監視
フロントエンドシステムにおける監視はどのように検討すればよいのでしょうか。フロントエンドシステムでは、バックエンドシステムとは異なり、HAクラスターがありません。さらに、ハードウェア監視やサービス監視だけでなく、仮想化KVMのゲストOSの監視、Dockerコンテナの監視も含まれています。このような複雑な監視を行うには、どうすればよいのでしょうか。
ハードウェア監視については、バックエンドシステムにおけるハードウェア監視ソフトウェアで統合監視を行えばよいのですが、サービス監視、ゲストOS監視、Dockerコンテナの監視などは、別途、監視ソフトウェアを導入しなければなりません。どのようなコンポーネントをどのように監視するのかによって、妥当な監視ソフトウェアを選定・導入しなければなりませんが、要件に対して、あまりにも高機能な管理ソフトウェアを導入しても、逆にトラブルになりかねません。そうはいっても、機能不足によって監視の精度が悪くなるのも本末転倒です。
今回は、KVM仮想化環境のゲストOS監視が要件に含まれていますが、さらに詳細な要件がある場合は、監視項目や運用管理項目などが細かく指定されている場合もあります。
監視項目や運用管理項目を挙げるとキリが無いのですが、非常にシンプルなゲストOSの監視・管理を行うのであれば、オープンソースソフトウェアのvirt-manager(バートマネージャ)などがあげられます。virt-manager以外にも、WebブラウザでゲストOSを管理するオープンソースソフトウェアのWebVirtMgrなどが存在します。
ただし、virt-managerとWebVirtMgrも非常に簡易的な管理機能しか提供されていませんので注意が必要です。エンタープライズレベルで要求される高度な仮想化環境のゲストOSの運用管理・監視機能が求められる場合は、オープンソースソフトウェアで提供されるoVirt(オーバート)などが存在します。
一方、システム要件に含まれているDockerコンテナの監視については、仮想化KVMの管理ツールとは別に、Dockerに対応した管理ツールを検討しなければなりません。オープンソースで提供されるDockerコンテナの監視ツールは、様々なものが存在しますが、最近では、管理・監視ソフトウェアとして非常に実績のあるZabbix(ザビックス)がDockerコンテナの監視に対応し、注目を集めています。
以下に、KVM仮想化環境におけるゲストOSとDockerコンテナに関する管理・監視ソフトウェアの情報源のURLを示しておきます。
KVM仮想化環境のゲストOSをWebブラウザで管理するソフトウェア「WebVirtMgr」:
https://github.com/retspen/webvirtmgr
エンタープライズレベルのKVM仮想化環境の管理ソフトウェア「oVirt」:
https://www.ovirt.org/
ZabbixによるDockerコンテナの監視に関する情報:
https://github.com/monitoringartist/zabbix-agent-xxl
以上で、バックグラウンドシステムとフロントエンドシステムの要件に対するシステム構成に関する考慮点などを解説してきました。システム要件から、具体的なハードウェアとソフトウェア構成を選定するまでには、様々な情報を入手し、実現の可能性を検討しなければなりません。本連載でご紹介した内容で、システム構成に関するすべての考慮点を網羅することはできませんが、ぜひ本ブログの記事を活用し、具体的なLinuxシステムを構成してみてください。
【筆者プロフィール】
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社
オープンソース・Linuxテクノロジーエバンジェリスト
兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国ヒューレット・パッカードからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。
現在は、日本ヒューレット・パッカードにて、Hadoop、Spark、Docker、OpenStack、Linux、FreeBSDなどのサーバー基盤のプリセールスSE、文書執筆を担当。日本ヒューレット・パッカードが認定するオープンソース・Linuxテクノロジーエバンジェリストとして、メディアでの連載記事執筆、講演活動なども行っている。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「Mesos実践ガイド」「Docker 実践ガイド」「CentOS 7実践ガイド」「OpenStack 実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。