ダウンロード:企業レベルのクーポンシステムを作成するための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:#ルールファイルの構成
- {
{alertmanager}}:9093
- ターゲット:#alertmanager送信先構成
- "
ルール/*.yml"scrape_configs:#設定を取得 - job_name: 'prometheus'
#タスク収集目的分類static_configs:#キャプチャ目的静的構成- ターゲット:
{グループ内のprometheuの%['prometheus']%}- "{
{prometheu}}:9090"#目的をつかむ
{%endfor%}
- "{
{prometheu}}:9090"#目的をつかむ
- ターゲット:
- job_name:“ node”
static_configs:- ターゲット:
{グループ内のノードの%['node-exporter']%}- “{
{ node }}:9100”
{% endfor %}
node-rules规则文件node.yml
- “{
{ node }}:9100”
- ターゲット:
グループ:
-
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
- alert:ノードはダウンしています
-
ホスト: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:- 宛先:'[email protected]'#アラーム受信者
- 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']
- source_match: