JMX インターフェイスを使用したライブ モニタリング
この記事は、JMX クライアントでの監視用に Jira 内で JMX MBeans を表示する方法、および製品内診断用に JMX MBeans を使用する方法について説明します。
JMX とは何か
JMX (Java Management Extensions) は、Java アプリケーションを監視及び管理するための技術です。JMX は、MBeans (Managed Beans) と呼ばれるオブジェクトを使用して、アプリケーションからデータやリソースを表示します。Jira Server または Jira Data Center の大規模なインスタンスでは、JMX を有効化することで、アプリケーション リソースの消費量をより簡単に監視したり、インデックス関連のパフォーマンスの問題をより簡単に診断したりできるようになります。これにより、マシン リソースの保持 / 最適化方法について、より優れた判断を行えます。
Jira によって収集されるメトリック
次のテーブルは、Jira が収集するメトリック (MBeans) を示します。これらはすべて、com.atlassian.jira
プロパティにグループ化されます。
メトリック | 説明 | Jira 起動後にリセット |
---|---|---|
dashboard.view.count | すべてのダッシュボードがユーザーによって閲覧された回数 | はい |
entity.attachments.total | 添付ファイルの数 | N/A |
entity.components.total | コンポーネントの数 | N/A |
entity.customfields.total | カスタム フィールドの数 | N/A |
entity.filters.total | フィルターの数 | N/A |
entity.groups.total | ユーザー グループの数 | N/A |
entity.issues.total | 課題の数 | N/A |
entity.users.total | ユーザー数 | N/A |
entity.versions.total | 作成されたバージョンの数 | N/A |
issue.assigned.count | 課題がユーザーに割り当てられた/再割り当てされた回数 (各アクションをカウント) | はい |
issue.created.count | Jira インスタンス起動後に作成した課題の数 | はい |
issue.link.count | Jira インスタンス起動後に作成した課題リンクの数 | はい |
issue.search.count | 課題の検索回数 | はい |
issue.updated.count | 課題の更新回数 (情報の追加または変更後の各更新) | はい |
issue.worklogged.count | 課題に対する作業の記録回数 | はい |
jira.license | 所有しているライセンスのタイプ、アクティブ ユーザーの数、および各ライセンス タイプで利用可能なユーザーの最大数 | N/A |
quicksearch.concurrent.search | リアルタイムで実行されているクイック検索の同時検索数です。これを使用すると、同時検索に設定した制限が十分かどうかを判断できます。 | はい |
web.requests | リクエストの数 (invocation.count)および合計応答時間 (total.elapsed.time) | はい |
次のメトリックは 8.1 以降の Jira に追加されており、com.atlassian.jira/metrics
で公開されています。次のメトリックは、Jira を再起動するとすべてリセットされます。
メトリック パス | 説明 |
---|---|
comment | コメント操作に関するメトリック |
comment/Create | 作成されているコメント |
comment/Delete | 削除されているコメント |
comment/Update | 更新されているコメント |
indexing | 課題、コメント、作業ログ、変更のインデックスに関するメトリック |
indexing/CreateChangeHistoryDocument | 変更履歴のエンティティ用に作成されているインデックス ドキュメント。各課題に対して複数の変更履歴ドキュメントが作成される可能性があることにご注意ください。 |
indexing/CreateCommentDocument | コメント エンティティ用に作成されているインデックス ドキュメント |
indexing/CreateIssueDocument | 課題エンティティ用に作成されているインデックス ドキュメント。 |
indexing/IssueAddFieldIndexers | FieldIndexer モジュールは、インデックス ドキュメント作成の一環として課題ドキュメントを強化します。プラグインはカスタム FieldIndexer モジュールを登録できます。これらのメトリックでは、FieldIndexer で費やされた時間の詳細が提供され、それらによって生じたインデックス パフォーマンスの低下を追跡するのに使用できます。このメトリックは、作成された課題ドキュメントごとに組み合わされたすべての FieldIndexer で費やされた時間について示しています。 |
indexing/LuceneAddDocument | Lucene インデックスへのドキュメントの追加に費やされた時間 |
indexing/LuceneDeleteDocument | Lucene インデックスから語句が一致する 1 つ以上のドキュメントを削除するのに費やされた時間 |
indexing/LuceneOptimize | Lucene インデックスの最適化に関するメトリック (Jira から手動でトリガーされます) |
indeding/LuceneUpdateDocument | Lucene インデックスへの作成済みドキュメントの追加に費やされた時間 |
indexing/ReplicationLatency | レプリケーション遅延は、変更が行われたノードで課題、コメント、または作業ログのインデックス作成が行われてから現在のノードでインデックス作成操作が再生されるまでの時間です。 |
indexing/WaitForLucene | ドキュメントは Lucene インデックスに非同期で書き込まれます。このメトリックでは、Lucene が書き込みを完了するまで Jira のインデックス作成スレッドが待機した時間をキャプチャします。 |
indexing/issueAddSearchExtractors | EntitySearchExtractor は、インデックス ドキュメント作成の一環として課題ドキュメントを強化するものです。プラグインを使用してカスタム EntitySearchExtractor モジュールを登録できます。これらのメトリックを利用すると、EntitySearchExtractor で費やされた時間に関するインサイトを得て、それらによって生じたインデックス パフォーマンスの低下を追跡できます。これらのメトリックは、作成された課題ドキュメントごとに組み合わされたすべての EntitySearchExtractor で費やされた時間について示しています。 |
課題 | 課題操作に関するメトリック |
issue/Create | 作成されている課題 |
issue/Delete | 削除されている課題 |
issue/Index | Lucene インデックスに追加されている課題。これは、課題ドキュメントの作成およびインデックスへのドキュメントの追加を対象としています。 |
issue/DeIndex | Lucene インデックスから削除されている課題 |
issue/ReIndex | 課題更新の結果としてインデックスが再作成されている課題。これは、課題ドキュメントの作成、インデックスからの古いドキュメントの削除、およびインデックスへの新しいドキュメントの追加を対象としています。 |
issue/Update | 更新されている課題 |
Jira の監視
Jira を監視する前に、JMX の監視を有効にしてから、JMX クライアントを使用してメトリックを表示する必要があります。
考慮事項
メトリックの閲覧は常に、Jira にパフォーマンス上の影響を与えます。更新は 1 秒に 1 回未満にすることをお勧めします。
Jira で JMX 監視を有効化する
既定ではすべてのメトリックが収集されますが、それらを公開するには JMX 監視を有効にする必要があります。これは Jira で実行できますが、Jira 管理者である必要があります。
- Jira で、[管理] () > [システム] > [JMX 監視] に移動します。
- JMX 監視の有効化を切り替えます。
JConsole を使って監視する
JMX 監視を有効にした後、任意の JMX クライアントを使用してメトリックを表示できます。これをすばやく簡単に行うために、ここでは、JConsole を使用して表示する方法について説明しています。Jira インスタンスはローカルでもリモートでも監視できます。
特定の課題のトラブルシューティングを行う場合、または Jira を短期間のみ監視する必要がある場合は、Jira のローカル監視が便利です。ローカル監視はサーバーのパフォーマンスに影響を与える可能性があるため、本番システムの長期的な監視にはお勧めしません。
Jira のリモート監視は、Jira Server のリソースを消費しないため、本番環境システムにお勧めです。
製品内診断で JMX からデータベース接続メトリックを利用する
バージョン 9.3 以降では、製品内診断用の一連のデータベース接続メトリックを JMX から利用できるようになりました。
製品内診断 (IPD) では、実行中のインスタンスの動作についてより深いインサイトが得られます。
IPD には、Jira とそのデータベースの間の相互作用を対象とした追加のメトリックが用意されています。データベース接続メトリックを使用すると、環境やインフラストラクチャでパフォーマンスの問題を発生させる可能性のある要素を効率的に特定できます。
この機能は既定で有効になっています。実際のメトリックは次の形式で利用できます。
- 新しい JMX MBeans として
- 新しい IPD ログ ファイル (
atlassian-jira-ipd-monitoring.log
) 内の JMX 値のスナップショットの履歴として
このログ ファイルは、すべての既存のログ ファイルが格納されている {jira_home}\log
フォルダにあります。このログ ファイルは、ATST プラグインで作成されるサポート ZIP ファイルにも含まれています。必要に応じて、Atlassian troubleshooting & support tools プラグインでサポート ZIP ファイルを生成し、ファイルをアトラシアン サポートに送信できます (アトラシアン社内にはファイル解釈用のツールがあります)。プラグインの詳細をご確認ください。
コミュニケーション
この機能では通信に次の方法が使用されます。
- JMX: JMX MBean は内部スケジュールに基づいて定期的に更新されます。
- The log file
atlassian-jira-ipd-monitoring.log
: JMX values are snapshotted and recorded to the log file on a configurable schedule. By default, the JMX values are polled and written to the log file every 60 seconds. (This parameter is up to date since Jira 9.3 EAP 02.) This polling interval can be changed by using the system propertyjira.diagnostics.ipdlog.poll.seconds
.
システム プロパティ jira.diagnostics.ipdlog.poll.seconds
は Jira 9.6 で削除される予定です。
データベース接続メトリック
IPD によって提供されるメトリックとその説明については、次の表を参照してください。
メトリックを使用するには、必ず JMX を有効にしてください。
MBean オブジェクト名 | メトリックの説明 |
---|---|
com.atlassian.jira:type=metrics, | db.connection.failures.counter
|
com.atlassian.jira:type=metrics, | db.connection.latency.statistics
|
com.atlassian.jira:type=metrics, | db.connection.latency.value
|
com.atlassian.jira:type=metrics, | db.connection.pool.numActive.statistics
|
com.atlassian.jira:type=metrics, | db.connection.pool.numActive.value
|
com.atlassian.jira:type=metrics, | db.connection.pool.numIdle.statistics
|
com.atlassian.jira:type=metrics, | db.connection.pool.numIdle.value
|
com.atlassian.jira:type=metrics, | db.connection.state.value
|
To find more details of cross-product database connectivity metrics, check the article Interpreting cross-product metrics for in-product diagnostics.
IPD を無効にする
IPD は既定で有効になっています。無効にするには、次の手順に従います。
<JIRA_URL>/secure/admin/SiteDarkFeatures!default.jspa
に移動します。ここで、<JIRA_URL>
は Jira インスタンスのベース URL です。- [有効にする開発中機能] テキスト領域で
com.atlassian.jira.in.product.diagnostics.disabled
と入力します。[追加] を選択します。ダーク機能を管理する方法をご確認ください。- IPD を再度有効にするには、[開発中機能 (サイト経由)] パネルで
com.atlassian.jira.in.product.diagnostics.disabled
を探して [無効化] を選択します。
- IPD を再度有効にするには、[開発中機能 (サイト経由)] パネルで
In Jira 9.4.3, you can enable and disable the IPD with a toggle in the user interface. To use the toggle:
- Administration_menu_System_
In the left-side panel, go to System Support and select Monitoring.
Use the In-product diagnostics monitoring toggle to enable or disable IPD monitoring.
ログ形式
atlassian-jira-ipd-monitoring.log
への書き込みは log4j を使用して行われます。その設定は log4j.properties
で管理します。
#####################################################
# In-product diagnostics monitoring logging
#####################################################
log4j.appender.ipd=com.atlassian.jira.logging.JiraHomeAppender
log4j.appender.ipd.File=atlassian-jira-ipd-monitoring.log
log4j.appender.ipd.MaxFileSize=20480KB
log4j.appender.ipd.MaxBackupIndex=5
log4j.appender.ipd.layout=com.atlassian.logging.log4j.NewLineIndentingFilteringPatternLayout
log4j.appender.ipd.layout.ConversionPattern=%d %m%n
log4j.logger.ipd-monitoring = INFO, filelog
log4j.additivity.ipd-monitoring = false
log4j.logger.ipd-monitoring-data-logger = INFO, ipd
log4j.additivity.ipd-monitoring-data-logger = false
ログの内容
既定では、各ログ エントリには簡潔データ セットが含まれています。拡張データ セットをログに記録するには、com.atlassian.jira.in.product.diagnostics.extended.logging
機能フラグを有効にします。
拡張データを有効にするには、次の手順に従います。
<JIRA_URL>/secure/admin/SiteDarkFeatures!default.jspa
に移動します。ここで、<JIRA_URL>
は Jira インスタンスのベース URL です。- [有効にする開発中機能] テキスト領域で
com.atlassian.jira.in.product.diagnostics.extended.logging.enabled
と入力します。[追加] を選択します。ダーク機能を管理する方法をご確認ください。- 拡張データを無効にするには、[開発中機能 (サイト経由)] パネルで
com.atlassian.jira.in.product.diagnostics.extended.logging.enabled
を探して [無効化] を選択します。
- 拡張データを無効にするには、[開発中機能 (サイト経由)] パネルで
次の各表で、簡潔ログ形式と拡張ログ形式の構造の違いを参照してください。
JMX のメトリックは常に拡張形式です。
簡潔データ
MBean タイプ | Properties | 属性 |
---|---|---|
カウンター | timestamp ラベル 属性 |
|
値 |
| |
統計 |
|
拡張データ
JMX のメトリックは常に拡張形式です。
MBean タイプ | Properties | 属性 |
---|---|---|
カウンター | timestamp ラベル 属性 オブジェクト名 |
|
値 |
| |
統計 |
|
指標属性の定義
指標属性の詳細は、次のセクションを展開してご確認ください。
プロパティを処理する
JMX ログ記録のポーリング間隔は 60 秒に設定されており、変更できません。
ログ ファイルのポーリング間隔は 60 秒に設定されており、システム プロパティ
jira.diagnostics.ipdlog.poll.seconds
を使用して変更できます。既定では、JMX 値はポーリングされて
atlassian-jira-ipd-monitoring.log
に書き込まれます。