Spring Cloudマイクロサービスは、エンタープライズレベルのクーポンシステムを作成するための実際の戦闘を提供します

ダウンロード:企業レベルのクーポンシステムを作成するためのSpringCloudマイクロサービスの実際の戦闘

多くのeコマースフロントエンドページのチュートリアルがありますが、完全で実用的なクーポンシステムのチュートリアルはほとんどありません。このコースでは、主流のJavaマイクロサービス開発フレームワークSpringCloudに基づいて、一般的に使用されるツールMySQL、Redis、およびKafkaと組み合わせて、手作業でクーポンシステムを構築し、クーポンの3つのマイクロサービスを通じてeコマースクーポンシステムのコアビジネスを完了します。テンプレート、配布、決済。これは、友人がセットアップ、給与の引き上げ、転職、変換を行うために不可欠なツールです

群衆に適して
います。計画を完了した
学生と面接の準備をしている求職者。eコマースクーポンシステムに関心のある学生。
技術準備要件
。SpringおよびSpringMVCフレームワークの基本的なアプリケーションに精通している。
一般的なコマンドを理解しているMySQL、Redis、およびKafkaの

Ansibleはprometheus + node-exporterをデプロイします
prometheusモニタリングシステムのシンプルなデプロイ

yum device ansible
yum install ansible
ansiblehostsファイル

【alertmanagers]
10.9.119.1
[プロメテウス]
10.9.119.1
[ノード輸出]
10.9.119.1
10.9.119.2
10.9.119.3
次のようにファイル階層形式は次のとおりです。

プロメテウス
prometheus.yml

  • ホスト:prometheus
    remote_user:ルート
    タスク:
    • 名前:ディレクトリ
      ファイルの作成
      パス:/ opt / prometheus
      状態:ディレクトリ#ディレクトリがない場合に作成
    • 名前:ファイルのコピーunarchive

      old-src:prometheus-2.24.0.linux-amd64.tar.gz
      dest:/ opt / prometheus
    • 名前:リンク
      ファイルの作成
      old-src:/opt/prometheus/prometheus-2.24.0.linux-amd64宛先
      :/ opt / prometheus / prometheus
      状態:リンク#软链接
    • 名前:コピーサービスファイル
      テンプレート:
      old-src:prometheus.service.j2
      宛先:/usr/lib/systemd/system/prometheus.service
    • 名前:copy config yaml
      テンプレート:
      old-src:prometheus.yml.j2
      宛先:/opt/prometheus/prometheus/prometheus.yml
      通知:
      • プロメテウスを再起動します
    • 名前:ルールの作成ディレクトリ
      ファイル:
      パス:/ opt / prometheus / prometheus / rules
      状態:ディレクトリ
    • name:copy rules yaml#ノードには特別なシンボルがあるため、copy
      copyを使用します:
      old-src:node.yml
      dest:/opt/prometheus/prometheus/rules/node.yml
      notify:#このアクションはハンドラーをトリガーします
      • プロメテウスを再起動します
    • 名前:プロメテウス
      サービスを開始します:
      名前:プロメテウス
      状態:
      有効になりました:はい
      ハンドラー:
    • 名前:プロメテウス
      サービスの再起動
      名前:プロメテウス
      状態:再起動
      prometheus.service.j2コピーモジュールを使用でき、テンプレートはここで使用されます

[ユニット]
説明=プロメテウス
ドキュメント=
After = network.target
[サービス]
WorkingDirectory = / opt / prometheus / prometheus
ExecStart = / opt / prometheus / prometheus / prometheus
ExecReload = / bin / kill -HUP $ MAINPID
ExecStop = / bin / kill -KILL $ MAINPID
Type = simple
KillMode = control-group restart =
on-failure
restartSec = 3s
[インストール]
WantedBy = multi-user.target
prometheus.yml.j2

グローバル構成

グローバル:
scrape_interval:30s#グラブ距離時間
evaluation_interval:30s
#ルールエンジン実行距離時間query_log_file:./ promql.log

アラーム設定

アラート:
alertmanagers:#Alertmanagersの配置

  • static_configs:#Alertmanager静的構成
    • ターゲット:#alertmanager送信先構成
      {%for alertmanager in groups ['alertmanagers']%}
      • { {alertmanager}}:9093
        {%endfor%}
        rule_files:#ルールファイルの構成
  • "
    ルール/*.yml"scrape_configs:#設定を取得
  • job_name: 'prometheus'
    タスク収集目的分類static_configs:#キャプチャ目的静的構成
    • ターゲット:
      {グループ内のprometheuの%['prometheus']%}
      • "{ {prometheu}}:9090"#目的をつかむ
        {%endfor%}
  • job_name:“ node”
    static_configs:
    • ターゲット:
      {グループ内のノードの%['node-exporter']%}
      • “{ { node }}:9100”
        {% endfor %}
        node-rules规则文件node.yml

グループ:

  • name:node.rules#アラームルールグループタイトル
    ルール:

    • alert:ノードはダウンしています
      expr:up == 0
      for:30s #Duration、つまり、30秒間情報が取得されない場合、アラームがトリガーされます
      labels:
      severity:serious#カスタムラベルserious
      アノテーション:
      summary:“ Instance { {$ labels.instance}} down "#カスタムの概要の
      説明:" { {$ labels.instance}}のジョブ{ {$ labels.job}}が5分以上ダウンしています。 "#カスタムの詳細な説明
    • アラート:ノードファイルシステム
      expr:100-(node_filesystem_free_bytes {fstype =〜“ ext4 | xfs”} / node_filesystem_size_bytes {fstype =〜“ ext4 | xfs”} * 100)> 80
      for:2m
      ラベル:
      重大度:警告
      注釈:
      要約:“ { { KaTeX解析エラー:期待される 'EOF'、位置16で '}'を取得:labels.instance} ̲}:{ { labels.mountpoint}}分区运用過高 "説明:" { { KaTeX解析エラー:期待される 'EOF '、位置16で'} 'を取得:labels.instance} ̲}:{ { labels.mountpoint}}分区运用大表80%(当前值:{ {$ value}}) "
    • アラート:ノードメモリ
      expr:100-(node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes)/ node_memory_MemTotal_bytes * 100> 80
      for:2m
      ラベル:
      重大度:警告
      注釈:
      要約:「{ { KaTeX解析エラー:予期される「EOF」、取得した「EOF」、位置16を取得しました:labels.instance} ̲}:メモリ使用量が高すぎます "de .. .labels.instance}}:メモリ使用量が80%を超えています(現在の値:{ {$ value}})"
    • アラート:ノードCPU
      expr:100-(avg(irate(node_cpu_seconds_total {mode =“ idle”} [5m]))by(instance)* 100)> 80
      for:2m
      ラベル:
      重大度:警告
      注釈:
      要約:“ { { KaTeX解析エラー:「EOF」が必要です。位置16で「}」を取得しました:labels.instance} ̲}:CPU运用過高 "d… labels.instance}}:CPU运用大表80%(当前值:{ {$ value }})」node-exporter node-exporter.yml

  • ホスト:node-exporter
    remote_user:root
    タスク:

    • 名前:ディレクトリ
      ファイルの作成
      パス:/ opt / prometheus
      状態:ディレクトリ
    • 名前:ファイルのコピーunarchive

      old-src:node_exporter-1.0.1.linux-amd64.tar.gz
      dest:/ opt / prometheus
    • 名前:リンク
      ファイルの作成
      old-src:/opt/prometheus/node_exporter-1.0.1.linux-amd64宛先
      :/ opt / prometheus / node_exporter
      状態:リンク
    • 名前:コピーサービスファイル
      テンプレート:
      old-src:node_exporter.service.j2宛先
      :/usr/lib/systemd/system/node_exporter.service
    • 名前:node_exporter
      サービスの開始:
      名前:node_exporter
      状態:再起動
      有効:はい
      node_exporter.service.j2

[ユニット]
説明=ノードエクスポーター
ドキュメント=
After = network.target
[サービス]
WorkingDirectory = / opt / prometheus / node_exporter /
ExecStart = / opt / prometheus / node_exporter / node_exporter
ExecStop = / bin / kill -KILL $ MAINPID
Type = simple
KillMode = control-group restart
= on-failure
restartSec = 3s
[インストール]
WantedBy = multi-user.target
alertmanager
alertmanager.yaml

  • ホスト:alertmanagers
    remote_user:root
    タスク:
    • 名前:ディレクトリ
      ファイルの作成
      パス:/ opt / prometheus
      状態:ディレクトリ
    • 名前:ファイルのコピーunarchive

      old-src:alertmanager-0.21.0.linux-amd64.tar.gz
      dest:/ opt / prometheus
    • 名前:リンク
      ファイルの作成
      old-src:/opt/prometheus/alertmanager-0.21.0.linux-amd64宛先
      :/ opt / prometheus / alertmanager
      状態:リンク
    • 名前:コピーサービスファイル
      テンプレート:
      old-src:alertmanager.service.j2宛先
      :/usr/lib/systemd/system/alertmanager.service
    • 名前:copy config yaml
      テンプレート:
      old-src:alertmanager.yml.j2宛先
      :/opt/prometheus/alertmanager/alertmanager.yml
      通知:
      • alertmanagerを再起動します
    • 名前:サーバー
      サービスの開始:
      名前:alertmanager
      状態:再起動
      有効:はい
      ハンドラー:
    • 名前:alertmanager
      サービスを再起動します:
      名前:alertmanager
      状態:
      alertmanager.service.j2を再起動しました

[ユニット]
説明= AlertManager
ドキュメント=
After = network.target
[サービス]
WorkingDirectory = / opt / prometheus / alertmanager /
ExecStart = / opt / prometheus / alertmanager / alertmanager
ExecReload = / bin / kill -HUP $ MAINPID
ExecStop = / bin / kill -KILL $ MAINPID
Type = simple
KillMode = control-group restart =
on-failure
restartSec = 3s
[インストール]
WantedBy = multi
- user.targetalertmanager.yml.j2これ里运用了邮箱告警

global:
resolve_timeout:5m#アラームの状態が解決するために発火の変化がある場合、アナウンスがリリースされるまでにどのくらいの時間がかかりますか。
smtp_from:“ [email protected]
smtp_smarthost: 'smtp.qq.com:465'
smtp_auth_username:“ [email protected]”#メールアカウント
smtp_auth_password:“ bcvizcgqbgojjjeb”#パスワードパスワード、非QQパスワード
smtp_require_465ポート、falseを選択
route:
group_by:['alertname'] #group_waitによるグループ化として使用されるラベル
:10s#グループ待機時間10s
group_interval:10s#アラームを送信する上位グループと下位グループ間の距離と時間10s
repeat_interval:24h#繰り返しアラーム時間を送信します。デフォルトの1hは、同じアラームを繰り返し送信しません。サイレント
レシーバー: 'default-receiver'#デフォルトのアクセプター

次のサブルートと一致しないすべてのアラームはルートノードに保存され、「default-receiver」に送信されます

ルート:#グループ

  • レシーバー: 'db'
    group_wait:10s
    match_re:

    定期的に一致するアラームの使用には、dbに送信される2つのサービスが含まれます

    service:mysql | redis#すべてのservice = mysqlまたはservice = redisアラームがデータベースの受信側に割り当てられます
  • レシーバー: 'web'
    group_by:[product、environment]#グループ化の基本
    一致として製品タグと環境タグを使用します
    team:frontend#フロントエンドを持つすべてのアラームタグがWeb
    レシーバーに送信されます
  • 名前: 'default-receiver'
    email_configs:
  • name: 'db'
    #電子メールでアラームを送信
    email_configs:-to
    : '[email protected]'
  • name: 'web'
    email_configs:-to:
    '[email protected]'
    invalid_rules:#禁止しますが、両方ともアラームが発生します。レベルが重大な場合、レベル警告は禁止され、重大なレベルのアラームのみが発生します。
    • source_match:
      severity: 'critical'#クリティカルアラームは警告レベルのアラーム情報を抑制しますtarget_match

      severity: 'warning'
      equal:['alertname'、 'dev'、 'instance']

おすすめ

転載: blog.csdn.net/qiusuo123456/article/details/114444355