SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

JIRAやConfluenceをもっと使いこなそう! エキスパートが教える、外部ツール連携術(AD)

JIRAやConfluenceをZabbixで監視して運用してみよう

JIRAやConfluenceをもっと使いこなそう! エキスパートが教える、外部ツール連携術 第6回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 昨今、開発現場での情報共有は必須ともいえるほどに重要視されています。情報共有ツールとしてJIRAやConfluenceといったアトラシアン製品は多くの開発現場で使用されていますが、チームの仕組みに存在するからなんとなく使っている……そのような方も多いのではないでしょうか。しかしせっかくのツール、多種多様な機能をもっと活用したいと思いませんか? 本連載では使い慣れた環境と組み合わせてツールをさらに使いこなす方法を、アトラシアン製品の国内販売代理店であるリックソフトがお伝えします。前回は「JIRA Software」をビジュアル分析ツールである「Tableau(タブロー)」と連携させ、データを可視化する方法を紹介しました。今回はアトラシアン製品の運用状況を、OSSである「Zabbix」を使用して監視する方法を解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 システム全体を効率よく管理するには、サーバのハードウェアリソースやネットワーク、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(標準)をリンクしています。

Template OS Linux(アプリケーション欄)
Template OS Linux(アプリケーション欄)
Template OS Linux(グラフ欄)
Template OS Linux(グラフ欄)

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のバージョンとしています。

Template JMX Generic Java 8(アプリケーション欄)
Template JMX Generic Java 8(アプリケーション欄)
Template JMX Generic Java 8(アイテム欄で有効化したもの)
Template JMX Generic Java 8(アイテム欄で有効化したもの)
Template JMX Generic Java 8(トリガー欄で有効化したもの)
Template JMX Generic Java 8(トリガー欄で有効化したもの)

Tomcat(Xは各アプリケーションに内包されているTomcatのバージョン)

Template JMX Tomcat X(当社にて作成)

 Tomcatの状態を監視するためのものです。標準で用意されている「Template JMX Tomcat」をコピーし、利用するTomcatのバージョンと運用環境に合わせてカスタマイズします。

 ここでは[マクロ]に該当のアプリケーションのポートを指定、[トリガー]の条件式のTomcatのバージョンを監視対象のものに変更し、Thread数が最大Thread数を超過した際にアラートを上げるトリガーを設定しました。アプリケーションやアプリケーションのバージョンによっては、[アイテム欄]の各項目の[キー]の内容の変更が必要になる場合があります。

Template JMX Tomcat 7(テンプレート欄のマクロ欄)
Template JMX Tomcat 7(テンプレート欄のマクロ欄)
Template JMX Tomcat 7(トリガー欄)
Template JMX Tomcat 7(トリガー欄)

監視項目を確認しよう

 テンプレートを監視対象に適用し、必要に応じたアイテム・トリガーの設定をした後は、監視データを確認します。

 ここからは、実際に当社でアプリケーションの運用を行う際に確認している監視項目とグラフについて解説します。

OS

CPUの状態

 負荷のかかる機能の使用や、アプリケーション・アドオンの不具合等により、CPU使用率が高くなる場合があります。

 また、CPU使用率に加え、ロードアベレージでCPUが処理しきれていない処理が想定以上に発生していないかを確認します。

 CPUの状態を確認しながら割り当てているCPUのスペックが適切かを見極めます。

CPU使用率

 CPU使用率が高くなり始めた時刻のログを確認することで、原因を特定できる場合があります。

 また、負荷の内容(I/O待ちや仮想環境による制限)によりグラフの山を構成する色が異なるため、原因の特定に役立つ場合があります。

 以下のグラフでは青い部分が多く、12:25頃からアプリケーションがCPUを多く使う処理が実行されている様子が分かります。

CPU使用率のグラフ
CPU使用率のグラフ
ロードアベレージ

 CPU使用率とロードの相関関係が分かります。

 下のグラフは、上のCPU使用率のグラフと同時刻のものです。CPU使用率は高いものの、ロードアベレージはそれほど高くないため、処理待ちとなっている状況ではないようです。

ロードアベレージのグラフ
ロードアベレージのグラフ

メモリの状態

 メモリやスワップメモリの割り当てが不足していないことを確認します。

 例えば、「Bitbucket」(アトラシアン製のGitリモートリポジトリサーバ)の場合、巨大なリポジトリに対するgit cloneなどの実行により、OSのメモリが大量に消費されることがあります。

 以下のグラフでは、11:55頃から利用可能なメモリが減少し、スワップメモリを使用し始めた様子が見て取れます。

使用可能メモリ量のグラフ
使用可能メモリ量のグラフ

ネットワークトラフィック

 転送量が大幅に増加するようになった際は、トラフィック増がいつ発生しているか、不正な通信が発生していないことを確認します。

 以下のグラフでは青い部分(Out going)が多く、ダウンロードによる転送量が多い様子が見て取れます。

ネットワークトラフィックのグラフ
ネットワークトラフィックのグラフ

ディスク使用率

 ディスクの割り当てが不足していないことを確認します。ディスク使用率を確認することで、ディスク増設の計画を立てやすくなります。

 例えば、以下の場合3カ月で20GB増量しているため、3カ月後にはディスク増設が必要になると予測できます。

ディスク使用率のグラフ
ディスク使用率のグラフ

DB

DBのコネクション数

 以下のグラフでは一時的に接続数の上限値(300)に達しているため、上限値の見直しを検討することとなります。

DBのコネクション数のグラフ
DBのコネクション数のグラフ

Java

ヒープ・メモリ

 以下のグラフでは、ヒープメモリの使用率が上昇し続けている様子が見て取れます。メモリを大量に使用する処理の実行や、メモリリークの可能性が疑われます。

ヒープ・メモリのグラフ
ヒープ・メモリのグラフ

Code Cache

 Code Cacheの量の監視です。以下のグラフでは3/3 12:00頃にCode Cacheが上限値に達しています。

 Code Cacheが上限値に達すると、コンパイル済みのコードが再利用されず、パフォーマンスの大幅な低下を招きます。

Code Cache量のグラフ
Code Cache量のグラフ

HTTP Conector

 JavaへのHTTPリクエスト数を確認することができます。

 以下のグラフでは一時的に接続数の上限値(400)に達しているため、上限値の見直しを検討することとなります。

HTTP Conector数のグラフ
HTTP Conector数のグラフ

Web監視

 設定したURLに対してHTTPでアクセスできない場合にアラートが発生します。これにより、何らかの異常によってアプリケーションへアクセスできないことに気づくことができます。

 なお、Web監視はトリガーで設定して利用します。

 以下のグラフでは、9/15 22:18~22:38の間、リクエストに対するレスポンスが返ってきていません。そのため、何らかの異常によってアプリケーションへアクセスできない状態となっていることが分かります。

Web監視のグラフ
Web監視のグラフ

おわりに

 以上をご覧いただいてお分かりの通り、適用されている全ての項目を監視しているわけではなく、運用上必要な項目に限定して監視しています。Zabbixのテンプレートには多くの項目がありますが、このようにポイントを抑えて必要な項目に限定して監視を行うことで、運用負荷の軽減につながります。

 Zabbixなどの最近の統合監視ツールは、監視項目の検討やしきい値のチューニングとそれに伴う設定、ツールの使い方・値やグラフの読み方等の理解に一手間かかります。しかし、一度導入して運用を開始してしまえばその後の障害時や運用に役立つことは間違いありません。また、Zabbixを導入することで値が可視化されるため、例えばトラブルが発生した際、アプリケーションのバグなのか、大量のアップロードが原因なのか、単純にリソースの割り当てが不十分なのかなど、その原因が値やグラフを読むことで推測しやすくなり、トラブル発生時の原因調査に大いに役立ちます。

 なお、ここではZabbixをご紹介しましたが、Zabbix以外でも同様の監視を行うことは可能です。例えば、監視サーバの運用を外部に任せたい(自前で監視環境を持ちたくない)、監視サーバを新たに設置することができないといった場合は、SaaS型の監視サービスを利用するのも良いでしょう。SaaS型のサービスの例として、New RelicDataDogMackerelといったサービスが挙げられます。

 今回は、アトラシアン製品の監視ということで、当社の運用で実際に活用しているポイント・監視項目を紹介させていただきました。

 快適な監視生活を目指しましょう。

参考

リックソフトはアトラシアン製品アジアパシフィック売り上げ第1位(2015~2016年)

 リックソフト株式会社は、日本でトップレベルのAtlassian Platinum Solution Partnerです。アトラシアン製品の専任技術者が30人以上在籍しており、手厚いサポートを提供しています。また、豊富なライセンス購入特典もご用意しております。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10539 2017/12/07 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング