グラフィックとテキストを組み合わせた丨Prometheus+Grafana+GreatSQL 性能監視システム構築ガイド(後編)

1. 環境の紹介

この記事の環境とこの記事で使用したデータベースは以下のとおりです。GreatSQL 8.0.32-24

$ cat /etc/system-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
$ uname -a
Linux gip 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
$ ldd --version
ldd (GNU libc) 2.17

前回の記事【写真と文章の組み合わせ | Prometheus+Grafana+GreatSQL パフォーマンス監視システム構築ガイド(前編)】では監視システムの構築方法を紹介しましたが、今回はGrafanaプラットフォームの使い方とアラーム機能について紹介します。アラートマネージャーモジュール。

2. Grafana メールアラート

ここでは電子メールアラートを取り上げ、例として QQ メールボックスを使用します。

1.電子メールサービスを有効にする

QQ メールボックスにログインした後、[設定] -> [アカウント] -> [POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV サービスを有効にする] をクリックします。

ファイル

すでにオンにしています。オンになっていない場合は、オンにできます。次に、 をクリックし、生成授权码認証コードを忘れずに保存してから、grafana 電子メール構成を変更します。

$ vim /usr/local/prometheus/grafana-10.1.1/conf/defaults.ini 

/smtpメール設定を見つけた領域を使用し、以下の例に示すように変更します。

ファイル

Grafana サービスを再起動します

$ systemctl restart grafana-server.service

次に、Grafana Web ページにログインしhttp://172.17.137.104:3000/、電子メール アラートを追加します。

ファイル

に入力しNameAddresses情報が表示されるのを待って、Test「テスト」をクリックします。

ファイル

電子メールが受信され、テストが成功したことがわかります。

ファイル

2. アラームルールを追加する

アラート ルールは Grafana に追加できます。たとえば、GreatSQL 接続を作成しました。この値を監視しますmysql_up。値が 0 の場合、GreatSQL に接続できません。

ファイル

編集パネルに入ると、アラーム オプションがあることがわかりAlert、次にクリックします。Create alert rule from this panel

ファイル

この時点で、アラーム ルール設定パネルに入ります。

まず、最初の部分で设置警报规则名称あるアラーム ルール名の設定について説明します。

ファイル

(前半)

2 番目の部分は外部に表示するデータで、Expressions次のステップはアラーム条件を設定することです。

ファイル

(後半)

最初の項目は最新のデータを表しますが、最大値を示すlast()など、その他にもさまざまなオプションがありますが、一般的にはmax()last()

ファイル

2 番目の項目は、どのクエリから来たのかを示すものです。クエリは 1 つしかないため、選択します。A

3 番目の項目は、監視するトリガー値を指定します。トリガー判定は前のオプションです。図にあるものはこれより上を示します。他にも、以下、範囲外、範囲内IS ABOVEなどのいくつかのオプションがあります。値はありません。ここでは を選択します。合成式は、値が 1 未満の場合にトリガーされます。IS BELOWIS OUTSIDE RANGEIS WITHIN RANGEHAS NO VALPUEIS ABOVEmysql_up

3 番目の部分では、ルールが保存されるフォルダーFolderと評価するグループを作成します。Evaluation group同じグループ内のルールは、同じ時間間隔内で順番に評価されます。

ファイル

(第三部)

Pending periodアラームをトリガーした後の遅延を示します

4 番目のセクションは、コメントのSummary概要、何が起こったのか理由の短い概要、Descriptionアラート ルールの機能の説明、およびRunbook URLRunbook URL (アラート Runbook を保存するための Web ページ) を追加するために使用されます。

ファイル

5 番目の部分では、通知を構成します。これは、カスタム ラベルを追加して通知のルーティング方法を変更するために使用されます。一致するポリシーが設定されていない場合、すべてのアラート インスタンスはデフォルト ポリシーによって処理されます。

ファイル

右上隅をクリックしてルールを保存すると、設定したばかりのアラーム ルールがページに表示されます。

ファイル

3. テストメールアラート

次に、GreatSQL の停止をシミュレートして、アラーム ルールがトリガーされ、電子メール アラームが送信されるかどうかを確認します。

$ systemctl stop greatsql

1 分に設定しているため、GreatSQL の接続ステータスが再度チェックされるまでに 1 分かかります。

下の図にあるように、GreatSQL に接続できないことが検出され、保留状態になっています。

ファイル

設定された遅延時間が経過すると、Firing電子メールが送信されたことが表示されます。

ファイル

QQ メールボックスにアラームメールが受信されていることがわかります。

ファイル

次に、GreatSQL を再度開始します

$ systemctl start greatsql

解決策が完了すると、解決済みのメールが届きます。1 resolved instances

ファイル

3. Grafana の DingTalk アラート

以前の記事で、DingTalk Alert Prometheus+Grafana+DingTalk を使用してスタンドアロンの MySQL 監視およびアラーム システムをデプロイすることについて説明しましたが、使用される Alertmanager は Grafana ではなく Pumi のアラーム モジュールであるため、ここでは Grafana を使用して設定する方法を紹介します。 .DingTalk アラート。

ただし、2023 年 9 月 1 日以降、DingTalk は非内部グループ内部グループの両方のカスタム ロボットの作成をサポートしなくなります。内部アプリケーション ロボットを作成するには、 DingTalk 開発者バックエンドにログインし、開発者権限を申請する必要があります。具体的な方法はここでは紹介しませんので、必要であればDingTalkで詳しく紹介しています。

Prometheus+Grafana+DingTalk のスタンドアロン MySQL 監視および警報システムを展開する方法に従って、最初に DingTalk ロボットを作成し、次にGrafana にContact pointsコンタクト ポイントを追加します。

ファイル

次に、ドロップダウン ボックスNameに入力して、 DingTalk ロボットの URL を見つけます。IntegrationDingDingWebhook:

ファイル

Message Typeカード モードとリンク モードの 2 つのオプションがあり、タイトル タイトルとメッセージ メッセージを選択し、[テスト] をクリックしてアラーム情報が送信できるかどうかをテストします。アラーム テストが送信されます。いいえ、ご質問がある場合は、下の青いボタンをクリックしてください。Save contact point

ファイル

DingTalk アラートを選択したい場合は、オプションでNotification policies選択できますEdit

ファイル

DingTalk アラート方式に変更しDefault contact point、変更後クリックします。Update default policy

ファイル

次に、テストのために、GreatSQL シミュレーションをオフにして、アラーム メッセージが送信されるかどうかを確認します。

$ systemctl stop greatsql

ファイル

問題ありません。アラーム メッセージは正常に受信されました

4. Alertmanager の電子メール アラート

前回の記事でインストールした Alertmanager を覚えていますか? 実はこれにもアラーム機能があります。Prometheus には、AlertManager であるアラーム モジュールが含まれています。Alertmanager は、主に Prometheus から送信されたアラーム情報を受信するために使用されます。さまざまなアラーム通知チャネルをサポートしており、アラーム情報の重複排除、ノイズ除去、グループ化などが簡単に行えます。前回の記事では、いくつかのルールも追加しました。忘れた場合は、前の記事をもう一度読んでください。Alertmanager は、DingTalk に警告するためにも使用できます。Prometheus にスタンドアロンの MySQL 監視およびアラーム システムをデプロイするための概要があります。 +Grafana+DingTalk.こちらです Alertmanager のメールアラートのご紹介

Prometheus がアラームをトリガーするプロセス

ファイル

1. アラートマネージャーの設定

AlertManager のデフォルトの設定ファイルは でalertmanager.yml、パスは です./usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.yml次に、アラーム情報を通知するために電子メールを使用するように設定しましょう. ここでは例として QQ メールボックスを取り上げます. 設定は次のとおりです:

global:
  resolve_timeout: 5m
  smtp_from: '填写邮箱@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '填写邮箱@qq.com'
  smtp_auth_password: '填写QQ邮箱授权码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '填写邮箱@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

yml にはインデントの要件があります。よく確認してください。

主要なパラメータの詳細な紹介:

グローバル

グローバル構成。主に電子メール、Webhook などのアラーム メソッドを構成します。

  • resolve_timeout: タイムアウト、デフォルトは 5 分

  • smtp_auth_password: QQ メールボックス認証コードと非 QQ アカウントのログイン パスワードを覚えておいてください。

  • smtp_require_tls: tlsを使用するかどうかは、環境に応じてオンまたはオフを選択できます。エラーが報告された場合はemail.loginAuth failed: 530 Must issue a STARTTLS command first、true に設定する必要があります。starttls failed: x509: certificate signed by unknown authoritytls が有効でエラーが報告された場合、tls 検証をスキップするには、email_configs で insecure_skip_verify: true を構成する必要があることに注意することが重要です。

ルート

アラートの設定に使用される配布戦略

  • group_by:グループ集約に使用します。アラーム通知はラベルごとにグループ化されます。同じラベルまたは同じアラーム名(alertname)を持つアラーム通知はグループに集約され、1 つの通知として送信されます。集約を完全に無効にしたい場合は、group_by: [...] を設定できます。
  • group_wait: 新しいアラーム グループが作成されると、最初の通知を送信する前に「group_wait」待機する必要があります。これにより、同じラベルを持つより多くのアラームを送信して待機する前に集約し、最終的に 1 つの通知に結合して送信できるようになります。
  • group_interval: 最初のアラーム通知が送信され、新しい評価サイクルでグループの最新のアラームが受信された後、グループに対してトリガーされた新しいアラームの送信を開始する前に、「group_interval」時間待機する必要があります。 as、group チャネルに相当します。
  • repeat_interval: アラーム通知が正常に送信された後、問題が回復していない場合は、間隔を再度繰り返す必要があります。
  • receiver: 以下の設定に対応して、アラーム メッセージ受信者を設定します。たとえば、一般的に使用される電子メール、wechat、slack、webhook、その他のメッセージ通知方法です。

受信機

アラーム情報受信者情報の設定

  • to:アラートメールを受信
  • send_resolved:障害復旧後の通知

禁止ルール

別のセット (ソース) に一致するアラートがある場合に、あるセット (ターゲット) に一致するアラートを無効にする抑制ルールの設定

設定が完了したら再起動するだけですsystemctl restart alertmanager.service

起動に失敗した場合は、自分でトラブルシューティングを行うことができjournalctl -u alertmanager.service -f、インデントの問題がないかどうかを注意深く確認してください。

次に、AlertManager のアラート ルールを設定しますが、これについては前回の記事でも説明し、ルールを格納するための rules フォルダーも作成しましたので、前回の記事の方法に従うだけです。

2. テストメールアラート

http://172.17.137.104:9090/rules次に、 Rules of Prometheusにログインして、いくつかのアラームが追加されているかどうかを確認します。

ファイル

ここでは、Prometheus Alert アラーム ステータスについて説明します。これには、 、 、 の 3 つの状態がありInactiveますPendingFiring

  • Inactive: 非アクティブなステータス。監視されているが、アラームはまだトリガーされていないことを示します。
  • Pending: このアラームをトリガーする必要があることを示します。アラームはグループ化、抑制/抑制、またはサイレント/サイレントに設定できるため、検証を待機し、すべての検証に合格すると起動状態に移行します。
  • Firing: アラートを AlertManager に送信すると、設定に従ってすべての受信者にアラートが送信されます。アラームがクリアされると、ステータスは非アクティブに変更され、サイクルが継続します。

ファイル

次に、GreatSQL を閉じてmysql_up = 0アラーム ルールをトリガーし、アラーム電子メールが送信されるかどうかを確認します。

$ systemctl stop greatsql

サービスを停止すると、アラート ページが绿色 Inactiveステータスからステータスに変わり黄色 Pending、ステータスに変わるまで待機し続けることで红色 Firing、アラーム情報が AlertManager に送信されます。このとき、AlertManager は設定ルールに従って受信者に電子メール アラートを送信します。

ファイル

黄色保留中

ファイル

レッドファイアリング

その後、警告メールが届きました

ファイル

上の図からわかるように、デフォルトの電子メール テンプレートのタイトルと本文には、以前に構成されたラベルと注釈の情報が含まれており、サービスが通常に戻り警報が解除されるまで、5 分ごとに自動的に送信されます。アラームが送信されます メッセージを閉じます。

ファイル

アラームがトリガーされた後、設定によって決定される5 分ごとにアラーム電子メールが自動的に送信されます (サービスが正常に復元されない場合) alertmanager.ymlroute -> repeat_interval: 5m

3.AlertManagerのメール内容を変更する

この手順は必須ではありませんが、メールの内容をより洗練された直感的なものにしたい場合は、この手順を参照してください。

すべての主要な情報が含まれていますが、電子メール形式のコンテンツはよりエレガントで直感的になる可能性があり、AlertManager はカスタム電子メール テンプレート設定の変更もサポートしています。

という名前の新しいテンプレート ファイルを作成する必要があります。email.tmpl

$ vim /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/email.tmp

次のように書きます

{{ define "email.from" }}填入邮箱@qq.com{{ end }}
{{ define "email.to" }}填入邮箱@qq.com{{ end }}
{{ define "email.to.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
<h2>@告警通知</h2>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }} <br>
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
<h2>@告警恢复</h2>
告警程序: prometheus_alert <br>
故障主机: {{ .Labels.instance }}<br>
故障主题: {{ .Annotations.summary }}<br>
告警详情: {{ .Annotations.description }}<br>
告警时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }}<br>
恢复时间: {{ .EndsAt.Local.Format "2006-01-02 15:04:05" }}<br>
{{ end }}{{ end -}}
{{- end }}

上記のテンプレート ファイルでは、ファイル内で直接参照できる3 つのテンプレート変数email.fromemail.to、およびを構成します。email.to.htmlalertmanager.yml

email.to.html送信するメールの内容はHtml形式とText形式に対応していますが、美しく表示するためにHtml形式で情報をシンプルに表示しています以下は{{ range .Alerts }}、ループ内で一致するアラート情報を取得するために使用されるループ構文です。以下のアラート情報は、いくつかのコア値が表示用に抽出されることを除いて、上記のデフォルトの電子メール表示情報と同じです。alertmanager.yml次に、次のようにファイル構成を追加する必要がありますtemplates

$ vim /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_from: '填入邮箱@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '填入邮箱@qq.com'
  smtp_auth_password: '填写QQ邮箱授权码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
templates:
  - '/usr/local/prometheus/alertmanager-0.26.0.linux-amd64/email.tmp'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '{{ template "email.to" . }}'
    html: '{{ template "email.to.html" . }}'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

次に、GreatSQL の停止をシミュレートし、アラーム ルールをトリガーし、アラーム電子メールが送信されるかどうかを確認します。

ファイル

問題ありません。警告メールは正常に受信しました。

さて、Prometheus+Grafana+GreatSQL パフォーマンス監視システム構築ガイドはこれで終わりです。始めましょう~


GreatSQL をお楽しみください :)

GreatSQL について

GreatSQL は、金融レベルのアプリケーションに適した国産の独立したオープンソース データベースです。高性能、高信頼性、高い使いやすさ、高セキュリティなどの多くのコア機能を備えており、MySQL サーバーや Percona Server のオプションの代替として使用できます。オンライン実稼働環境で使用され、完全に無料で、MySQL または Percona Server と互換性があります。

関連リンク: GreatSQL コミュニティ Gitee GitHub Bilibili

GreatSQL コミュニティ:

画像

コミュニティの報酬に関する提案とフィードバック: https://greatsql.cn/thread-54-1-1.html

コミュニティ ブログ賞を受賞した投稿の詳細: https://greatsql.cn/thread-100-1-1.html

(記事について質問がある場合、または独自の洞察がある場合は、公式コミュニティ Web サイトにアクセスして質問したり共有したりできます~)

技術交流グループ:

WeChat & QQ グループ:

QQグループ: 533341697

WeChat グループ: GreatSQL コミュニティ アシスタント (WeChat ID: wanlidbc) を友達として追加し、コミュニティ アシスタントがあなたをグループに追加するまで待ちます。

Lei Jun: Xiaomi の新しいオペレーティング システム ThePaper OS の正式版がパッケージ化されました。Gome App の抽選ページのポップアップ ウィンドウは創設者を侮辱しています。Ubuntu 23.10 が正式にリリースされました。金曜日を利用してアップグレードするのもいいでしょう! Ubuntu 23.10 リリース エピソード: ヘイトスピーチが含まれていたため、ISO イメージが緊急に「リコール」されました 23 歳の博士課程の学生が Firefox で 22 年間続いた「ゴーストバグ」を修正しました RustDesk リモート デスクトップ 1.2.3 がリリースされましたWayland を強化して TiDB 7.4 をサポート リリース: MySQL 8.0 と正式互換. Logitech USB レシーバーを取り外した後、Linux カーネルがクラッシュしました. マスターは Scratch を使用して RISC-V シミュレータをこすり、Linux カーネルを正常に実行しました. JetBrains が Writerside ツールを開始しました技術文書の作成に。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/GreatSQL/blog/10120061