1. プロメテウスの紹介Prometheus は、もともと SoundCloud によって開発された、オープンソースの監視、アラーム、および時系列データベースの組み合わせです。発展するにつれて、Prometheus を受け入れて採用する企業や組織が増え、コミュニティも活発になったため、独立したオープンソース プロジェクトとして企業に運用してもらうようになりました。 Google SRE の本には、BorgMon 監視システムに似た実装が Prometheus であることも記載されています。最も一般的な Kubernetes コンテナ管理システムは通常、Prometheus で監視されます。 Prometheus の基本原理は、監視対象コンポーネントのステータスを HTTP プロトコルを通じて定期的にキャプチャすることです。この利点は、SDK やその他の統合プロセスを必要とせずに、HTTP インターフェイスを提供する限り、どのコンポーネントでも監視システムに接続できることです。これは、VM や Docker などの仮想化環境に非常に適しています。 Prometheus は、Docker、Mesos、Kubernetes 環境に適した数少ない監視システムの 1 つです。 監視対象コンポーネントに関する情報をエクスポートする HTTP インターフェースはエクスポータと呼ばれます。現在、インターネット企業で一般的に使用されているコンポーネントのほとんどには、Varnish、Haproxy、Nginx、MySQL、Linux システム情報 (ディスク、メモリ、CPU、ネットワークなどを含む) など、直接使用できるエクスポーターがあります。サポートされている特定のソースについては、https://github.com/prometheus を参照してください。 他の監視システムと比較した Prometheus の主な機能は次のとおりです。
2. Prometheusアーキテクチャの概要この図は、Prometheus の全体的なアーキテクチャとそのエコシステム コンポーネントの一部を示しています。 そのサービス プロセスは次のとおりです。Prometheus デーモンは、ターゲットからメトリック データを定期的に取得する役割を担います。各取得ターゲットは、定期的な取得のために http サービス インターフェイスを公開する必要があります。 Prometheus: 構成ファイル、テキスト ファイル、Zookeeper、Consul、DNS SRV ルックアップなどを通じてクロール ターゲットを指定することをサポートします。非常に優れた Grafana、組み込みの Promdash、独自のテンプレート エンジンなど、さまざまな種類のチャート視覚化をサポートしています。また、必要な出力をカスタマイズするための HTTP API クエリ メソッドも提供します。 Alertmanager: Prometheus から独立したコンポーネントであり、Prometheus クエリ ステートメントをサポートし、非常に柔軟なアラーム メソッドを提供できます。 PushGateway: このコンポーネントは、クライアントがメトリックを PushGateway にアクティブにプッシュすることをサポートしますが、Prometheus はゲートウェイからデータを定期的に取得するだけです。 statsd を使用したことがある場合は、statsd がデータを直接サーバーに送信するのに対し、Prometheus は主にプロセスに依存してアクティブにキャプチャするという点を除けば、非常に似ていることがわかります。 Prometheus コンポーネントのほとんどは Go で記述されており、静的バイナリとして簡単にビルドおよびデプロイできます。完全なドキュメント、例、ガイドについては、prometheus.io をご覧ください。 3. Prometheusデータモデル基本的に、Prometheus のすべてのストレージは時系列で実装されます。同じメトリック (メトリック名) とラベル (1 つ以上のラベル) が時系列を形成し、異なるラベルは異なる時系列を表します。一部のクエリをサポートするために、時系列ストレージが一時的に生成されることがあります。 メトリック名とラベル インジケーター名とラベル 各時系列は、一意の「メトリック名」と「ラベル (キー = 値)」のセットで構成されます。 インジケータ名: 通常、監視オブジェクトには http_requests_total などの名前を付けます。いくつかの命名規則があり、文字、数字などを含めることができます。通常は、アプリケーション名_監視オブジェクト_値タイプ_単位で始まります。例: push_total、userlogin_mysql_duration_seconds、app_memory_usage_bytes。 タグ: 時系列のさまざまな次元を識別するために使用されます。たとえば、http リクエストが POST または GET を使用するかどうか、およびそのエンドポイントが何であるかをマークするには、タグが必要です。最終的な識別子は、http_requests_total{method="POST",endpoint="/api/tracks"} です。 メトリック名 http_requests_total のタグを追加または削除すると、新しい時系列が作成されることに注意してください。 クエリ ステートメントは、上記のタグの組み合わせに基づいて集計結果をクエリできます。 このステートメントを従来のデータベースの観点から見ると、http_requests_total をテーブル名、タグをフィールド、タイムスタンプを主キー、float64 フィールドを値と見なすことができます。 (Prometheus 内のすべての値は float64 として保存されます)。 4. Prometheusの4つのデータ型カウンタ カウンターは、リクエスト数、完了したタスク数、エラー数などの値を蓄積するために使用されます。増え続け、決して減ることはありません。プロセスを再起動するとリセットされます。 たとえば、http_response_total{method=”GET”,endpoint=”/api/tracks”} 100 の場合、10 秒後に http_response_total{method=”GET”,endpoint=”/api/tracks”} 100 をクロールします。 ゲージ 温度の変化やメモリ使用量の変化などの一般的な値を測定します。大きくしたり小さくしたりできます。プロセスを再起動するとリセットされます。 たとえば、memory_usage_bytes{host="master-01"} 100 < キャプチャされた値、memory_usage_bytes{host="master-01"} 30、memory_usage_bytes{host="master-01"} 50、memory_usage_bytes{host="master-01"} 80 < キャプチャされた値。 ヒストグラム ヒストグラムは棒グラフとして理解でき、リクエストの期間や応答のサイズなどのイベントの規模を追跡するためによく使用されます。特別なのは、レコードの内容をグループ化し、すべての値のカウントと合計の機能を提供できることです。 たとえば、{10 未満 = 5 回、20 未満 = 1 回、30 未満 = 2 回}、count = 7 回、sum = 7 回の合計。 まとめ サマリーはヒストグラムと非常によく似ており、リクエストの期間や応答のサイズなどのイベントの規模を追跡するためによく使用されます。また、すべての値をカウントして合計する関数も提供します。 たとえば、count = 7 回、sum = 7 回の値評価。 追跡結果を%比率で割ることができる分位関数を提供します。たとえば、分位値が 0.95 の場合、サンプル値のデータの 95% が取得されることを意味します。 5. Prometheus(dockerバージョン)をインストールして実行する以下では、Prometheus と Grafana を使用してローカル サーバーのパフォーマンスを監視する方法について説明します。 ローカルマシンを監視するには、エクスポーターが1つだけ必要です node_exporter – マシンシステムデータ収集用 Grafana は、時系列データの視覚化によく使用される、オープンソースで機能豊富なデータ視覚化プラットフォームです。次のデータ ソースのサポートが組み込まれています。 以下はインストール時に使用したアーキテクチャ図です。 注: この記事では ubuntu-16.04.5-server-amd64 を使用しますが、必要なサーバーは 1 台だけです。 Dockerをインストールする apt-get install -y docker.io 注: オンラインの記事では、docker-engine と docker-ce をインストールする必要があると書かれていますが、これはナンセンスです。バッグが全然見つからない! docker.io をインストールするだけで完了です。 CentOSシステムの場合は、yum install -y docker-ioを使用してインストールします。 イメージパッケージをダウンロードする docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana ノードエクスポーターを起動する docker run -d -p 9100:9100 \ -v "/proc:/host/proc:ro" \ -v "/sys:/host/sys:ro" \ -v "/:/rootfs:ro" \ --net="ホスト" \ prom/ノードエクスポーター ポートがアップしているかどうかを確認するには、数秒待ちます。 ルート@ubuntu:~# netstat -anpt アクティブなインターネット接続(サーバーと確立済み) プロトコル 受信Q 送信Q ローカルアドレス 外部アドレス 状態 PID/プログラム名 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd tcp 0 36 192.168.91.132:22 192.168.91.1:63648 確立 2969/0 tcp 0 0 192.168.91.132:22 192.168.91.1:63340 確立 1321/1 tcp6 0 0 :::9100 :::* LISTEN 3070/node_exporter URLにアクセス: http://192.168.91.132:9100/メトリック 効果は以下のとおりです。 これらはすべて収集されたデータであり、これを使用してデータ表示を行うことができます プロメテウスを起動 新しいディレクトリprometheusを作成し、設定ファイルprometheus.ymlを編集します。 mkdir /opt/prometheus cd /opt/prometheus/ vim プロメテウス.yml 内容は以下のとおりです。 グローバル: スクレイプ間隔: 60秒 評価間隔: 60秒 scrape_configs: - ジョブ名: プロメテウス 静的設定: - ターゲット: ['localhost:9090'] ラベル: インスタンス: プロメテウス - ジョブ名: Linux 静的設定: - ターゲット: ['192.168.91.132:9100'] ラベル: インスタンス: ローカルホスト 注: IP アドレスを変更します。ここでは 192.168.91.132 がローカル アドレスです。 プロメテウスを起動 docker run -d \ -p 9090:9090 \ ディレクトリ名:prometheus.yml プロム/プロメテウス 数秒待ってポートの状態を確認してください root@ubuntu:/opt/prometheus# netstat -anpt アクティブなインターネット接続(サーバーと確立済み) プロトコル 受信Q 送信Q ローカルアドレス 外部アドレス 状態 PID/プログラム名 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd tcp 0 36 192.168.91.132:22 192.168.91.1:63648 確立 2969/0 tcp 0 0 192.168.91.132:22 192.168.91.1:63340 確立 1321/1 tcp6 0 0 :::9100 :::* LISTEN 3070/node_exporter tcp6 0 0 :::22 :::* 1147/sshdを聴く tcp6 0 0 :::9090 :::* 3336/docker-proxyをリッスンする URLにアクセス: http://192.168.91.132:9090/グラフ 効果は以下のとおりです。 アクセスターゲット、URL は次のとおりです。 http://192.168.91.132:9090/ターゲット 効果は以下のとおりです。 ステータスがUPでない場合は、しばらく待つとUPになります Grafanaを起動する データを保存する新しい空のフォルダgrafana-storageを作成します。 mkdir /opt/grafana-storage 権限を設定する chmod 777 -R /opt/grafana-storage grafana ユーザーはこのディレクトリにファイルを書き込むため、777 を直接設定するのは比較的単純で大まかです。 Grafanaを起動する docker run -d \ -p 3000:3000 \ --name=グラファナ \ -v /opt/grafana-storage:/var/lib/grafana \ グラファナ/グラファナ 数秒待ってポートの状態を確認してください root@ubuntu:/opt/prometheus# netstat -anpt アクティブなインターネット接続(サーバーと確立済み) プロトコル 受信Q 送信Q ローカルアドレス 外部アドレス 状態 PID/プログラム名 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd tcp 0 36 192.168.91.132:22 192.168.91.1:63648 確立 2969/0 tcp 0 0 192.168.91.132:22 192.168.91.1:63340 確立 1321/1 tcp6 0 0 :::9100 :::* LISTEN 3070/node_exporter tcp6 0 0 :::22 :::* 1147/sshdを聴く tcp6 0 0 :::3000 :::* 3494/docker-proxyをリッスンする tcp6 0 0 :::9090 :::* 3336/docker-proxyをリッスンする tcp6 0 0 192.168.91.132:9100 172.17.0.2:55108 確立 3070/node_exporter URLにアクセス: http://192.168.91.132:3000/ デフォルトでは、ログイン ページにリダイレクトされます。デフォルトのユーザー名とパスワードはどちらも admin です。 ログイン後、パスワードのリセットを求められます。管理者パスワードを再度入力してください。 パスワードを設定すると、ホームページにリダイレクトされます。 データソースの追加をクリックします。ミラーリング方式を使用しているため、バージョンは比較的新しいです。ネットの記事に載っている写真と違いますね! 名前: プロメテウス タイプはPrometheusを選択します。データはそこから取得されるためです。 URL PrometheusのIP+ポートを入力してください 下の「保存してテスト」をクリックします。緑色のアイコンが表示されれば、問題ないことを意味します。 ホームページに戻り、「新しいダッシュボード」をクリックします。 グラフをクリック 効果は以下のとおりです。 タイトルの下の「編集」をクリックします。 効果は以下のとおりです。 cpuを入力すると、下部にプロンプトが表示されます ここでは、15 分間のシステム負荷を示す node_load15 を監視します。下のクエリを追加をクリックしてください 効果は以下のとおりです。 合計メモリを追加 ここにもう1行あります 右をクリックするとメモリ全体が削除されます 一般をクリックし、タイトルを中国語に変更します チャート効果は次のとおりです。 上の保存ボタンをクリックしてください 名前を入力してください 効果は以下のとおりです。 ホームページをクリックすると、 この記事の参考リンク: http://www.ywnds.com/?p=9656 これで、docker ベースの Prometheus+Grafana の構築手順の詳細についての記事は終了です。docker を使用した Prometheus+Grafana の構築に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次同時シナリオ書き込む読む読む読み取り-書き込みと書き込み-読み取りMySQL のロック行レベルロ...
マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...
この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...
序文通常のビジネスニーズ: 写真、Excel などをアップロードします。結局のところ、数 MB のサ...
1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...
目次1. コンポーネントをうまく活用してコードを整理する1. UIコンポーネントを抽出する2. モジ...
この記事では、例を使用して、MySQL の日付と時刻の間隔計算について説明します。ご参考までに、詳細...
1. 三角形境界線の設定 コード: 幅: 300ピクセル; 高さ: 300px; 背景: 赤; 境界...
問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...
目次1. 概要2. ログインインターセプションを実装するためのルーティングナビゲーションガード1. ...
HTML5の<input="text" placeholder="...
HTML における相対と絶対の違い: 正直に言うと、HTML は世界で最もシンプルな言語です。タグ言...
3つのモードブリッジ(ブリッジ モード)、NAT(ネットワーク アドレス変換モード)、ホストオンリー...
仮想マシン内のUbuntu 18.04がネットワークに接続できない問題の解決策は次のとおりですVMw...
目次1. ダウンロード2. インストール3. my.ini ファイルを設定する(デフォルトのエンコー...