はじめに
システム全体を効率よく管理するには、サーバのハードウェアリソースやネットワーク、OS、アプリケーションなどの状態を常に適切に把握できる監視システムが必要とされています。
監視ツールによって果たせる機能は異なりますが、監視することのメリットとして、障害の検知や原因調査を迅速に行えること、適切なマシンリソースの割り当てを検討するための材料を集めること、特定の条件を満たした際の対応を自動化できることなどが挙げられます。
コラボレーションツールとして社内の情報の基盤となるアトラシアン製品においては、システムの停止が会社の業務に与える影響は大きく、いち早く不具合に気づき監視ツールは有償・無償数多く存在しますが、当社では「Zabbix」を利用してアプリケーションの監視を行っています。Zabbixは、ラトビアのZabbix社が開発している、サーバ・ネットワーク・アプリケーション統合監視のためのオープンソース・ソフトウェアです。フリーでありながら高機能で、かつ導入が容易であることが特徴です。また、Linuxの他にWindowsやMac OS X、商用UNIXなど、さまざまなプラットフォームで動作します。
Zabbixの特徴的な機能のひとつとしてZabbix Agentがあります。多くの監視ツールでは、監視対象となるサーバ上でSNMP(Simple Network Management Protocol)デーモンが動作していることや、監視を行うに際してMIB(Management Information Base)を理解する必要がありますが、ZabbixではZabbix Agentがその代替として機能します。また、必要な監視項目はテンプレートとして提供されているため、MIBで監視に必要な値を特定するといった作業を行うことなく、短時間で監視を行うことができます。(もちろん、SNMPによる監視も可能です)
本記事ではZabbixを利用した、アトラシアン製品の運用における監視について紹介します。
必要な環境
今回は、監視サーバにはZabbix Server 2.2、監視対象となるアプリケーションサーバにはZabbix Agent 2.2をインストールします。
アプリケーションサーバには、アトラシアン製品の中でもよく利用されるアプリケーションである「JIRA Software」(課題管理ソフトウェア)と「Confluence」(Wikiソフトウェア)をインストールし、各アプリケーションのアプリケーションコンテナであるApache TomcatのJMX(Java Management Extensions)による監視にも対応します。
監視サーバ、アプリケーションサーバともに、AWS(Amazon Web Services)上での運用を想定しています。ただし、AWS以外でも運用方法に大きな差はありません。
なお、すでに基本的なセットアップは終了しているものとし、各サーバの構築・セットアップの手順については記載しません。
Zabbixサーバ(監視サーバ)
- CentOS 7.2
- Zabbix Server 2.2
アプリケーションサーバ(監視対象)
- CentOS 6.9
- JIRA Software 7.4.2
- Confluence 6.3.1
- Zabbix Agent 2.2
アトラシアン製品の監視のポイント
アトラシアン製品の監視のポイントは次の通りです。
基本的なサーバリソース監視
- CPU
- メモリ
- ストレージ
- ネットワーク
など。
JMX(Java Management Extensions)監視
- ヒープ・メモリ
- コードキャッシュ
など。
アトラシアン製品は、JavaおよびApache Tomcat上で動作するので、特に、ヒープ・メモリやコードキャッシュ、スレッド数など一般的なJavaの監視項目を抑えることが重要です。
また、ファイルのアップロードが増えるような利用が想定される場合には、CPUやメモリの負荷だけでなくディスク使用率への注意も必要になります。
監視設定
ここまで説明したポイントを踏まえて設定を実施します。基本的にはテンプレートをもとに設定していきます。
テンプレートとは、その名の通り設定の雛形となるもので、関連する設定(主にアイテム、グラフ、トリガー)を1つにグループ化したものです。テンプレートを利用することで、目的に応じた設定をホストに対して一括で割り当てることができます。
今回は、次のテンプレートを監視対象ホストに適用しました。アトラシアン製品の監視におけるポイントとなるものについて紹介しますが、細かなZabbixの設定に関しては説明を省きます。
なお、ここでは「テンプレート名(標準/当社にて作成)」の形で表記し、説明していきます。標準のテンプレートは「Zabbix_Templates/Official_Templates/2.2」からダウンロードして利用します。
OS
Template OS Linux(標準)
Linuxサーバ監視のためのテンプレートです。CPUやメモリといったOSの基本的なデータを取得し監視することができます。
Template App Zabbix Agent(標準)
Zabbix Agent監視のためのテンプレートです。Zabbix Agentの状態を監視することができます。なお、以下の画像では、Template OS Linux(標準)にTemplate App Zabbix Agent(標準)をリンクしています。
DB
Template App DB xxx(当社にて作成)
PostgreSQL monitoring template for Zabbix (pg_monz)をDBMS(PostgreSQL)に合わせてカスタマイズのうえ、DBMSに応じたテンプレートを用意します。主な監視対象は、コネクション数です。
なお、テンプレート名の「xxx」は、pg_monz+PostgreSQLのバージョンとしています。
Java(Xは各アプリケーションに内包されているJavaのバージョン)
Template JMX Generic Java X(当社にて作成)
Javaの状態を監視(JMX監視)するためのものです。標準で用意されている「Template JMX Generic」をコピーし、利用するJavaのバージョンと運用環境に合わせてカスタマイズします。
なお、テンプレート名の「X」は、Javaのバージョンとしています。
Tomcat(Xは各アプリケーションに内包されているTomcatのバージョン)
Template JMX Tomcat X(当社にて作成)
Tomcatの状態を監視するためのものです。標準で用意されている「Template JMX Tomcat」をコピーし、利用するTomcatのバージョンと運用環境に合わせてカスタマイズします。
ここでは[マクロ]に該当のアプリケーションのポートを指定、[トリガー]の条件式のTomcatのバージョンを監視対象のものに変更し、Thread数が最大Thread数を超過した際にアラートを上げるトリガーを設定しました。アプリケーションやアプリケーションのバージョンによっては、[アイテム欄]の各項目の[キー]の内容の変更が必要になる場合があります。