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 ヘッダー作成例と更新

推薦する

Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...

実行中の Docker コンテナにボリュームを動的に追加する方法

以前、Docker コンテナの起動後にボリュームをマウントできるかどうか尋ねられたことがあります。m...

H5 WeChatパブリックアカウント認証を実装するための簡単な手順

序文昨日、h5 WeChat認証の実装が必要なプロジェクトがありました。したがって、この機能を完了す...

Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...

VMwareがwin10ホームバージョンに64ビットオペレーティングシステムをインストールできない問題を解決します

問題の説明VMware Workstationが新しい仮想マシンを作成し、64ビットオペレーティング...

docker ベースの mariadb のインストール構成プロセスの分析

1. インストール dockerhub を通じてインストールする mariadb のバージョンを検索...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...

Nginx ベースの Mencached キャッシュ構成の詳細な説明

導入Memcached は分散キャッシュ システムです。Memcached には認証とセキュリティ制...

ファイルが存在するかどうかを判断する JavaScript サンプルコード

1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...

MySQLトリガーの概念、原理、使用法の詳細な説明

この記事では、例を使用して、MySQL トリガーの概念、原則、および使用方法を説明します。ご参考まで...

Mysql関数呼び出しの最適化の詳細な説明

目次関数呼び出しの最適化関数呼び出しの最適化MySQL 関数は、内部的に決定論的または非決定論的とし...

Mysql sql スロークエリ監視スクリプトコード例

1. my.cnfを変更する #全体的な効果としては、グローバルがオンになっている場合はテーブルとロ...

Alibaba Cloud ESC に MYSQL8.0 をインストールするチュートリアル

接続ツールを開きます。私はMobaXterm_Personal_12.1を使用します(公式サイトのダ...

複雑なSQLクエリを含むMySQLの一般的なSQL文の概要

1. 複雑なSQLクエリ1.1. 単一テーブルクエリ(1)指定の列を選択する[例] 全生徒の生徒ID...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...