dockerを使用してGrafana+Prometheus構成をデプロイする

dockerを使用してGrafana+Prometheus構成をデプロイする

docker-compose-monitor.yml

バージョン: '2'

ネットワーク:
  モニター:
    ドライバー: ブリッジ

サービス:
  インフルエンスDB:
    画像: influxdb:latest
    コンテナ名: tig-influxdb
    ポート:
      - 「18083:8083」
      - 「18086:8086」
      - 「18090:8090」
    環境変数:
      - 'env.influxdb'
    ボリューム:
      # データの永続性
      # sudo mkdir -p ./influxdb/data
      - ./influxdb/データ:/var/lib/influxdb
      # docker の時間を東部標準時ゾーン 8 に設定します - ./timezone:/etc/timezone:ro
      - ./localtime:/etc/localtime:ro
    restart: until-stopped #停止後にtelegrafを自動的に再起動します:
    画像: telegraf:latest
    コンテナ名: tig-telegraf
    リンク:
      - インフルクスDB
    ボリューム:
      - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
      - ./タイムゾーン:/etc/タイムゾーン:ro
      - ./localtime:/etc/localtime:ro
    再起動: 停止しない限り
  プロメテウス:
    画像: プロム/プロメテウス
    コンテナ名: プロメテウス
    ホスト名: プロメテウス
    再起動: 常に
    ボリューム:
      : /home/qa/docker/grafana/prometheus.yml:/etc/prometheus/prometheus.yml
      - /home/qa/docker/grafana/node_down.yml:/etc/prometheus/node_down.yml
    ポート:
      - '9090:9090'
    ネットワーク:
      - モニター

  アラートマネージャー:
    画像: prom/alertmanager
    コンテナ名: アラートマネージャ
    ホスト名: alertmanager
    再起動: 常に
    ボリューム:
      : := ...
    ポート:
      - '9093:9093'
    ネットワーク:
      - モニター

  グラファナ:
    イメージ: grafana/grafana:6.7.4
    コンテナ名: grafana
    ホスト名: grafana
    再起動: 常に
    ポート:
      - '13000:3000'
    ネットワーク:
      - モニター

  ノードエクスポーター:
    イメージ: quay.io/prometheus/node-exporter
    コンテナ名: ノードエクスポーター
    ホスト名: node-exporter
    再起動: 常に
    ポート:
      - '9100:9100'
    ネットワーク:
      - モニター

  キャドアドバイザー:
    画像: google/cadvisor:latest
    コンテナ名: cadvisor
    ホスト名: cadvisor
    再起動: 常に
    ボリューム:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ポート:
      - '18080:8080'
    ネットワーク:
      - モニター

アラートマネージャ.yml

グローバル:
  解決タイムアウト: 5分
  smtp_from: 'メール'
  smtp_smarthost: 'smtp.exmail.qq.com:25'
  smtp_auth_username: 'メール'
  smtp_auth_password: 'パスワード'
  smtp_require_tls: 偽
  smtp_hello: 'qq.com'
ルート:
  group_by: ['アラート名']
  グループ待機: 5秒
  グループ間隔: 5秒
  繰り返し間隔: 5分
  受信者: 'メール'
受信者:
- 名前: 'メール'
  メール設定:
  - 宛先: 'メールアドレス'
    送信解決: true
禁止ルール:
  - ソースマッチ:
      深刻度: 「重大」
    ターゲットマッチ:
      重大度: '警告'
    等しい: ['alertname', 'dev', 'instance']

プロメテウス

グローバル:
  scrape_interval: 15s # スクレイプ間隔を 15 秒ごとに設定します。デフォルトは 1 分ごとです。
  evaluation_interval: 15s # 15 秒ごとにルールを評価します。デフォルトは 1 分ごとです。
  # scrape_timeout はグローバルデフォルト (10 秒) に設定されています。

# アラートマネージャの設定
警告:
  アラートマネージャー:
  - 静的設定:
    - ターゲット: ['192.168.32.117:9093']
      # - アラートマネージャー:9093

# ルールを一度読み込み、グローバル 'evaluation_interval' に従って定期的に評価します。
ルールファイル:
  - 「node_down.yml」
  # - "ノードエクスポーターアラートルール.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# スクレイピングするエンドポイントを 1 つだけ含むスクレイピング設定:
# ここでは Prometheus そのもの。
scrape_configs:
  #IO ストレージ ノード グループ - job_name: 'io'
    スクレイプ間隔: 8秒
    static_configs: #ポートは、ノード エクスポーターが起動されるポートです - ターゲット: ['192.168.32.117:9100']
      - ターゲット: ['192.168.32.196:9100']
      - ターゲット: ['192.168.32.136:9100']
      - ターゲット: ['192.168.32.193:9100']
      - ターゲット: ['192.168.32.153:9100']
      - ターゲット: ['192.168.32.185:9100']
      - ターゲット: ['192.168.32.190:19100']
      - ターゲット: ['192.168.32.192:9100']

  # ジョブ名は、この設定から取得されたすべての時系列にラベル `job=<job_name>` として追加されます。
  - ジョブ名: 'cadvisor'
    static_configs: #ポートはcadvisorによって開始されたポートです - ターゲット: ['192.168.32.117:18080']
      - ターゲット: ['192.168.32.193:8080']
      - ターゲット: ['192.168.32.153:8080']
      - ターゲット: ['192.168.32.185:8080']
      - ターゲット: ['192.168.32.190:18080']
      - ターゲット: ['192.168.32.192:18080']

ノードダウン

グループ:
  - 名前: node_down
    ルール:
      - 警告: インスタンスダウン
        式: 上 == 0
        1mの場合
        ラベル:
          ユーザー: テスト
        注釈:
          概要: 'インスタンス {{ $labels.instance }} がダウンしています'
          説明: 'ジョブ {{ $labels.job }} の {{ $labels.instance }} が 1 分以上ダウンしています。'

        #メモリ残量が10%未満です
      - 警告: メモリ残量が 10% 未満です
        式: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
        2mの場合
        ラベル:
          重大度: 警告
        注釈:
          概要: ホストのメモリ不足 (インスタンス {{ $labels.instance }})
          説明: "ノード メモリがいっぱいになっています (残り 10% 未満)\n 値 = {{ $value }}\n ラベル = {{ $labels }}"

        #ディスク残量が10%未満です
      - 警告: 残りのディスク容量が 10% 未満です。
        式: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 かつ ON (インスタンス、デバイス、マウントポイント) node_filesystem_readonly == 0
        2mの場合
        ラベル:
          重大度: 警告
        注釈:
          概要: ホストのディスク容量が不足しています (インスタンス {{ $labels.instance }})
          説明: "ディスクがほぼいっぱいです (残り 10% 未満)\n 値 = {{ $value }}\n ラベル = {{ $labels }}"

        #CPU負荷 > 80%
      - 警告: CPU 負荷 > 80%
        式: 100 - (平均(インスタンス) (レート(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80
        0分
        ラベル:
          重大度: 警告
        注釈:
          概要: ホストの CPU 負荷が高い (インスタンス {{ $labels.instance }})
          説明: "CPU 負荷は 80% を超えています\n 値 = {{ $value }}\n ラベル = {{ $labels }}"

アラート: https://awesome-prometheus-alerts.grep.to/rules#prometheus-self-monitoring

公式ダッシュボード: https://grafana.com/grafana/dashboards/

これで、Grafana+Prometheus 構成の Docker デプロイメントに関するこの記事は終了です。Grafana+Prometheus の Docker デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明
  • Grafanaのインストールと使用に関する詳細なチュートリアル
  • Grafana を使用して Docker コンテナの監視チャートを表示し、電子メールアラートルールを設定する (図)
  • Prometheus+Grafana を使用した Springboot アプリケーションの監視に関するチュートリアルの詳細な説明
  • Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する
  • docker ベースで Prometheus+Grafana を構築する手順の詳細説明
  • Influx+Grafana のカスタム Python データ収集の概要といくつかの落とし穴
  • SpringBoot+Prometheus+Grafanaでアプリケーション監視とアラームを実装するための詳細な手順
  • Linux で Grafana をインストールし、InfluxDB モニタリングを追加する方法
  • Prometheus+Grafanaによるnginxの監視方法を分析する
  • PrometheusはGrafanaディスプレイを使用してMySQLを監視します
  • Ubuntu で Grafana を使用して Docker を監視する方法
  • Docker を使用した JMeter+Grafana+Influxdb 監視プラットフォームの構築に関する詳細なチュートリアル
  • Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル
  • ELKとGrafanaが共同でnginxログを分析するための視覚的なモニタリングを開発
  • Grafana のパスワードを忘れても大丈夫です。Grafana の管理者パスワードをリセットする 2 つの方法

<<:  JSONObject の使用方法の詳細な説明

>>:  HTML5+CSS3 ヘッダー作成例と更新

推薦する

Webデザインの経験: Webコードを効率的に書く

本来、この第 7 章では、デザインにおけるレイヤーと空間テクニックについて深く議論するはずです。しか...

5分でWebRTCビデオチャットを構築する

前回の記事では、Ubuntu 上の webrtc ベースの多人数ビデオチャット サービスの詳細なコー...

Linux のスケジュールタスク Crontab コマンドの使用に関する詳細な説明と概要

crontab コマンドは、Unix および Linux で定期的な実行命令を設定するために使用され...

Vue-Routerのルート設定の詳しい説明

目次導入ルート内のオブジェクト属性パス: 文字列コンポーネント: コンポーネント | () =>...

Vue.js ソースコード解析のカスタム手順の詳細な説明

序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...

WeChat アプレットのシンプルなログイン ページの実装 (ソース コード付き)

目次1. 上の写真2. ユーザーが存在しない3. コードをアップロードする1. 上の写真 2. ユー...

Windows で Nginx を使用して https サーバーとリバース プロキシを構成する際の問題

リクエストロジックフロントエンド --> https経由でnginxをリクエストnginx -...

MySQL mysqldump の使い方の詳しい説明

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

MySQLインデックスを追加する3つの原則を簡単に理解する

1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...

MySQL の「特殊キーが長すぎます」の解決策

目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...

Linuxで同一ファイルを見つける方法

コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...

Reactは動的ポップアップウィンドウコンポーネントを実装します

UI コンポーネントを作成するときに、アニメーションを考慮しなければ、アニメーションを実現するのは非...

Docker で既存のイメージに基づいて新しいイメージを構築する方法

既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...

React 合成イベントの説明

目次入力ボックスをクリックして開始します拡張機能入力ボックスをクリックすると複数のイベントが発生しま...

CSS スティッキーレイアウトを使用してヘッダーを上部に配置する方法

適用シナリオ:新しい要件の 1 つはアンケート調査を行うことですが、必然的に多くの質問が含まれ、1 ...