目录

一:基于 kubernetes 的 Prometheus 介绍

1:环境简介

2:监控流程

3:Kubernetes 监控指标

二:Prometheus 的安装

1:从 Github 克隆项目分支

2:安装 Prometheus Operator

--server-side

3:Operator 容器启动起来后安装 Prometheus Stack

备注:

5:查看 Prometheus 容器的状态

6:查看 servicemonitors

6:修改 grafana 的 service 的类型为 NodePort

7:访问 grafana

8:修改 Prometheus 的 Service 类型

9:访问 Prometheus

10:查看监控目标

三:配置 Grafana Dashbord

1:添加数据源

(1)添加数据源

(2)数据源选择 Prometheus

(3)配置数据源

2:通过 Node id 导入监控模板

其他模板:

四:监控 MySQL 数据库

1:在 Kubernetes 中安装一个 mysql

2:设置 mysql 密码

3:查看 pod

4:创建 service,暴露 mysql 端口

5:访问测试

6:设置权限

7:配置 mysql exporter 采集 mysql 监控文件

1. 创建 mysql - exporter 资源

2. 查看 mysql - exporter 资源状态

3. 测试获取 metrics 数据

9:配置ServiceMonitor

10:创建这个 ServiceMonitor

11:在 prometheus 查看监控目标中是否出现了 mysql

12:在 grafana 中添加 mysql 监控模板

五:对接钉钉报警

1:部署 DingTalk

2:修改配置文件

3:启动服务

4:配置Alertmanager

6:测试


一:基于 kubernetes 的 Prometheus 介绍

1:环境简介

node - exporter + prometheus + grafana 是一套非常流行的 Kubernetes 监控方案。它们的功能如下:

  • node - exporter:节点级指标导出工具,可以监控节点的 CPU、内存、磁盘、网络等指标,并暴露 Metrics 接口。
  • Prometheus:时间序列数据库和监控报警工具,可以抓取 Cadvisor 和 node - exporter 暴露的 Metrics 接口,存储时序数据,并提供 PromQL 查询语言进行监控分析和报警。
  • Grafana:图表和 Dashboard 工具,可以查询 Prometheus 中的数据,并通过图表的方式直观展示 Kubernetes 集群的运行指标和状态。

2:监控流程

(1) 在 Kubernetes 集群的每个节点安装 Cadvisor 和 node - exporter,用于采集容器和节点级指标数据。
(2) 部署 Prometheus,配置抓取 Cadvisor 和 node - exporter 的 Metrics 接口,存储 containers 和 nodes 的时序数据。
(3) 使用 Grafana 构建监控仪表盘,选择 Prometheus 作为数据源,编写 PromQL 查询语句,展示 K8S 集群的 CPU 使用率、内存使用率、网络流量等监控指标。
(4) 根据监控结果,可以设置 Prometheus 的报警规则,当监控指标超过阈值时发送报警信息。这套方案能够全面监控 Kubernetes 集群的容器和节点,通过 Metrics 指标和仪表盘直观反映集群状态,并实现自动报警,非常适合 k8S 环境下微服务应用的稳定运行。

具体实现方案如下:

  • node-exporter: 在每个节点也作为 DaemonSet 运行,采集节点 Metrics。
  • Prometheus: 部署 Prometheus Operator 实现,作为 Deployment 运行,用于抓取 Metrics 和报警。
  • Grafana: 部署 Grafana Operator 实现,用于仪表盘展示。

3:Kubernetes 监控指标

K8S 本身的监控指标:

  • CPU 利用率:包括节点 CPU 利用率、Pod CPU 利用率、容器 CPU 利用率等,用于监控 CPU 资源使用情况。
  • 内存利用率:包括节点内存利用率、Pod 内存利用率、容器内存利用率等,用于监控内存资源使用情况。
  • 网络流量:节点网络流量、Pod 网络流量、容器网络流量,用于监控网络收发包大小和带宽利用率。
  • 磁盘使用率:节点磁盘使用率,用于监控节点磁盘空间使用情况。
  • Pod 状态:Pod 的 Running、Waiting、Succeeded、Failed 等状态数量,用于监控 Pod 运行状态。
  • 节点状态:节点的 Ready、NotReady 和 Unreachable 状态数量,用于监控节点运行状态。
  • 容器重启次数:单个容器或 Pod 内所有容器的重启次数,用于监控容器稳定性。
  • API 服务指标:Kubernetes API Server 的请求 LATENCY、请求 QPS、错误码数量等,用于监控 API Server 性能。
  • 集群组件指标:etcd、kubelet、kube-proxy 等组件的运行指标,用于监控组件运行状态。
  • API 服务指标:Kubernetes API Server 的请求 LATENCY、请求 QPS、错误码数量等,用于监控 API Server 性能。
  • 集群组件指标:etcd、kubelet、kube-proxy 等组件的运行指标,用于监控组件运行状态。

这些都是 Kubernetes 集群运行状态的关键指标,通过 Prometheus 等工具可以进行收集和存储,然后在 Grafana 中设计相应的 Dashboard 进行可视化展示。当这些指标超出正常范围时,也可以根据阈值设置报警,保证 Kubernetes 集群和服务的稳定运行。

例如:

  • CPU 利用率超过 80% 报警
  • 内存利用率超过 90% 报警
  • 网络流量 / 磁盘空间突增报警
  • Pod / 节点 NotReady 状态超过 10% 报警
  • API Server 请求 LATENCY 超过 200ms 报警
  • etcd 节点 Down 报警等等。

这些报警规则的设置需要根据集群大小和服务负载进行评估。

二:Prometheus 的安装

1:从 Github 克隆项目分支

[root@k8s - master ~]# git clone -b \
release - 0.10 https://github.com/prometheus - operator/kube - prometheus.git

2:安装 Prometheus Operator

Prometheus Operator 是 CoreOS 开源的项目,它提供了一种 Kubernetes - native 的方式来运行和管理 Prometheus。Prometheus Operator 可以自动创建、配置和管理 Prometheus 实例,并将其与 Kubernetes 中的服务发现机制集成在一起,从而实现对 Kubernetes 集群的自动监控。

Prometheus 和 Prometheus Operator 的区别如下:

Prometheus 是一种开源的监控系统,用于记录各种指标,并提供查询接口和告警机制。而 Prometheus Operator 则是一种用于在 Kubernetes 上运行和管理 Prometheus 的解决方案。相比于传统方式手动部署 Prometheus,Prometheus Operator 可以自动创建、配置和管理 Prometheus 实例,并将其与 Kubernetes 中的服务发现机制集成在一起,大幅简化了我们的工作量。

安装方法如下:

署 Prometheus,Prometheus Operator 可以自动创建、配置和管理 Prometheus 实例,并将其与
Kubernetes 中的服务发现机制集成在一起,大幅简化了我们的工作量。

[root@k8s-master ~]# cd kube-prometheus/
[root@k8s-master ~]# kubectl apply --server-side -f manifests/setup

备注:

--server-side

这个特性主要目标是把逻辑从 kubectl apply 移动到 kube-apiserver 中,这可以修复当前遇到的很多有关所有权冲突的问题。

可以直接通过 API 完成声明式配置的操作,而无需依赖于特定的 kubectl apply 命令

如果要删除 Prometheus Operator,可以使用下面的命令

kubectl delete --ignore-not-found=true -f manifests/setup

备注:

prometheus-operator 的作用主要是用来创建 prometheus 的相关资源以及监视与管理它创建出来的资源对象。

3:Operator 容器启动起来后安装 Prometheus Stack

[root@k8s-master ~]# kubectl apply --server-side -f manifests/

备注:

删除 Prometheus Stack

kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

备注:

kube-prometheus-stack 是一个全家桶,提供监控告警组件 alert-manager、grafana 等子组件。

5:查看 Prometheus 容器的状态

root@k8s-master ~]# kubectl get pod -n monitoring
NAME                                      READY   STATUS    RESTARTS   AGE
alertmanager-main-0                       2/2     Running   0          79m
alertmanager-main-1                       2/2     Running   0          79m
alertmanager-main-2                       2/2     Running   0          79m
blackbox-exporter-746c64fd88-prn6l        3/3     Running   0          87m
grafana-5fc7f9f55d-x4gv4                  1/1     Running   0          87m
kube-state-metrics-6c8846558c-c6k55       3/3     Running   0          87m
node-exporter-hsr28                       2/2     Running   0          87m
node-exporter-tq7vv                       2/2     Running   0          87m
node-exporter-zns11                       2/2     Running   0          87m
prometheus-adapter-6455646bdc-991gh       1/1     Running   0          87m
prometheus-adapter-6455646bdc-nxh5z       1/1     Running   0          87m
prometheus-k8s-0                          2/2     Running   0          79m
prometheus-k8s-1                          2/2     Running   0          79m
prometheus-operator-f59c8b954-hmtx8       2/2     Running   0          87m

6:查看 servicemonitors

servicemonitors 定义了如何监控一组动态的服务,使用标签选择来定义哪些 Service 被选择进行监控。这可以让团队制定一个如何暴露监控指标的规范,然后按照这些规范自动发现新的服务,而无需重新配置。

为了让 Prometheus 监控 Kubernetes 内的任何应用,需要存在一个 Endpoints 对象,Endpoints 对象本质上是 IP 地址的列表,通常 Endpoints 对象是由 Service 对象来自动填充的,Service 对象通过标签选择器匹配 Pod,并将其添加到 Endpoints 对象中。一个 Service 可以暴露一个或多个端口,这些端口由多个 Endpoints 列表支持,这些端点一般情况下都是指向一个 Pod。

Prometheus Operator 引入的这个 ServiceMonitor 对象就会发现这些 Endpoints 对象,并配置 Prometheus 监控这些 Pod。ServiceMonitorSpec 的 endpoints 部分就是用于配置这些 Endpoints 的哪些端口将被 scrape 指标的。

Prometheus Operator 使用 ServiceMonitor 管理监控配置。

ServiceMonitor 的创建方法如下:

[root@k8s-master ~]# kubectl get servicemonitors -A
NAMESPACE   NAME                    AGE
monitoring  alertmanager-main       2m9s
monitoring  blackbox-exporter       2m8s
monitoring  coredns                 2m6s
monitoring  grafana                 2m7s
monitoring  kube-apiserver          2m6s
monitoring  kube-controller-manager 2m6s
monitoring  kube-scheduler          2m6s
monitoring  kube-state-metrics      2m7s
monitoring  kubelet                 2m6s
monitoring  node-exporter           2m6s
monitoring  prometheus-adapter      2m5s
monitoring  prometheus-k8s          2m6s
monitoring  prometheus-operator     2m5s

6:修改 grafana 的 service 的类型为 NodePort

注意:默认的 type 为 ClusterIP 的类型

[root@k8s-master ~]# kubectl edit svc grafana -n monitoring
spec:clusterIP: 10.107.64.140clusterIPs:- 10.107.64.140externalTrafficPolicy: ClusterinternalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: httpnodePort: 32082port: 3000protocol: TCPtargetPort: httpselector:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheussessionAffinity: Nonetype: NodePort
status:loadBalancer: {}
[root@k8s-master ~]# kubectl get svc grafana -n monitoring
NAME      TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
grafana   NodePort   10.99.26.98    <none>        3000:32082/TCP   28m

7:访问 grafana

http://<k8S 集群任意节点的 IP>:32082

注意:

默认的登录账号密码为 admin/admin,第一次登陆会提示修改密码,不想修改可以点击 skip 跳过

8:修改 Prometheus 的 Service 类型

将 type 类型修改为 NodePort,默认的是 ClusterIP

[root@k8s-master ~]# kubectl edit svc prometheus-k8s -n monitoring
apiVersion: v1
kind: Service
metadata:creationTimestamp: "2023-04-05T03:49:40Z"labels:app.kubernetes.io/component: prometheusapp.kubernetes.io/instance: k8sapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 2.32.1name: prometheus-k8snamespace: monitoringresourceVersion: "4615"
uid: 9bdba2d2-a7e6-4bf2-9e3d-355d5e3de646
spec:clusterIP: 10.100.14.27clusterIPs:- 10.100.14.27externalTrafficPolicy: ClusterinternalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: webnodePort: 32370port: 9090protocol: TCPtargetPort: web- name: reloader-webnodePort: 31480port: 8080protocol: TCPtargetPort: reloader-webselector:app.kubernetes.io/component: prometheusapp.kubernetes.io/instance: k8sapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheussessionAffinity: clientIP:  timeoutSeconds: 10800type: NodePort
status:loadBalancer: {}
[root@k8s-master ~]# kubectl get svc -n monitoring prometheus-k8s
NAME              TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
prometheus-k8s    NodePort   10.105.187.25   <none>        9090:32370/TCP   33m

9:访问 Prometheus

http://<k8S 集群任意节点的 IP>:32370

10:查看监控目标

备注:

在 Prometheus 中一条告警规则有三个状态:

  • inactive:还未被触发;
  • pending:已经触发,但是还未达到 for 设定的时间;
  • firing:触发且达到设定时间。

三:配置 Grafana Dashbord

1:添加数据源

注意:在本案例中,grafana 已经有了 Prometheus 的数据源,(1)、(2)、(3)步骤可以省去

(1)添加数据源

单击 Dashboards 按钮(四方块图标),选择 “Add your first data source”

(2)数据源选择 Prometheus

鼠标放到 Prometheus 上,选择最右侧的 “Select” 按钮

(3)配置数据源

HTTP 配置项下的 URL 填写 “http://prometheus-k8s:9090”,这里的 prometheus 是 K8s 集群内的 Service 名,也可以使用 IP 地址代替

然后点击页面底部的 “Save & Test” 按钮,保存并确定测试通过。

2:通过 Node id 导入监控模板

单击首页左侧搜索框下面的 + 的按钮。选择 import 按钮,输入监控模板 id:13105

单击 Load 按钮加载即可,最后单击 Import 按钮导入

完成上述步骤后,可以看到Node节点在Dashbord监控页面展示情况。

其他模板:

可以去官网查找更丰富的模板
Grafana dashboards | Grafana Labs

常见的模板有

  • Kubernetes Cluster

       7249

  • Docker Registry
    9621

  • Docker and system monitoring
    893

  • K8S for Prometheus Dashboard 20211010 中文版
    13105

  • Kubernetes Pods
    4686

  • Linux Stats with Node Exporter
    14731

四:监控 MySQL 数据库

在 Prometheus 的监控体系中,符合云原生设计理念的应用通常自带一个 Metrics 接口,这使得 Prometheus 能够直接抓取到应用的监控数据。然而,对于非云原生应用(如 MySQL、Redis、Kafka 等),由于它们并未原生暴露 Prometheus 所需的 Metrics 接口,因此我们需要借助 Exporter 来实现数据的采集和暴露。本案例将以 MySQL 为例,详细介绍如何通过 Exporter 实现对非云原生应用的监控,并将其集成到 Prometheus 监控体系中。

1:在 Kubernetes 中安装一个 mysql

[root@k8s-master ~]# kubectl create deploy mysql --image=mysql:5.7.23  

2:设置 mysql 密码

[root@k8s-master ~]# kubectl set env deploy/mysql MYSQL_ROOT_PASSWORD=pwd123  

备注:需要先设置密码,mysql 的 pod 状态才能正常

3:查看 pod

[root@k8s-master ~]# kubectl get pod  
NAME                     READY  STATUS   RESTARTS  AGE  
mysql-58dd9c4df4-17fgd   1/1    Running  0         2m53s  

4:创建 service,暴露 mysql 端口

[root@k8s-master ~]# kubectl expose deployment mysql --type NodePort --port=3306  

查看 service:

[root@k8s-master ~]# kubectl get svc -l app=mysql  

NAME   TYPE       CLUSTER-IP    EXTERNAL-IP  PORT(S)         AGE  
mysql  NodePort   10.96.116.184 <none>       3306:31152/TCP  37s  

5:访问测试

[root@k8s-master ~]# dnf -y install mysql  
# IP 修改为 K8S 节点任意节点的 IP  
[root@k8s-master ~]# mysql -u root -ppwd123 -h 192.168.207.137 -P 31152  

6:设置权限

[root@k8s-master ~]# grant all on *.* to exporter@'%' identified by 'exporter';  

7:配置 mysql exporter 采集 mysql 监控文件

[root@k8s-master ~]# cat mysql-exporter.yaml  
apiVersion: apps/v1  
kind: Deployment  
metadata:  name: mysql-exporter  namespace: monitoring  
spec:  replicas: 1  selector:  matchLabels:  k8s-app: mysql-exporter  template:  metadata:  labels:  k8s-app: mysql-exporter  spec:  containers:  - name: mysql-exporter  image: registry.cn-beijing.aliyuncs.com/dotbalo/mysqld-exporter  env:  - name: DATA_SOURCE_NAME  value: "exporter:exporter@mysql.default:3306/"imagePullPolicy: IfNotPresentports:- containerPort: 9104
---
apiVersion: v1
kind: Service
metadata:name: mysql-exporternamespace: monitoringlabels:k8s-app: mysql-exporter
spec:type: ClusterIPselector:k8s-app: mysql-exporterports:- name: apiport: 9104protocol: TCP

1. 创建 mysql - exporter 资源

[root@k8s - master ~]# kubectl create -f mysql - exporter.yaml

2. 查看 mysql - exporter 资源状态

[root@k8s - master ~]# kubectl get -f mysql - exporter.yaml
NAME                          READY   UP - TO - DATE   AVAILABLE   AGE
deployment.apps/mysql - exporter   1/1     1              1           84sNAME                    TYPE        CLUSTER - IP     EXTERNAL - IP   PORT(S)    AGE
service/mysql - exporter   ClusterIP   10.109.16.46   <none>        9104/TCP   84s

3. 测试获取 metrics 数据

% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  130k    0  130k    0     0   2923k      0 --:--:-- --:--:-- --:--:--  2973k
promhttp_metric_handler_requests_total{code="503"} 0

9:配置ServiceMonitor

[root@k8s-master ~]# cat mysql-sm.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: mysql-exporternamespace: monitoringlabels:k8s-app: mysql-exporternamespace: monitoring
spec:jobLabel: k8s-appendpoints:- port: apiinterval: 30sscheme: httpselector:matchLabels:k8s-app: mysql-exporter
namespaceSelector:matchNames:- monitoring

10:创建这个 ServiceMonitor

[root@k8s-master ~]# kubectl create -f mysql-sm.yaml  

11:在 prometheus 查看监控目标中是否出现了 mysql

12:在 grafana 中添加 mysql 监控模板

模板 ID:6239

五:对接钉钉报警

首先在钉钉群里面添加一个自定义机器人
为钉钉机器人添加关键字:FIRING

1:部署 DingTalk

DingTalk(钉钉)是阿里巴巴集团开发的一款企业级通讯和协作平台,旨在提升工作效率和团队协作能力。它集成了即时通讯、视频会议、任务管理、日程安排、文件共享等多种功能,适用于企业内部的沟通与协作。DingTalk 支持多平台使用,包括移动设备(iOS、Android)和桌面端(Windows、macOS),并且提供了丰富的 API 接口,方便与企业现有的系统进行集成。

下载地址:

https://github.com/timonwong/prometheus - webhook - dingtalk/releases/download/v2.0.0/prometheus - webhook - dingtalk - 2.0.0.linux - amd64.tar.gz  

在任意节点部署都行,本文是在 K8S 的 master 节点部署

tar -xf prometheus - webhook - dingtalk - 2.0.0.linux - amd64.tar.gz  
mv prometheus - webhook - dingtalk - 2.0.0.linux - amd64 /usr

2:修改配置文件

cd /usr/local/dingtalk  
mv config.example.yml config.yml  
vi config.yml  
## Request timeout  
# timeout: 5s  ## Uncomment following line in order to write template from scratch (be careful)  
#no_builtin_template: true  ## Customizable templates path  
#templates:  
#  - contrib/templates/legacy/template.tmpl  ## You can also override default template using `default_message`  
## The following example to use the 'legacy' template from v0.3.0  
#default_message:  
#  title: '{{ template "legacy.title" . }}'  
#  text: '{{ template "legacy.content" . }}'  ## Targets, previously was known as "profiles"  
targets:  webhook1:  url:  
yaml
targets:webhook1:url: https://oapi.dingtalk.com/robot/send?access_token=6d07ddc122c69d0bb23a6212f2378b4da45c750ac09a2910f653cd5d324556cd# secret for signaturesecret: SEC00000000000000000000webhook2:url: https://oapi.dingtalk.com/robot/send?access_token=6d07ddc122c69d0bb23a6212f2378b4da45c750ac09a2910f653cd5d324556cdwebhook_legacy:url: https://oapi.dingtalk.com/robot/send?access_token=6d07ddc122c69d0bb23a6212f2378b4da45c750ac09a2910f653cd5d324556cd# Customize template contentmessage:# Use legacy templatetitle: '{{ template "legacy.title" . }}'text: '{{ template "legacy.content" . }}'webhook_mention_all:url: https://oapi.dingtalk.com/robot/send?access_token=6d07ddc122c69d0bb23a6212f2378b4da45c750ac09a2910f653cd5d324556cdmention:all: true
webhook_mention_users:url: https://oapi.dingtalk.com/robot/send?access_token=6d07ddc122c69d0bb23a6212f2378b4da45c750ac09a2910f653cd5d324556cdmention:mobiles: ['156xxxx8827', '189xxxx8325']

备注:

江红色部分替换成你的机器人的webhook

3:启动服务

cat > /etc/systemd/system/prometheus - webhook - dingtalk.service << 'EOF'
[Unit]
Description=Prometheus Webhook DingTalk
After=network.target[Service]
User=root
Group=root
WorkingDirectory=/usr/local/dingtalk
ExecStart=/usr/local/dingtalk/prometheus - webhook - dingtalk
Restart=always
RestartSec=5
Environment="CONFIG_FILE=/usr/local/dingtalk/config.yml"[Install]
WantedBy=multi - user.target
EOFsudo systemctl daemon - reload
sudo systemctl start prometheus - webhook - dingtalk
sudo systemctl status prometheus - webhook - dingtalk[root@k8s - master ~]# ss -nlpt | grep 8060LISTEN 0      4096               *:8060             *:*
users:((("prometheus-wehb",pid=1990,fd=3)))

4:配置Alertmanager

cd /root/kube-prometheus/manifests/
vi alertmanager-secret.yaml
# 注意 IP 地址修改为部署 DingTalk 节点的 IP
# 文件全部内容如下:
apiVersion: v1
kind: Secret
metadata:labels:app.kubernetes.io/component: alert-routerapp.kubernetes.io/instance: mainapp.kubernetes.io/name: alertmanagerapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 0.23.0name: alertmanager-mainnamespace: monitoring
stringData:alertmanager.yaml: |-"global":"resolve_timeout": "5m""inhibit_rules":- "equal":- "namespace"- "alertname""source_matchers":"global":"resolve_timeout": "5m""inhibit_rules":- "equal":- "namespace"- "alertname""source_matchers":- "severity = critical""target_matchers":- "severity =~ info"- "equal":- "namespace"- "alertname""source_matchers":- "severity = info""target_matchers":- "severity = info""receivers":- "name": "webhook""webhook_configs":- "url": "http://192.168.207.137:8060/dingtalk/webhoo""send_resolved": true"route":"group_by":- "namespace""group_interval": "50s""group_wait": "30s""receiver": "webhook""repeat_interval": "1m""routes":- "matchers":- "alertname = Watchdog""receiver": "webhook"  - "matchers":- "severity = critical""receiver": "webhook"- "matchers":- "alertname = TargetDown""receiver": "webhook"
#加载配置到 Alertmanager
bash
kubectl replace -f alertmanager-secret.yaml  
#修改 Alertmanager 的 Service 类型为 NodePort
bash
kubectl edit svc -n monitoring alertmanager-main  
#查看监听端口
bash
kubectl get svc -n monitoring alertmanager-main  
plaintext
NAME                  TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)                      AGE  
alertmanager-main     NodePort   10.104.241.78  <none>   

5:访问 Alertmanager 页面

http:///<K8S 集群任意节点的 IP>:30586

备注

Prometheus Alert 告警状态有三种状态:InactivePendingFiring

Inactive:非活动状态,表示正在监控,但还未触发任何警报。

Pending:表示警报需触发,因警报可分组、压抑 / 抑制或静默,需等待验证;验证通过则转 Firing

Firing:警报发至 AlertManager,按配置发给接收者;警报解除则转回 Inactive,循环往复。

若修改 alertmanager-secret.yaml,可重建:

kubectl delete -f alertmanager-secret.yaml  
kubectl create -f alertmanager-secret.yaml  

6:测试

可停止刚运行的 MySQL(通过设副本数量为 0 实现 )。

kubectl scale deployment mysql --replicas=0  

然后等待是否会进行钉钉报警

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93105.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93105.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93105.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫实战:研究django-dynamic-scraper 框架,构建电商动态数据采集系统

1. 引言 1.1 研究背景 据 Statista 数据,2025 年全球互联网数据总量将突破 175ZB,其中 80% 为非结构化数据(网页、文本、图像等)。高效提取这些数据对企业竞争情报、学术研究至关重要。网络爬虫作为数据获取的核心工具,经历了从静态页面抓取到动态内容解析的演进,但传统…

掌握MATLAB三维可视化:从基础到实战技巧

目录 1. 引言&#xff1a;三维可视化的重要性 2. 基础三维图形绘制 2.1 三维曲线图&#xff08;plot3&#xff09; 2.2 三维散点图&#xff08;scatter3&#xff09; 2.3 三维网格图&#xff08;mesh&#xff09; 2.4 三维曲面图&#xff08;surf&#xff09; 3. 参数曲面…

Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成

Linux 服务部署&#xff1a;自签 CA 证书构建 HTTPS 及动态 Web 集成 一、HTTPS基础原理 HTTPS是HTTP协议基于SSL/TLS协议的加密版本&#xff0c;核心差异及握手过程如下&#xff1a;HTTP与HTTPS对比协议传输方式端口核心特点HTTP明文传输80无加密&#xff0c;安全性低HTTPS数据…

Python3.10 + Firecrawl 下载公众号文章

获取Firecrawl apikey 打开官网&#xff0c;使用github账号登录 https://www.firecrawl.dev/ 进入个人中心 https://www.firecrawl.dev/app/api-keys 使用PyCharm创建python项目 创建.env # API配置 FIRECRAWL_API_KEYfc-9*********0816d5ac6b20 # 输出配置 OUTPUT_DIRout…

IoT/透过oc_lwm2m/boudica150 源码中的AT指令序列,分析NB-IoT接入华为云物联网平台IoTDA的工作机制

文章目录概述指令调用顺序具体接入指令分析ATE0 关闭回显ATQREGSWT 设置&#xff08;平台&#xff09;注册模式ATQLWSREGIND0 手动注册平台set_autoconnect / ATNCONFIGATNBANDx,xset_plmn / ATCOPS_set_apn / ATCGDCONT(安全)接入参数 CDPDTLSPSKATNNMI 设置新消息指示_check_…

Android UI(一)登录注册 - Compose

UI - 登录注册 - Compose一、声明式UI1. **颠覆传统开发模式**2. **技术优势**3. **开发效率提升**4. **未来生态方向**5. **实际影响**二、创建项目1. Compose UI结构2. Scaffold3. 可组合函数三、创建组件页面1. LoginPage2. RegisterPage3. MainPage四、导航1. 添加依赖2. 使…

分享10个ai生成ppt网站(附ai生成ppt入口)

实测对比&#xff1a;15页PPT从3小时压缩到3分钟的秘密武器 当ChatGPT能写方案、Midjourney能画图&#xff0c;做PPT还在手动排版就OUT了&#xff01;这些AI生成PPT网站已实现「输入文案秒出设计稿」&#xff0c;无论职场汇报、毕业答辩还是路演融资&#xff0c;零设计基础也能…

最强开源视频模型通义万相wan2.1在comfyui中的安装应用详解

摘要&#xff1a;阿里巴巴开源通义万相Wan2.1模型&#xff0c;支持文生视频、图生视频等多种功能&#xff0c;并整合关键环节简化创作流程。官方和Kiji版本需配套使用各自工作流。低显存显卡可使用GGUF模型解决方案&#xff0c;最低适配4G显存。ComfyUI已原生支持该模型&#x…

机器学习:基于OpenCV和Python的智能图像处理 实战

机器学习&#xff1a;基于OpenCV和Python的智能图像处理实战——待填坑图像处理基础图像的基本表示方法图像处理的基本操作图像运算图像的色彩空间转换图像几何变换4.1 仿射变换4.2 重映射4.3 投影变换 4.4 极坐标变换5 图像直方图处理7 图像阈值处理8 图像形态学处理github地址…

proteus实现简易DS18B20温度计(stm32)

一、新建proteus工程 具体看前面文章 二、搭建电路 需要配置供电网络以及寻找元器件&#xff0c;细节看前面文章&#xff0c;下面给出电路图 电路包含了五个部分&#xff1a; 1、DS18B20&#xff1a;数据引脚记得上拉 2、stm32电路 3、串口电路&#xff08;右下角那个器件…

Autoppt-AI驱动的演示文稿生成工具

本文转载自&#xff1a;Autoppt-AI驱动的演示文稿生成工具 - Hello123工具导航 ** 一、 Autoppt&#xff1a;AI 驱动的智能演示文稿生成工具 Autoppt 是一款基于人工智能的在线演示文稿生成平台&#xff0c;通过输入主题或上传文档&#xff08;Word/PDF/ 图片等&#xff09;&…

Flink on YARN启动全流程深度解析

Flink on YARN 模式启动流程及核心组件协作详解整个过程分为三个主要阶段&#xff1a;​​JobManager 启动​​&#xff08;作业提交与 AM 初始化&#xff09;​​TaskManager 资源分配与启动​​​​任务部署与执行​​第一阶段&#xff1a;作业提交与 JobManager (AM) 启动​…

安卓开发者自学鸿蒙开发1基础入门

1.基础 声明式UI&#xff1a;​​ ​​核心&#xff1a;​​ 你​​声明​​你想要UI是什么样子&#xff08;在build()方法里描述&#xff09;&#xff0c;而不是一步步命令式地创建和操作View对象&#xff08;findViewById, setText, setOnClickListener&#xff09;。 模块化…

弹性扩展新范式:分布式LLM计算的FastMCP解决方案

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。如果你想系统学习AI大模型应用开发&#xff0c;挑战AI高薪岗位&#xff0c;可在文章底部联系。在现代大语言模型&#xff08;LLM&#xff09;应用架构中…

springboot项目不同平台项目通过http接口AES加密传输

前言&#xff1a; 在公司协作开发的过程中&#xff0c;自己的项目是公共调用平台&#xff0c;也可以说是中转平台&#xff0c;供公司其他团队的项目进行接口调用。因为是不同团队项目之间的相互调用&#xff0c;所以不能通过openFeign远程调用。只能通过http远程调用&#xff…

推荐5个网页模板资源网

1. 企业模板官方网站&#xff1a; http://www.qimoban.com介绍&#xff1a;企业模板(qimoban.com )是一个专注于提供丰富多样的企业模板的优质平台&#xff0c;致力于为企业和个人打造高效、专业、个性化的模板获取渠道。该平台提供海量的企业模板资源&#xff0c;涵盖企业官网…

Redis持久化机制(RDB AOF)

1. RDB RDB 持久化是把当前进程数据生成快照保存到硬盘的过程&#xff0c;触发 RDB 持久化过程分为手动触发和 自动触发&#xff0c;存储的是二进制数据。 1.1 手动触发 使用 save 和 bgsave 命令触发&#xff1a; save&#xff1a;Redis服务主进程阻塞式执行持久化操作&…

【css】让浏览器支持小于12px的文字

【css】让浏览器支持小于12px的文字.demo {display: inline-block;/** 使用Webkit引擎的变换属性&#xff08;主要针对旧版Safari/Chrome&#xff09; **/-webkit-transform: scale(0.8); }注意&#xff1a;display: inline-block; 一定要加上&#xff01;1.transform: scale(…

机器学习-基础入门:从概念到核心方法论

在人工智能飞速发展的今天&#xff0c;机器学习作为其核心技术&#xff0c;正深刻改变着我们的生活与工作。从 AlphaGo 战胜围棋世界冠军&#xff0c;到日常的智能推荐、人脸识别&#xff0c;机器学习的应用无处不在。本文将从基础概念出发&#xff0c;带你系统了解机器学习的核…

《Leetcode》-面试题-hot100-动态规划

题目列表 70. 爬楼梯 简单难度 leetcode链接 118. 杨辉三角 简单难度 leetcode链接 198. 打家劫舍 中等难度 leetcode链接 279.完全平方数 中等难度 leetcode链接 322.零钱兑换 中等难度 leetcode链接 139.单词拆分 中等难度 leetcode链接 300.最长递增子序列 中等难度 l…