本番環境で重要なデータベースサービスを実行する場合、データベースを認識して監視する必要があります。使用しているデータベースの主要なメトリックを理解する必要があります。たとえば、WiredTigerストレージエンジンでMongoDBを実行する場合、接続、認証、操作、レプリケーションラグ、ページフォールト、ロックなどを知る必要があります。
このブログでは、MongoDBのPerconaServerを監視するために使用されるいくつかの主要なメトリックについて説明します。
データベース接続は、どのデータベースでも重要な主要な指標の1つです。アプリケーションからデータベースへの現在の接続/スレッドを監視します。次のコマンドで現在の接続を確認できます:
> db.serverStatus().connections
ClusterControlは、以下に示すように接続に関連する情報を提供します。
コマンド操作メトリックは、挿入、更新、削除、または選択のいずれかで、現在の操作を監視します。以下のコマンドを実行すると、現在のコマンド操作を監視できます。
>db.serverStatus().opcounters
コマンド操作から、書き込みまたは読み取りが重いかどうかにかかわらず、アプリケーションのワークロードを実際に確認できます。この観点から、いくつかの決定を下すことができます。たとえば、読み取りトラフィックが多い場合は、セカンダリノードをスケーリングして読み取りクエリを分散することができます。
ClusterControlでのコマンド操作の監視は簡単です。以下に示すように、エージェントベースの監視を有効にして、MongoDBサーバーダッシュボードにOpsCounterメトリックを表示する必要があります。
ReplicaSetラグ
ReplicaSetまたはShardClusterアーキテクチャを実行する場合、重要な重要な指標の1つはレプリケーションの遅延です。レプリケーションラグは、セカンダリノードがプライマリノードに書き込まれているデータに追いつかない場合に発生します。この理由は、ネットワークレイテンシ、ディスクスループット、低速クエリなどによって異なる場合があります。
プライマリノードで次のコマンドを実行すると、現在のレプリケーションラグ情報を確認できます。
> rs.printSlaveReplicationInfo()
ラグ情報のメトリックは秒単位であるため、同時接続が多い場合、mongodbでのレプリケーションは非同期であるため、セカンダリノードで数秒遅れることがあります。
ClusterControlでは、メトリックの最大レプリケーションラグはMongoDBレプリカセットにあります。監視ダッシュボード。
ページフォールトは、ほとんどの場合、同時発生率が高く、負荷が高いアプリケーションで発生します。ページフォールトは、mongodbプロセスがデータを取得したいが、メモリで利用できない場合に発生し、mongodbサーバーがディスクからデータを読み取ります。
ページフォールトの現在の状態を監視するには、次のコマンドを使用できます。
>db.serverStatus().extra_info.page_faults
ロックはMongoDBの重要な指標でもあり、通常、同じデータセットに複数のトランザクションがある高負荷のアプリケーションで発生します。ロックすると、重大なパフォーマンスの問題が発生する可能性があります。
以下のコマンドを使用して、データベース内の現在のロック操作を確認できます。
>db.currentOp()
db.currentOp()コマンドを実行すると、ロックに関連する情報がいくつかあります。 ClusterControlは、以下に示すように、MongoDBダッシュボードでグローバルロックを監視します。
これらは、Percona ServerforMongoDBで監視する重要な主要なメトリックの一部です。これらは、サーバーで何が起こっているかをリアルタイムで表示し、アクションを実行できる異常を発見できます。 ClusterControlは、MongoDBデータベースの可視性を提供するいくつかのダッシュボードを提供します。