目次
4. Prometheus と Grafana をインストールします。3
5. Prometheus と Grafana を構成します。4
①/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 を使用して監視システムを構築します.主な監視コンテンツには、マシンのハードウェア リソース、基本的なサービス、アプリケーション、およびビジネス インターフェイス データが含まれます。
Prometheus は、オープン ソースのサービス監視システムおよび時系列データベースです。Prometheus エコシステムは、データの収集と保存を担当し、PromQL クエリ言語サポートを提供する Prometheus サーバー、多言語クライアント SDK を提供する Prometheus サーバー、一時的なジョブ アクティブ プッシュ インジケーターをサポートする中間ゲートウェイ Push Gateway、およびデータ収集コンポーネントを含む複数のコンポーネントで構成されます。 Exporter は、ターゲットからデータを収集し、それを Prometheus でサポートされている形式に変換し、アラート機能を提供する Alertmanager を担当します。
Prometheus Exporter コンポーネントと従来のデータ収集コンポーネントの違いは、データを中央サーバーに送信せず、中央サーバーが主導権を握ってデータを取得するのを待つことです. Prometheus は、実行ステータスを収集するためにさまざまなタイプのエクスポーターを提供しますさまざまなサービスの。
Promethues 公式 Web サイトが提供するエコシステム アーキテクチャ図:
Grafana: オープンなオブザーバビリティ プラットフォーム | グラファナ ラボ
Grafana はクロスプラットフォームのオープン ソース測定分析および視覚化ツールであり、視覚的なデータ表示のために複数のデータ ソース (prometheus など) からのデータ取得をサポートします。
&&& サーバーのハードウェア リソースを監視します: 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 インストール パッケージのリファレンスは次のとおりです。
Grafana インストール パッケージのリファレンスは次のとおりです。
wget https://dl.grafana.com/oss/release/grafana-7.1.1.linux-amd64.tar.gz
3.解凍してインストール
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 とデータ ソースの構成
管理者/Iampwd
データソース URL: http://192.168.0.91:9090/prometheus
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 モジュールをインストールします
- https://github.com/vozlt/nginx-module-vts - (ダウンロードする zip パッケージを選択)
- nginx をコンパイルしてインストールする
./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
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 ページの監視を表示
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 データ同期の失敗の原因
- プログラムがスレーブで書き込み操作を実行した可能性があります
- スレーブ マシンの再起動後のトランザクション ロールバックが原因である可能性があります。
解決策:最初にスレーブサービスを停止し、マスターサーバー上のホストのステータスを確認し、ファイルと位置に対応する値に従ってスレーブサーバーに同期し、最後にスレーブサービスを開始して同期ステータスを確認します
メインサーバー:
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をインポートします。
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
開発によって提供されるビジネス監視インターフェース データに従って、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メニュー カスケード
1.アラームモードを設定する
>プロメテウス
Prometheus は、alertmanager コンポーネントを介してアラートを実装します. Alertmanager は、prometheus によって送信されたアラートを受信し、アラートに対して一連の処理を実行して、指定されたユーザーに送信します.
プロメテウス--->トリガーしきい値--->期間超過--->アラートマネージャー--->グループ|抑制|サイレント--->メディアタイプ--->メール、DingTalk、WeChatなど
1) アラートマネージャーをインストールする
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 の異常な実行ステータスを検出"