Prometheus+Grafana 監視システム

目次

ワン、プロメテウス 1

2. グラファナ 2

3.環境の準備・・・2

4. Prometheus と Grafana をインストールします。3

5. Prometheus と Grafana を構成します。4

1. プロメテウスの設定 4

2. Grafana を構成します。6

6、マシンのハードウェア リソースを監視します... 7

7. 基本サービスのモニタリング ... 9

1. NGINX を監視する 9

2. MYSQL を監視する 11

3. REDIS を監視する 16

8. 監視アプリケーション... 18

9、ビジネス インターフェイス データの監視... 19

10. アラーム設定 … 21

1. アラームモードを設定する... 21

2. アラームルールの設定... 24

①/data/prometheus/rules/node.yml 24

② /data/prometheus/rules/redis.yml 26

③/data/prometheus/rules/mysql.yml 27

④/data/prometheus/rules/nginx.yml 29

Prometheus+Grafana を使用して監視システムを構築します.主な監視コンテンツには、マシンのハードウェア リソース、基本的なサービス、アプリケーション、およびビジネス インターフェイス データが含まれます。

1.プロメテウス

Prometheus - 監視システムと時系列データベース

Prometheus は、オープン ソースのサービス監視システムおよび時系列データベースです。Prometheus エコシステムは、データの収集と保存を担当し、PromQL クエリ言語サポートを提供する Prometheus サーバー、多言語クライアント SDK を提供する Prometheus サーバー、一時的なジョブ アクティブ プッシュ インジケーターをサポートする中間ゲートウェイ Push Gateway、およびデータ収集コンポーネントを含む複数のコンポーネントで構成されます。 Exporter は、ターゲットからデータを収集し、それを Prometheus でサポートされている形式に変換し、アラート機能を提供する Alertmanager を担当します。

Prometheus Exporter コンポーネントと従来のデータ収集コンポーネントの違いは、データを中央サーバーに送信せず、中央サーバーが主導権を握ってデータを取得するのを待つことです. Prometheus は、実行ステータスを収集するためにさまざまなタイプのエクスポーターを提供しますさまざまなサービスの。

Promethues 公式 Web サイトが提供するエコシステム アーキテクチャ図:

 

2.グラファナ

Grafana: オープンなオブザーバビリティ プラットフォーム | グラファナ ラボ

Grafana はクロスプラットフォームのオープン ソース測定分析および視覚化ツールであり、視覚的なデータ表示のために複数のデータ ソース (prometheus など) からのデータ取得をサポートします。

3. 環境整備

&&& サーバーのハードウェア リソースを監視します: CPU 8 コア、メモリ 32G、ディスク 250G、ネットワーク カード。

Prometheus およびその他の監視サービスの展開の取り決めは次のとおりです。

 

1. オペレーティング システムのバージョンを確認する

[root@node64 ~]# cat /etc/redhat-release

CentOS Linux リリース 7.1.1503 (コア)

[root@node64 ~]# getconf LONG_BIT

64

2. ネットワーク カードの IP と構成を確認する

[root@node64 ~]# ip a

eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq 状態 UP qlen 1000

リンク/エーテル fa:16:3e:a3:89:25 brd ff:ff:ff:ff:ff:ff

inet 192.168.0.91/24 brd 192.168.0.255スコープ グローバル eth1

valid_lft 永久に preferred_lft 永久に

inet6 fe80::f816:3eff:fea3:8925/64 スコープ リンク

valid_lft 永久に preferred_lft 永久に

[root@node64 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1

名前=eth1

タイプ=イーサネット

BOOTPROTO=dhcp

デバイス=eth1

ONBOOT=はい

IPV4_ROUTE_METRIC=100

4. Prometheus と Grafana をインストールする

1. インストール ディレクトリ mkir /data/prometheus を作成します。

groupadd プロメテウス

useradd -g プロメテウス -s /sbin/nologin プロメテウス

chown -R プロメテウス:プロメテウス プロメテウス

2. prometheus、grafana インストール パッケージ、および prometheus プラグイン パッケージをダウンロードします。

node_exporter、mysqld_exporter、nginx-vts-exporter、redis_exporter、alertmanager を含む

Prometheus インストール パッケージのリファレンスは次のとおりです。

wget https://github.com/prometheus/prometheus/releases/download/v2.20.0/prometheus-2.20.0.linux-amd64.tar.gz

   Grafana インストール パッケージのリファレンスは次のとおりです。

wget  https://dl.grafana.com/oss/release/grafana-7.1.1.linux-amd64.tar.gz

3.解凍してインストール

5、Prometheus と Grafana を構成する

1.プロメテウスを構成する

a. 構成ファイル prometheus.yml を変更します。

vi /data/prometheus/prometheus/prometheus.yml

こすり_構成:

    metrics_path: /prometheus/metrics

static_config:

      - ターゲット: ['192.168.0.91:9090']

b. 構成ファイルを確認します

/データ/プロメテウス/プロメテウス

[root@node64 prometheus]# ./promtool check config prometheus.yml

注: プロメテウス構成を有効にします pgrep -fl prometheus

c. prometheus をシステム サービスとして登録する

[root@node64 prometheus]# cat /usr/lib/systemd/system/prometheus.service

[ユニット]

説明=プロメテウス

After=network.target

[サービス]

タイプ=シンプル

ユーザー=ルート

ExecStart=/data/prometheus/prometheus/prometheus --web.external-url=prometheus    --web.enable-admin-api --config.file=/data/prometheus/prometheus/prometheus.yml --storage.tsdb. path=/data/prometheus/prometheus/data --storage.tsdb.retention=15d --log.level=info --web.enable-lifecycle

再起動=失敗時

[インストール]

WantedBy=マルチユーザー.ターゲット

d.prometheus サービスを開始して表示する

systemctl プロメテウスを有効にする

systemctl start プロメテウス

systemctl ステータス プロメテウス

   [root@node64 プロメテウス]# netstat -anp | grep 9090

 

e. nginx がプロメテウス サービスを転送する

    Prometheus のNode Exporter は認証サポートを提供しません。ただし、Nginx をリバース プロキシ サーバーとして使用すると、HTTP 基本認証機能を Node Exporter に簡単に追加できます。

yum -y インストール httpd

[root@node23 conf]# htpasswd -c .htpasswd_prometheusプロメテウス

Iampwd

場所/プロメテウス/ {

     proxy_set_header X-Real-IP $remote_addr;

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     proxy_set_header ホスト $http_host;

     proxy_set_header X-Nginx-Proxy true;

     proxy_pass http://192.168.0.91:9090;

     proxy_redirect オフ;

     proxy_buffering オフ;

     proxy_read_timeout 90;

     proxy_send_timeout 90;

        auth_basic "プロメテウス";

auth_basic_user_file ".htpasswd";

}

f. Web アクセス プロメテウス

https://***.com:9091/prometheus/

プロメテウス/Iampwd

 

2.グラファナを構成する

   a. 構成ファイル default.ini を変更します。

     vi /data/prometheus/grafana/conf/defaults.ini

     http_ポート = 3000

     root_url = %(プロトコル)s://%(ドメイン)s:%(http_port)s/ grafana/

  

b. grafana をシステム サービスとして登録する

     [root@node64 conf]# cat /usr/lib/systemd/system/grafana-server.service

[ユニット]

説明=Grafana

After=network.target

[サービス]

タイプ=通知

ExecStart=/data/prometheus/grafana/bin/grafana-server -homepath /data/prometheus/grafana

再起動=失敗時

[インストール]

WantedBy=マルチユーザー.ターゲット

c. grafana サービスを開始して表示する

systemctl enable grafana-server

systemctl start grafana-server

systemctl ステータス grafana-server

  

   d. nginx は grafana サービスを転送します

     場所/grafana/ {

          proxy_set_header X-Real-IP $remote_addr;

          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

          proxy_set_header ホスト $http_host;

          proxy_set_header X-Nginx-Proxy true;

          proxy_pass http://192.168.0.91:3000/;

          proxy_redirect オフ;

          proxy_buffering オフ;

          proxy_read_timeout 90;

          proxy_send_timeout 90;

       }

   e. Web アクセス grafana とデータ ソースの構成

     https://***.com:9091/grafana/

管理者/Iampwd

     データソース URL: http://192.168.0.91:9090/prometheus

 

 

6. マシンのハードウェア リソースを監視する

Prometheus は node_exporter プラグインを使用してマシンのハードウェア リソースを監視し、prometheus は node_exporter サービスがインストールされているネットワーク相互通信マシンから必要なデータをアクティブに取得します。

1. 監視する必要があるマシンに node_exporter をインストールします

2. node_exporter をシステムサービスとして登録する

[root@node64 conf]# cat /usr/lib/systemd/system/node_exporter.service

[ユニット]

説明=node_exporter

ドキュメンテーション=https://prometheus.io/

After=network.target

[サービス]

タイプ=シンプル

ユーザー=ルート

ExecStart=/data/prometheus/node_exporter/node_exporter

再起動=失敗時

[インストール]

WantedBy=マルチユーザー.ターゲット

3. node_exporter サービスを開始して表示する

systemctl enable node_exporter

systemctl start node_exporter

systemctl ステータス node_exporter

4. prometheus.yml を変更し、prometheus サービスを再起動します。

こすり_構成:

- ジョブ名: 'node_exporter'

static_config:

-ターゲット:['192.168.0.91:9100','192.168.0.92:9100'…]

   

5. prometheus にアクセスして、監視ステータスを表示します

 6. Grafana 監視パネルの導入

ダッシュボード | グラファナ ラボ

node_exporter 8919

mysql_exporter 11323

mysql の概要 7362

nginxvts 2949

レディス 11835

 

七、監視基本サービス

1.NGINXを監視する

Nginx は nginx-module-vts モジュールを通じて nginx の特定のインデックス データを取得し、Prometheus は nginx-vts-exporter コンポーネントを通じて nginx 情報を収集します。

a. nginx サーバーに nginx-module-vts モジュールをインストールします

./configure --prefix= /data/nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --add -module=/ data/nginx-module-vts

メイク && メイク インストール

  • nginx.conf ファイルを変更する

http{

    vhost_traffic_status_zone;

    vhost_traffic_status_filter_by_host on;

場所/ステータス {

vhost_traffic_status_display;

vhost_traffic_status_display_format html;

  }

}

 

b. nginx サーバーと prometheus サーバーの両方に nginx-vts-exporter プラグインをダウンロードしてインストールします。

wget

https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

c. nginx サーバー (192.168.0.71) にシステム サービスとして nginx-vts-exporter を登録します。

cat /etc/systemd/system/nginx-vts-exporter.service

[ユニット]

説明=nginx_exporter

After=network.target

[サービス]

タイプ=シンプル

ユーザー=ルート

ExecStart=/data/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri= https://公网IP:9091 /status/format/json

再起動=失敗時

[インストール]

WantedBy=マルチユーザー.ターゲット

d. nginx-vts-exporter をシステム サービスとしてプロメテウス サーバーに登録します ( 192.168.0.91 )

cat /etc/systemd/system/nginx-vts-exporter.service

[ユニット]

説明=nginx_exporter

After=network.target

[サービス]

タイプ=シンプル

ユーザー=ルート

ExecStart=/data/prometheus/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri= https://192.168.0.71:9091 /status/format/json

再起動=失敗時

[インストール]

WantedBy=マルチユーザー.ターゲット

e. nginx サーバーと prometheus サーバーで nginx-vts-exporter サービスを開始して表示します

systemctl enable nginx-vts-exporter

systemctl start nginx-vts-exporter

systemctl ステータス nginx-vts-exporter

f. prometheus サーバーの設定ファイル prometheus.yml を変更し、prometheus サービスを再起動します。

- ジョブ名: 'nginx'

static_config:

      - ターゲット: ['192.168.0.91:9913']

  

 https://パブリック ネットワーク IP:9091/status g、nginx ページの監視を表示

https://パブリックIP:9091/status

nginx 監視パネルnginx-vts-exporter 2949 をgrafana にインポートし、パネルを表示します

       https://***.com:9091/grafana/d/5-RKCVxGk/nginx-vts-stats?orgId=1

 

 

2.MYSQLを監視する

Prometheus は、mysqld_exporter コンポーネントを介して MySQL マスターおよびスレーブ サーバーに関連するデータを収集します。

1) 自動化されたスクリプトを使用して mysql をインストールした後、システム サービスに mysql サービスを追加し、ブートを自動的に開始するように設定します。

[root@centos7-min4 nginx]# cp /opt/mysql57/support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --mysqld を追加

chkconfig --list

 # systemctl start mysqld

# systemctl ステータス mysqld

[mysql@centos7-min4 nginx]$ mysql -uroot -p —— 123456

mysql> バージョンを選択();

+------------+

| | バージョン() |

+------------+

| | 5.7.24-ログ |

2) mysqld_exporter コンポーネントをプロメテウス サーバーにインストールします。

プロメテウスはmysqlマスタースレーブサーバーを監視します

    • mysql にログインしてエクスポーターのアカウントを作成し、それを承認します。

'Abc123' で識別されるユーザー 'exporter'@'192.168.0.%' を作成します。

許可プロセス、複製クライアント、*.* を選択して「exporter」@'192.168.0.%';

特権をフラッシュします。

   

    • Prometheus サーバーに mysqld_exporter サービスをインストールし、同時に mysql マスター/スレーブ サービスを監視します。

   ls -al /data/prometheus/mysqld_exporter/

   .my-master.cnf

   .my-slave.cnf

       root@node64 mysqld_exporter]# cat .my-master.cnf

[クライアント]

ユーザー=輸出者 

パスワード=Abc123

ホスト=192.168.0.92

ポート=3306

[root@node64 mysqld_exporter]# cat .my-slave.cnf

[クライアント]

ユーザー=輸出者

パスワード=Abc123

ホスト=192.168.0.93

ポート=3306

    • mysqld_exporter サービスを開始する

それぞれ mysql マスター サービスとスレーブ サービスのサービスを開始します。

Mysql マスター サービスの開始

/data/prometheus/mysqld_exporter/mysqld_exporter --web.listen-address=192.168.0.91:9104 --config.my-cnf=/data/prometheus/mysqld_exporter/.my-master.cnf --collect.auto_increment.columns - -collect.binlog_size --collect.global_status --collect.engine_innodb_status --collect.global_variables --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect .info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.tables --collect.info_schema.tablestats --collect.info_schema.userstats --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect. perf_schema.indexiowaits --collect.perf_schema.tableiowaits --collect.perf_schema.tablelocks

Mysql はサービスから開始します

/data/prometheus/mysqld_exporter/mysqld_exporter --web.listen-address=192.168.0.91:9105 --config.my-cnf=/data/prometheus/mysqld_exporter/.my-slave.cnf

(注: 他のパラメータは、上記の Mysql メイン サービスの起動と一致させてください)

3) prometheus 構成ファイルの情報を変更し、prometheus を再起動します。

プロメテウス.yml

- ジョブ名: 'mysql_exporter'

    static_config:

    # - ターゲット: ['192.168.0.92:9104','192.168.0.93:9104']

      - ラベル:

          instance: master:3306 # grafana が表示するインスタンスのエイリアス

      - 対象:

        - 192.168.0.91:9104 # mysqld_exporter によって公開されたポート

      - ラベル:

          instance: slave:3306 # grafana で表示されるインスタンスのエイリアス

      - 対象:

        - 192.168.0.91:9105 # mysqld_exporter によって公開されたポート

4) prometheus および grafana パネルの mysql データを表示し、mysql 監視パネルをインポートします。

mysql_exporter 11323

mysql の概要 7362

 

 

 

 

PS: mysql同期障害処理: Slave_SQL_Running: いいえ

分析: mysql データ同期の失敗の原因

  1. プログラムがスレーブで書き込み操作を実行した可能性があります
  2. スレーブ マシンの再起動後のトランザクション ロールバックが原因である可能性があります。

解決策:最初にスレーブサービスを停止し、マスターサーバー上のホストのステータスを確認し、ファイルと位置に対応する値に従ってスレーブサーバーに同期し、最後にスレーブサービスを開始して同期ステータスを確認します

メインサーバー:

mysql> マスター ステータスを表示します。

サーバーから:

mysql> スレーブを停止します。

クエリ OK、影響を受ける行は 0、警告は 1 (0.00 秒)

mysql>

mysql> マスターを master_host='192.168.0.92' に変更し、

-> master_user='repl',

-> master_password=' 123456 ',

-> master_log_file='mysql-bin-T-prod-3306.000005',

-> master_log_pos=653020;

クエリ OK、影響を受ける行は 0、警告は 2 (0.05 秒)

mysql> スレーブを開始します。

 

3. REDIS を監視する

redis_exporter コンポーネントを使用して、3 つのマスターと 3 つのスレーブで redis クラスターを監視します。

     1) 自動化されたスクリプトを使用して、redis 3 マスターおよび 3 スレーブ クラスターをインストールする

     2) prometheus サーバーに redis_exporter サービスをダウンロードしてインストールします。

wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz

    3) 作成されたクラスター全体を監視するために、redis クラスター内のサーバーの 1 つを監視します。

CD /データ/プロメテウス/redis_exporter

./redis_exporter -redis.addr 192.168.0.93:7000 -redis.password 'zxcvb123' &

   4) prometheus 構成ファイルの情報を変更し、prometheus を再起動します。

- job_name: 'redis_exporter_targets'

    static_config:

      - 対象:

        - redis://192.168.0.3:7000

        - redis://192.168.0.2:7003

        - redis://192.168.0.72:7002

        - redis://192.168.0.35:7001

        - redis://192.168.0.14:7004

        - redis://192.168.0.13:7005

    metrics_path: /scrape

    relabel_config:

      - source_labels: [__address__]

        target_label: __param_target

      - source_labels: [__param_target]

        target_label: インスタンス

      - target_label: __アドレス__

        置換: 192.168.0.91:9121

  - job_name: 'redis_exporter'

    static_config:

      - 対象:

        - 192.168.0.91:9121

       5) prometheus および grafana パネル データを表示し、パネルredis 11835をインポートします。

 

 

8. 監視アプリケーション

Prometheus は node_exporter コンポーネントを使用してアプリケーションを監視します

     1) 監視する必要があるアプリケーション サーバーにプロセス エクスポーター コンポーネントをインストールします。

wget

https://github.com/ncabatoff/process-exporter/releases/download/v0.5.0/process-exporter-0.5.0.linux-amd64.tar.gz

    2) アプリケーション監視情報の設定

プロセス conf.yml

 

      3) アプリケーション監視サービスの起動と設定ファイルの指定

./process-exporter -config.path process-conf.yml &

      4) prometheus の構成情報を変更し、prometheus を再起動します。

[root@node64 プロメテウス]# vi prometheus.yml

- job_name: プロセス

static_config:

- ターゲット: ['192.168.0.35:9256','192.168.0.13:9256'…]

     5) プロメテウスとグラファナのパネル データを表示する  

    process-exporter に対応するダッシュボードは次のとおりです:名前付きプロセス | Grafana Labs

 

 

 

9. ビジネスインターフェースデータのモニタリング

開発によって提供されるビジネス監視インターフェース データに従って、Grafana データ表示を構成します。

https://***.com:9092/api

  • 知らせ:

1. Grafana はPrometheus データを保存しません。Prometheus にクエリを実行し、UI を表示します。この場合、プロメテウス データのクリアを検討する必要があります。

Prometheusのデフォルトの保存期間は 15 日間です。ただし、これは -storage.local.retention フラグを使用してニーズに合わせて調整できます

2. Prometheus は期限切れのデータを NaN に設定しますが、sum() 合計関数は NaN をサポートしていないため、メトリックを調整する必要があります。

sum(st_invoke_count{app_id=~'$appid',road_type='1'}>0)

3. Grafanaグローバル変数

4. Grafanaメニュー カスケード

10.アラーム設定

1.アラームモードを設定する

>プロメテウス

  Prometheus は、alertmanager コンポーネントを介してアラートを実装します. Alertmanager は、prometheus によって送信されたアラートを受信し、アラートに対して一連の処理を実行して、指定されたユーザーに送信します.

プロメテウス--->トリガーしきい値--->期間超過--->アラートマネージャー--->グループ|抑制|サイレント--->メディアタイプ--->メール、DingTalk、WeChatなど

      1) アラートマネージャーをインストールする

wget https://github.com/prometheus/alertmanager/releases/download/v0.16.2/alertmanager-0.16.2.linux-amd64.tar.gz

      2) alertmanager 構成ファイル情報 alertmanager.yml を変更します。

      3) SMTP サービスを開く

      4) アラーム通知テンプレートを構成する

[root@centos7-min4 alertmanager-0.21.0]# cat template/test.tmpl

{ { "test.html" を定義する }}

<table border="5">

<tr>

<td>アラーム項目</td>

<td>問題</td>

<td>アラームしきい値</td>

<td>開始時間</td>

</tr>

{ { 範囲 $i, $alert := .Alerts }}

<tr>

<td>{ { index $alert.Labels "アラート名" }}</td>

<td>{ { index $alert.Labels "インスタンス" }}</td>

<td>{ { index $alert.Annotations "値" }}</td>

<td>{ { $alert.StartsAt }}</td>

</tr>

{ { 終わり }}

</表>

{ { 終わり }}

      5) alertmanager サービスを開始する

(1) 起動する設定ファイルを指定

[root@centos7-min4 alertmanager-0.21.0]# ./alertmanager --config.file=alertmanager.yml &

(2) システムサービスのスタートアップとして設定

[root@centos7-min4 alertmanager-0.21.0]# cat /usr/lib/systemd/system/alertmanager.service

[ユニット]

説明=https://prometheus.io

[サービス]

再起動=失敗時

ExecStart=/opt/alertmanager-0.21.0/alertmanager --config.file=/opt/alertmanager-0.21.0/alertmanager.yml

[インストール]

WantedBy=マルチユーザー.ターゲット

systemctl enable alertmanager

systemctl start アラートマネージャー

systemctl ステータスアラートマネージャー

      6) prometheus 構成ファイルを変更し、prometheus を再起動します。

# Alertmanager の設定

警告:

  アラート マネージャ:

  - static_configs:

    - 対象:

       - 192.168.0.91:9093

# 一度ルールをロードし、グローバルな「evaluation_interval」に従って定期的に評価します。

ルールファイル:

    - "/data/prometheus/rules/node.yml"

    - "/data/prometheus/rules/redis.yml"

    - "/data/prometheus/rules/mysql.yml"

    - "/data/prometheus/rules/nginx.yml"

 - "/data/prometheus/rules/service-api.yml "

> グラファナ

2.アラームルールを設定する

①/data/prometheus/rules/node.yml

グループ:

- 名前: NodeProcess

  ルール:

  - アラート: NodeStatus

    expr: アップ == 0

    のため: 1m

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: サーバーがダウンしています"

      説明: "{ {$labels.instance}}: サーバーの遅延が 5 分を超えています"

  - アラート: NodeFilesystemUsage

    expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80

    のため: 2m

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: { {$labels.mountpoint }} パーティションの使用率が高すぎます"

      説明: "{ {$labels.instance}}: { {$labels.mountpoint }} パーティションの使用率が 80% を超えています (現在の値: { { $value }})"

  - アラート: NodeMemoryUsage

    expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 > 80

    のため: 2m

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: メモリ使用量が高すぎます"

      説明: "{ { $labels.instance}}: メモリ使用量が 80% を超えています (現在の値: { { $value }})"

  - アラート: NodeCPUUsage

    expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80

    のため: 2m

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: CPU 使用率が高すぎます"

      説明: "{ { $labels.instance}}: CPU 使用率が 80% を超えています (現在の値: { { $value }})"

  - アラート: LoadCPU

    expr: node_load5 > 5

    のため: 2m

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: 負荷が高すぎます"

      説明: "{ { $labels.instance}}: 負荷平均が 5 分以内に 5 を超えました (現在の値: { { $value }})" 

  - アラート: DiskIORead

    expr: irate(node_disk_read_bytes_total{device="sda"}[1m]) > 30000000

    のため: 1m

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: I/O 読み取り負荷が高すぎます"

      説明: "{ {$labels.instance}}: 1 分あたりの I/O 読み取りが 30MB/秒を超えました (現在の値: { { $value }})"

  - アラート: DiskIOWrite

    expr: irate(node_disk_written_bytes_total{device="sda"}[1m]) > 30000000

    のため: 1m

    ラベル:

      重大度: 警告

    注釈:

      summary: "{ {$labels.instance}}: I/O 書き込み負荷が高すぎます"

      説明: "{ {$labels.instance}}: 1 分あたりの I/O 書き込みが 30MB/秒を超えました (現在の値: { { $value }})"

  - アラート: 着信ネットワーク帯域幅

    expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (インスタンス)) / 100) > 18432

    のため: 1m

    ラベル:

      ステータス: 警告

    注釈:

      概要: "{ {$labels.mountpoint}} 受信ネットワーク帯域幅が高すぎます!"

      説明: "{ {$labels.mountpoint }}受信ネットワーク帯域幅が 5 分間 18M を超えています。RX 帯域幅使用量 { {$value}}"

  - アラート: 送信ネットワーク帯域幅

    expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (インスタンス)) / 100) > 18432

    のため: 1m

    ラベル:

      ステータス: 警告

    注釈:

      概要: "{ {$labels.mountpoint}} 送信ネットワーク帯域幅が高すぎます!"

      説明: "{ {$labels.mountpoint }} 送信ネットワーク帯域幅が 5 分間 18M を超えています。RX 帯域幅使用量 { {$value}}"

  - アラート: ネットワーク接続数

    expr: node_sockstat_TCP_inuse > 240

    のため: 1m

    ラベル:

      ステータス: 警告

    注釈:

      概要: "{ {$labels.mountpoint}} 接続数が多すぎます!"

      説明: "{ {$labels.mountpoint }}現在の接続番号{ {$value}}"

② /data/prometheus/rules/redis.yml

グループ:

- 名前: Redis

  ルール:

    - アラート: RedisDown

      expr: redis_up == 0

      のため: 5m

      ラベル:

        重大度: 警告

      注釈:

        概要: "Redis ダウン (インスタンス { { $labels.instance }})"

        説明: "Redis クラスター ノードの障害\n 値 = { { $value }}\n ラベル: { { $labels }}"

    - アラート: OutOfMemory

      expr: redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90

      のため: 5m

      ラベル:

        重大度: 警告

      注釈:

        概要: 「メモリ不足です (インスタンス { { $labels.instance }})」

        説明: "Redis のメモリが不足しています (> 90%)\n 値 = { { $value }}\n ラベル: { { $labels }}"

    - アラート: ReplicationBroken

      expr: デルタ (redis_connected_slaves[1m]) < 0

      のため: 5m

      ラベル:

        重大度: 警告

      注釈:

        概要: 「レプリケーションが壊れています (インスタンス { { $labels.instance }})」

        説明: "Redis インスタンスがスレーブを失いました\n 値 = { { $value }}\n ラベル: { { $labels }}"

    - アラート: TooManyConnections

      expr: redis_connected_clients > 1000

      のため: 5m

      ラベル:

        重大度: 警告

      注釈:

        概要: 「接続が多すぎます (インスタンス { { $labels.instance }})」

        説明: "Redis インスタンスの接続が多すぎます\n 値 = { { $value }}\n ラベル: { { $labels }}"     

    - アラート: RejectedConnections

      expr: 増加 (redis_rejected_connections_total[1m]) > 0

      のため: 5m

      ラベル:

        重大度: 警告

      注釈:

        概要: 「拒否された接続 (インスタンス { { $labels.instance }})」

        説明: "Redis への一部の接続が拒否されました\n 値 = { { $value }}\n ラベル: { { $labels }}"

    - アラート: AofSaveStatus

      expr: redis_aof_last_bgrewrite_status < 1

      のため: 5m

      あなたはできる:

        サーバー性: 警告

      注釈:

        概要: 「バックアップがありません (インスタンス { { $labels.instance }})」

        説明: "Redis AOF 永続化に失敗しました\n 値 = { { $value }}\n ラベル: { { $labels }}"

③/data/prometheus/rules/mysql.yml

グループ:

    - 名前: MySQL

      ルール:

      - アラート: MySQL ステータス

        expr: mysql_up == 0

        のため: 5s

        ラベル:

          重大度: 警告

        注釈:

          概要: "{ {$labels.instance}}: MySQL が停止しました !!!"

          説明: "MySQL データベースの実行ステータスを検出する"

   

      - アラート: MySQL スレーブ IO スレッドのステータス

        expr: mysql_slave_status_slave_io_running != 1

        のため: 5s

        ラベル:

          重大度: 警告

        注釈:

          概要: "{ {$labels.instance}}: MySQL スレーブ IO スレッドが停止しました !!!"

          説明: 「MySQL マスター/スレーブ IO スレッドの実行ステータスを検出する」

      - アラート: MySQL スレーブ SQL スレッドのステータス

        expr: mysql_slave_status_slave_sql_running != 1

        のため: 5s

        ラベル:

          重大度: 警告

        注釈:

          概要: '{ {$labels.instance}}: MySQL スレーブ SQL スレッドが停止しました !!!' 

          説明: "MySQL マスタースレーブ SQL スレッドの実行ステータスを検出する"

      - アラート: MySQL スレーブ遅延ステータス

        expr: mysql_slave_status_sql_delay == 30

        のため: 5s

        ラベル:

          重大度: 警告

        注釈:

          概要: "{ {$labels.instance}}: MySQL スレーブ遅延が 30 秒を超えています !!!"

          説明: "MySQL マスター/スレーブ遅延ステータスの検出"

   

      - アラート: Mysql_Too_Many_Connections

        expr: レート (mysql_global_status_threads_connected[5m]) > 200

        のため: 2m

        ラベル:

          重大度: 警告

        注釈:

          概要: "{ {$labels.instance}}: 接続が多すぎます"

          説明: "{ {$labels.instance}}: 接続が多すぎます。処理してください。(現在の値: { { $value }})" 

④/data/prometheus/rules/nginx.yml

グループ:

- 名前: nginx

  ルール:

  - アラート: Nginx ステータス

    expr: アップ{インスタンス="192.168.0.91:9913",ジョブ="nginx"} == 0

    のため: 5s

    ラベル:

      重大度: 警告

    注釈:

      概要: "{ {$labels.instance}}: Nginx が停止しました !!!"

      説明: "Nginx の異常な実行ステータスを検出"

おすすめ

転載: blog.csdn.net/Wemesun/article/details/126455053