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

推薦する

1 つの記事で Nginx ロケーション マッチングの実装を理解する

チームはフロントエンドとバックエンドを分離しているため、フロントエンドが Nginx とノード層を引...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

MySQL アーキテクチャのナレッジポイントの概要

1. データベースとデータベースインスタンスMySQL の研究では、データベースとデータベース イン...

一般的な MySQL ストレージ エンジンとパラメータ設定およびチューニングの紹介

MyISAM、MySQLでよく使われるストレージエンジン特性: 1. 同時実行性とロックレベル2. ...

Ubuntu 18.04で国内ソースを変更する方法の例

Ubuntu はソースが中国からなのでダウンロード速度が比較的遅いです。CentOS と異なり、yu...

AWSサーバーリソースを無料で使用する方法を教えます

AWS - Amazon のクラウド コンピューティング サービス プラットフォーム以前、AWS の...

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...

Linux の一般的なコマンドとショートカット キーの紹介

目次1 システムの紹介2 システムショートカット3 一般的なシステムコマンド1 システムの紹介 1....

TypeScript マッピング型の詳細

目次1. マップされた型2. マッピング修飾子3. キーの再マッピング4. さらなる探究序文: Ty...

Linuxプロセス監視と自動再起動の簡単な実装方法

目的: Linux では、さまざまな理由でサーバー プログラムがダンプされ、ユーザーの使用に影響する...

Vue3 リストインターフェースデータ表示の詳細

目次1. リストインターフェースの表示例2. データを表示する2.1. コンポーネントがリストに表示...

MySQL の制限ページング最適化ソリューションの実装に関する簡単な説明

MySQL のページングステートメントの使用制限Oracle や MS SqlServer と比較す...

WeChatアプレットがシンプルな計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

Vueは指定された日付間のカウントダウンを実装します

この記事では、指定された日付間のカウントダウンを実装するためのVueの具体的なコードを例として紹介し...