Zabbix ベースの Jenkins プロセス監視の詳細な説明

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図

2. 実装のアイデア

  • Jenkins に Metrics プラグインをインストールして、Jenkins がメトリック API を公開できるようにします。
  • API からデータを取得し、そのデータを Zabbix が認識できる形式に解析する Python コードを記述します。
  • 監視とアラート用にZabbixサーバーとエージェントを構成する

3. 具体的な構成

1. Jenkins Metricsプラグインをインストールする

プラグインのダウンロードアドレス: http://updates.jenkins-ci.org/download/plugins/metrics/

Metrics プラグインをインストールします。システム構成には、次に示すように追加の「Metrics」構成があります。


設定項目は複雑ではありません。アクセス キーを生成するには、「生成...」をクリックする必要があります (生成後は必ず保存してください)。このキーは、後で使用する本人確認に使用されます。

保存後、ブラウザに URL (http://jenkins.local,me/metrics/<新しく生成されたアクセス キー>) を入力して、Jenkins がメトリックを公開したかどうかを確認します。次の図が表示されたら、次の手順に進むことができます。

1.1 メトリクスプラグインの紹介

Metrics プラグインは、dropwizard/metrics に基づいて実装されています。 /metrics、/ping、/threads、/healthcheck の 4 つのインターフェースを通じてメトリック データを公開します。

1.2 メトリクスプラグイン: /metrics インターフェースの紹介

上記の画像のメトリック リンク (http://jenkins.local.me/metrics/<Access Key>/metrics) をクリックすると、次のメトリック データが表示されます。

{
 バージョン: "4.0.0",
 ゲージ: {...},
 カウンター: {...},
 ヒストグラム: {...},
 メートル: {...},
 タイマー: {...}
}

ゲージ: メトリックの瞬間値。たとえば、現在の Jenkins Executor の合計数 (jenkins.executor.count.value)
カウンター: メトリックの合計値。たとえば、アクティブな http リクエスト接続の数 (http.activeRequests)
メーター: 一定期間内にイベントが発生する確率。たとえば、Jenkins によって 1 分あたりに実行される成功したタスクの数 (jenkins.runs.success.m1_rate)
ヒストグラム: 統計指標の分布。例: Jenkins Executor の数の分布 (jenkins.executor.count.history)
タイマー: メトリックの期間。例: Jenkins タスクの待機時間 (jenkins.job.waiting.duration)

1.3 メトリクスプラグインのその他のインターフェース

/ping: インターフェースは pong を返します。これは、以下に示すように、Jenkins が動作していることを意味します。

/threads: Jenkinsのスレッド情報を返します

/healthcheck: 次のメトリックを返します。

{
 「ディスク容量」: {
  「健康」:真
 },
 「プラグイン」: {
  「健康」:真、
  「メッセージ」: 「失敗したプラグインはありません」
 },
 「一時スペース」: {
  「健康」:真
 },
 「スレッドデッドロック」: {
  「健康」:真
 }
}

Zabbix サーバーは Zabbix エージェントと通信してデータを収集します。 Zabbix エージェントは、パッシブ モードとアクティブ モードの 2 つのモードに分かれています。私たちはパッシブ モードを使用しています。つまり、Zabbix サーバーがエージェントにデータを要求します。
したがって、Zabbix エージェントが配置されているマシンに Jenkins インジケーター データを取得するためのスクリプトを配置する必要があります。次に、エージェントからデータを定期的に取得するように Zabbix サーバーを構成し、最後にアラームを実装するためのトリガーを構成します。

2.1 監視テンプレートを作成し、ホストグループにリンクする


2.2 監視項目の作成

ここで、いくつかのオプションがそのように入力されている理由を説明する必要があります。

  • タイプ: これは、Zabbix サーバーによって収集されるメトリックのタイプです。前述のように、Zabbix エージェントを選択します。
  • キー値: 監視するインジケーターが Zabbix によって事前定義されていないため。したがって、Jenkins インジケーターを監視するには、ユーザー定義のパラメーターが必要です。キーに入力される値は、jenkins.metrics[gauges.jenkins.node.count.value.value]です。 jenkins.metrics は、実行する必要がある実際のキー名です。 []はキーに対応するコマンドに渡されるパラメータです。初心者にとって、Zabbix のこの部分を理解するのは非常に困難です。おそらく、次のように理解する方が簡単でしょう。ユーザー定義のパラメータを使用して監視を実装する場合、Zabbix サーバーはこのキーをエージェントに送信し、エージェントはこのキーに従って指定されたロジックを実行してインジケーター データを取得します。このロジックは通常、スクリプト (シェル コマンドや Python スクリプトなど) です。スクリプトはパラメータを渡すこともでき、[]内の値がスクリプトに渡されるパラメータとなります。
  • 情報タイプ: 監視データのデータ型。この監視項目は Jenkins ノードの数を監視するため、数値の整数が使用されます。
  • 更新間隔: Zabbix サーバーがエージェントからデータを取得する頻度を示します。

この時点で、Zabbix サーバーは構成されました。 「監視」->「最新データ」で最新データがあるかどうかを確認し、ダッシュボードを作成してデータをグラフィカルに表示することができます。他の監視項目も同様に構成できます。

スクリプトコードの監視

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Zabbix を使用して ogg プロセスを監視する (Windows プラットフォーム)
  • 分散監視システムにおけるZabbixのアクティブ、パッシブ、Web監視のプロセスの詳細な説明
  • 分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します
  • Zabbix による SQL Server サービス ステータスの監視の詳細な説明
  • Zabbixを使用してMySQLを監視する方法
  • Zabbix モニタリング 4.4 から 5.0 にアップグレードするための詳細なチュートリアル
  • Zabbixで監視する必要があるホストを追加するための詳細な手順
  • Zabbix で監視項目と集約されたグラフを設定するためのサンプルコード
  • zabbix を使用して ogg プロセスを監視する (Linux プラットフォーム)

<<:  MySQL kill コマンドの使用ガイド

>>:  画像プレビュー付きのアップロードフォームの完全な HTML

推薦する

MYSQL ログとバックアップおよび復元の問題の詳細な説明

この記事では、参考までにMYSQLログとバックアップとリストアについて紹介します。具体的な内容は以下...

UbuntuにCMakeをインストールするいくつかの方法の詳細な説明

CMakeをインストール sudo apt をインストール cmake この方法はインストールが簡単...

コードレイン効果を実現するJavaScriptキャンバス

この記事では、コードレイン効果を実現するためのキャンバスの具体的なコードを参考までに共有します。具体...

シンプルなドラッグ効果を実現するJavaScript

この記事では、ドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...

Vue+video.jsはビデオプレイリストを実装します

この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...

Nginx 構成検出サービスのステータスを実装する方法

1. チェックステータスモジュールがインストールされているかどうかを確認します。 [root@loc...

Tomcat サーバーの設定と Web プロジェクトの公開に関する IDEA グラフィック チュートリアル

1. Webプロジェクトを作成したら、Tomcatを例にサーバーを構成する必要があります。 2. 実...

CSS 要素で計算されたスタイルを取得します (カスケード/最終スタイル後)

CSS 要素内の計算されたスタイル (つまり、カスケード後の最終的なスタイル) を取得するには、W3...

MySQLトランザクション処理の使用方法とサンプルコードの詳細な説明

MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...

Dockerで同じIDを持つ2つのイメージを削除する

今日 Docker コンテナを作成したとき、誤ってイメージの名前を間違って入力しました。その結果、コ...

MySQL ページング分析の原理と効率改善

MySQL ページング分析の原理と効率改善PERCONA PERFORMANCE CONFERENC...

HTML の div と span の違い (共通点と相違点)

共通点: DIV タグと SPAN タグは、コンテンツ全体を非表示にしたり、コンテンツ全体を移動した...

MySQL の日付関数と日付変換およびフォーマット関数

MySQL は、膨大なユーザーベースを持つ無料のリレーショナル データベースです。この記事では、My...

Ajax jQueryはページ上のdivの更新効果を実現します

元のコードは次のとおりです。 <div class='コントロールグループ'&...

Dockerコンテナの状態変換の実装

Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...