Enabling JMX counters for performance monitoring

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

この記事は、JMX クライアントで監視するために、Bitbucket Server 内の JMX MBeans を開示する方法について説明します。

JMX とは何か

JMX (Java Management eXtensions) は、Java アプリケーションの監視と管理を行うためのテクノロジーです。JMX は MBean (Managed Bean) と呼ばれるオブジェクトを使用してアプリケーションのデータとリソースを公開します。

Bitbucket Server 内で JMX 監視を有効化する理由

このページの内容:

Bitbucket Server または Bitbucket Data Center の大規模なインスタンスでは、JMX を有効化することで、アプリケーション リソースの消費状況をより簡単に監視できるようになります。これにより、マシン リソースの保持 / 最適化方法について、より優れた判断を行えます。

JMX を使用して何を監視できますか?

Bitbucket Server 内で JMX カウンタを使用してさまざまな統計情報を監視できます。以下は監視できる統計情報の例です。

Webhook 統計情報 (com.atlassian.webhooks:name=Webhooks)

名前 説明
PublishCount webhook をトリガーできたイベントの合計数
(公開によって多数のディスパッチが作成される場合があります)
DispatchSuccessCount 正常な HTTP レスポンスによって正常に起動した webhook の合計数
DispatchRejectedCount 実行が拒否された webhook ディスパッチの数
DispatchLastRejectedTimestamp サーキット ブレークによって、または多数の webhook が動作したために前回 webhook が拒否された時刻
DispatchInFlightCount トリガーされたディスパッチと解決を待機しているディスパッチの合計数
DispatchFailureCount 正常に起動したが HTTP レスポンスが失敗を示している webhook の合計数
(非 2xx コード)
DispatchErrorCount ディスパッチされたときにエラーが発生した webhook の合計数
DispatchCount ディスパッチされた webhook の合計数


スレッド プール

スレッド プール 説明 オブジェクト名
IoPumpThreadPool 外部プロセス IO を処理するスレッド com.atlassian.bitbucket.thread-pools:name=IoPumpThreadPool
ScheduledThreadPool さまざまな複数のスケジュール済みタスクを処理するスレッド プール com.atlassian.bitbucket.thread-pools:name=ScheduledThreadPool
EventThreadPool イベントを @EventListenermethods にディスパッチするスレッド com.atlassian.bitbucket.thread-pools:name=EventThreadPool

スレッド プール属性

名前
説明
ActiveCount アクティブにタスクを実行しているスレッド数の概算を返します。
MaximumPoolSize 最大許容スレッド数を返します。
PoolSize 現在プール内にあるスレッド数を返します。
QueueLength Number of tasks awaiting execution by the thread pool
LargestPoolSize Largest number of threads that have ever been simultaneously in the pool
CompletedTaskCount Approximate total number of tasks that have completed execution. Because the states of tasks and threads may change dynamically during computation, the returned value is only an approximation, but one that does not ever decrease across successive calls

リポジトリ (com.atlassian.bitbucket:name=Repositories)

名前 説明
count Bitbucket Server ですべてのプロジェクトで現在設定されているリポジトリの数

Scm 統計 (com.atlassian.bitbucket:name=ScmStatistics)

名前 説明
Pulls 開始以降、このインスタンスが提供した scm プルの数
Pushes インスタンスの開始以降、このインスタンスが受信した scm プッシュの数


チケット統計

Bitbucket Server は、システムがリクエストで過負荷状態になることを防ぐためのバックプレッシャーの作成メカニズムとして "チケット" を使用します。Bitbucket Server で使用されるチケットには、ホスティング チケットとコマンド チケットの 2 種類があります。
ホスティング チケット (com.atlassian.bitbucket:name=HostingTickets): 同時に実行される可能性がある SCM ホスティング操作 (HTTP または SSH 経由のプッシュおよびプル) の数を制限します。
コマンド チケット (com.atlassian.bitbucket:name=CommandTickets): 同時に実行される可能性がある git diff、git blame、git rev-list などの SCM コマンドの数を制限します。

Bitbucket Server では、各チケット タイプごとに以下のメトリックをサポートします。

名前 説明
Available Number of tickets available for acquisition (lower number means higher load)
LastRejection Timestamp of the last rejected ticket, or null if no tickets have been rejected
名前 Name of the ticket bucket either 'scm-command' or 'scm-hosting'
OldestQueuedRequest Timestamp at which the oldest queued request started waiting, or null if there are no queued requests
QueuedRequests Number of requests currently waiting for an available ticket
合計 Maximum number of tickets that can be acquired concurrently before back-pressure is applied
Used Number of tickets that have been acquired (higher number means higher load)

イベント統計 (com.atlassian.bitbucket:name=EventStatistics)

名前 説明
DispatchedCount 実行されたリスナー コールバックの合計数。10 リスナーに配信されるイベントが 10 ディスパッチとカウントされます
LastRejection 前回のイベントが拒否された日付、イベントが拒否されていない場合は null
PublishedCount 配信されたイベントの総数。10 リスナーに配信されるイベントが 1 イベントとカウントされます。
QueueCapacity イベントが却下される前にキューに追加できるイベント コールバックの最大数
QueueLength キューに追加されているがまだディスパッチされていないイベント コールバックの数
RejectedCount イベント キューが満杯だったためにディスパッチされなかったイベントの合計数
RemainingQueueCapacity イベントが却下される前にキューに追加できるイベント コールバックの残りの数

クラスタ ロック統計情報 (com.atlassian.bitbucket:name=ClusterLocks)

名前 説明

LockedCount

このノードが現在保持しているクラスタ ロックの数

QueuedThreadCount

このノード上の、現在ロックを待機してブロックされているスレッド数

TotalAcquiredCount

このノードの起動以降、ノードでクラスタ ロックが取得された合計回数

TotalAcquireErrorCount

このノードの起動以降、ノードでクラスタ ロックを取得しようとしているときに例外がスローされた回数

TotalAcquireTimeMillis

このノードで任意のスレッドがロックの取得に費やしたミリ秒単位の合計時間 (ロックが使用可能になるまで待機しているブロック時間を含む)

TotalReleasedCount

このノードの起動以降、ノードでクラスタ ロックが解放された合計回数

TotalReleaseErrorCount

このノードの起動以降、ノードでクラスタ ロックの開放中に例外がスローされた合計回数

SSH セッション統計 (com.atlassian.bitbucket:name=SshSessions)

名前 説明
ActiveSessionCount 現在アクティブな SSH セッションの数
MaxActiveSessionCount 前回の起動以降、同時にアクティブな SSH セッションの最大数
SessionClosedCount 前回の起動以降、クローズされた SSH セッションの合計数
SessionCreatedCount 前回の起動以降、作成された SSH セッションの合計数
SessionExceptionCount SSH コマンド実行で例外がスローされたために終了した SSH セッションの合計数


サードパーティ ライブラリ属性

Bitbucket Server は、多数のサードパーティ ライブラリから JMX 属性を開示します。以下の一覧は、運用の観点で特に興味深い属性のサンプルです。 

HikariCP - (com.zaxxer.hikari:type=Pool (bitbucket))
名前
説明
ActiveConnections アクティブ接続数 (使用中)
IdleConnections アイドル接続数
ThreadsAwaitingConnection 接続を待機しているスレッドの数 (利用可能なすべての接続が使用中の場合)
TotalConnections 合計接続数
Hibernate - (org.hibernate.core:sessionFactory=bitbucket.core,serviceRole=org.hibernate.stat.Statistics,serviceType=org.hibernate.stat.internal.ConcurrentStatisticsImpl)
名前 説明
QueryCacheHitCount キャッシュから正常に取得されたキャッシュ済みクエリのグローバル数
QueryCacheMissCount キャッシュ内で検出されなかったキャッシュ済みクエリのグローバル数
SecondLevelCacheHitCount キャッシュから正常に取得されたキャッシュ可能エンティティ / コレクションのグローバル数
SecondLevelCacheMissCount キャッシュ内で検出されず、データベースからロードされたキャッシュ可能エンティティ / コレクションのグローバル数

Bitbucket Server 内での JMX MBeans の公開

Bitbucket Server で JMX を使用した特定の統計の公開を有効化するには、以下を実行する必要があります。

  1. Locate and open the bitbucket.properties file in the <Bitbucket home directory>/shared directory. 
    1. ファイルにこのプロパティを追加します。

      jmx.enabled=true
    2. ファイルを保存して閉じます。
       
  2. JMX モニタリングに安全にアクセスするために、JMX パスワード ファイルを作成します。
     
  3. Modify the set-jmx-opts.sh file to enable Bitbucket Server to expose JMX Mbeans.


これらの変更は、Bitbucket Server が再起動されるまで反映されません。

JMX パスワード ファイルのセットアップ

JMX パスワード ファイルをセットアップして、JMX モニタリングに安全にアクセスする方法

  1. Create a file named jmx.access.

    このファイルには、パスワード情報が含まれます。ファイルが、Bitbucket Server を実行するセキュアなユーザーからのみ読み取り可能であることを確認します。ただし、Bitbucket Server ユーザーがファイルを読み取ることができない場合、Bitbucket Server の起動が失敗する点にご注意ください。

  2. Edit the jmx.access file to include this property and save the file.

    monitorRole=<password>

    If you wish to use a username other than monitorRole or controlRole you will need to modify the jmxremote.access file located in the /lib/management/ directory of the installed Java.

Bitbucket Server 環境ファイルの変更

To modify the set-jmx-opts.sh (for Windows set-jmx-opts.bat) files to enable JMX monitoring for Bitbucket Server

  1. Within the bin directory, locate the file set-jmx-opts.sh (for Windows set-jmx-opts.bat) and change these properties.

    JMX_REMOTE_AUTH=password
    JMX_REMOTE_PORT=3333
    RMI_SERVER_HOSTNAME=-Djava.rmi.server.hostname=<hostname>
    JMX_PASSWORD_FILE=<path>/jmx.access
  2. Bitbucket Server を再起動します。

Bitbucket Server が Windows サービスとして実行されている場合に JMX MBeans を公開する

Bitbucket Server が Windows サービスとして実行されている場合に JMX MBeans を公開する方法

  1. Bitbucket Server サービスを停止します。
  2. コマンド ライン プロンプトを開いて以下を入力します。

    cmd
  3. Navigate to the Bitbucket Server bin directory.

    cd <Bitbucket Server installation dir>\bin
  4. 次のコマンドを実行します。

    tomcat8w //ES//AtlassianBitbucket Server
  5. 表示されたウィンドウで [Java] タブをクリックすると、現在の起動オプションの一覧が表示されます。[Java Options:] フォームで、値を入力します。

    -Dcom.sun.management.jmxremote.port=<JMX_REMOTE_PORT>   
    -Djava.rmi.server.hostname=<hostname>
    -Dcom.sun.management.jmxremote.ssl=false 
    -Dcom.sun.management.jmxremote.password.file=<JMX_PASSWORD_FILE> 

    パスワード ファイルの所有者が、Bitbucket Server を実行するセキュア ユーザーであることを確認します。Bitbucket Server ユーザーがファイルを読み取ることができない場合、Bitbucket Server の起動が失敗します。

  6. <> 文字内の値を置き換えます。

    JMX_REMOTE_PORT=3333
    JMX_PASSWORD_FILE=<path>\jmx.access
  7. Bitbucket Server サービスを再起動します。


JMX が正しく構成されていることを確認する

これらの手順では、JMX が正しく設定されていることをテストするのに JConsole を使用します。JConsole は、Oracle JDK に同梱されているユーティリティです。

  1. jconsole ユーティリティを起動するには、コマンド ライン プロンプトから以下を入力します。

    jconsole

  2. 同様の接続設定で新しい JConsole 接続を作成します。

    bitbucket Hostname of the instance of Bitbucket Server to monitor

    3333

    JMX port number previously configured.

    username, password Values configured within the JMX password file jmx.access.
  3. 接続をクリックします。


正しく設定されている場合、これらのプロパティが表示されます。

com.atlassian.bitbucket
  • CommandTickets
  • HostingTickets
  • プロジェクト
  • リポジトリ
  • ScmStatistics
  • Tickets
  • EventStatistics
  • ClusterLocks

  • SshSessions

com.atlassian.bitbucket.thread-pools
  • EventThreadPool
  • IoPumpThreadPool
  • ScheduledThreadPool

パフォーマンス ダッシュボードの例

このダッシュボードは、Oracle JDK (1.7u40 以降) に同梱されている Java Mission Control を使用して生成されました。詳細については、ご利用の JMX クライアントに同梱しているドキュメントを参照してください。 

SSL を使用するように JMX を設定する

You can find information about the options for configuring JMX to use SSL in the set-jmx-opts files. Comprehensive documentation is available from Oracle.

最終更新日: 2019 年 9 月 21 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.