最新资讯

  • Prometheus监控服务器及K8s集群资源

Prometheus监控服务器及K8s集群资源

2026-01-31 06:27:43 栏目:最新资讯 2 阅读

Prometheus+Grafana监控服务器及K8s集群资源

本文档详细介绍了如何在 Rocky Linux 8.5 系统上部署 Prometheus + Grafana,实现对服务器资源及 Kubernetes 集群组件可视化监控,内容包含环境准备、组件安装、配置优化、报警设置等。

一、环境信息概览

IP主机名内存/CPU安装软件操作系统架构
192.168.200.11k8s-master2C/2G/100Gnode_exporterRockyLinux8.5X86
192.168.200.12k8s-node12C/2G/100Gnode_exporterRockyLinux8.5X86
192.168.200.13k8s-node22C/2G/100Gnode_exporterRockyLinux8.5X86
192.168.200.14prometheus2C/2G/100Gprometheuspushgatewayprometheusgrafana-enterprisenode_exporterRockyLinux8.5X86

K8s部署参考:https://blog.csdn.net/weixin_45867513/article/details/144565165?spm=1011.2415.3001.5331

二、核心组件与端口说明

组件名称软件包名称版本作用默认端口
Prometheusprometheus-2.29.1.linux-amd64.tar.gzv2.29.1监控系统,负责拉取和存储数据9090
Node Exporternode_exporter-1.2.2.linux-amd64.tar.gzv1.2.2收集服务器基础资源信息,比如 CPU 和内存9100
Pushgatewaypushgateway-1.4.1.linux-amd64.tar.gzv1.4.1提供“主动推送”监控数据的功能9091
Alertmanageralertmanager-0.23.0.linux-amd64.tar.gzv0.23.0负责接收和发送告警通知,比如发邮件或钉钉9093
Grafanagrafana-enterprise-v12.0.0.linux-amd64.tar.gzv12.0.0图形化展示监控数据3000

下载方式:

  • prometheus官网:https://prometheus.io/download/

  • grafana官网:https://grafana.com/grafana/download?pg=graf&plcmt=deploy-box-1

  • 百度网盘(含所有软件包):https://pan.baidu.com/s/18ekfed1AxZ8BmwO_bJHxNA 提取码: 4hzu

三、环境准备(104)

3.1 修改主机名 & 防火墙设置

[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# hostnamectl set-hostname prometheus && bash

3.2 设置 Hosts 文件

[root@prometheus ~]# cat >> /etc/hosts << EOF
192.168.200.11 k8s-master
192.168.200.12 k8s-node1
192.168.200.13 k8s-node2
192.168.200.14 prometheus
EOF

3.3 免密登录设置

[root@prometheus ~]# ssh-keygen
[root@prometheus ~]# ssh-copy-id prometheus
[root@prometheus ~]# ssh-copy-id k8s-master01
[root@prometheus ~]# ssh-copy-id k8s-node01
[root@prometheus ~]# ssh-copy-id k8s-node02

3.4 时间同步配置

yum install -y chrony
echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf
systemctl enable --now chronyd

3.5 上传软件包

mkdir -pv /data/software
cd /data/software
# 上传所有组件 tar.gz 包至该目录

四、安装 Prometheus 组件

4.1 Prometheus 安装

[root@prometheus software]# tar -xf prometheus-2.29.1.linux-amd64.tar.gz -C /usr/local/

配置文件:/usr/local/prometheus/prometheus.yml修改前备份文件

    static_configs:                      #使用静态配置方式指定采集目标。
      - targets: ["localhost:9090"]      #Prometheus 自身的监控地址(默认端口 9090)
  - job_name: 'pushgateway'              #定义任务名称,用于标识该采集任务
    static_configs:
        - targets: ['192.168.200.14:9091']  # prometheus所在主机IP
          labels:
            instance: pushgateway
  - job_name: 'node exporter'    
    static_configs:
        - targets: ['192.168.200.11:9100','192.168.200.12:9100','192.168.200.13:9100','192.168.200.14:9100']   #被采集的客户端ip,prometheus会从http://这这些ip/metrics拉取数据

这个配置文件主要定义了三类监控

Prometheus 自身:监控 Prometheus 服务的运行状态。

Push Gateway:接收短期作业推送的指标。

Node Exporter 集群:监控多台服务器的系统资源使用情况。

创建 systemd 服务:/etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus-2.29.1/prometheus --config.file=/usr/local/prometheus-2.29.1/prometheus.yml
WorkingDirectory=/usr/local/prometheus-2.29.1
Restart=always

[Install]
WantedBy=multi-user.target

启动服务:

systemctl daemon-reload
systemctl enable --now prometheus

4.2 PushGateway安装

prometehes拉取数据是比较困难的,所以中间有一个中转站pushgateway,他更像是metric和prometehes的填充,prometehes会到pushgateway上去获取数据

[root@prometheus prometheus-2.29.1]# cd /data/software/
[root@prometheus software]# tar -xf pushgateway-1.4.1.linux-amd64.tar.gz 
[root@prometheus software]# mv pushgateway-1.4.1.linux-amd64 /usr/local/pushgateway-1.4.1

创建服务:/etc/systemd/system/pushgateway.service

[Unit]
Description=Pushgateway
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/pushgateway-1.4.1/pushgateway --web.listen-address :9091
WorkingDirectory=/usr/local/pushgateway-1.4.1
Restart=always

[Install]
WantedBy=multi-user.target

启动服务:

systemctl daemon-reload
systemctl enable --now pushgateway

4.3 Alermanager安装

这个软件主要用于报警

[root@prometheus software]# tar -xf alertmanager-0.28.1.linux-amd64.tar.gz 
[root@prometheus software]# mv alertmanager-0.28.1.linux-amd64 alertmanager-0.28.1

创建服务:/etc/systemd/system/alertmanager.service

[Unit]
Description=Alertmanager
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/alertmanager-0.28.1/alertmanager --config.file=/usr/local/alertmanager-0.28.1/alertmanager.yml
WorkingDirectory=/usr/local/alertmanager-0.28.1
Restart=always

[Install]
WantedBy=multi-user.target

启动服务:

systemctl daemon-reload
systemctl enable --now alertmanager

4.4 Node Exporter安装(所有节点)

安装到哪个node上就能获取哪个node的节点信息,prometheus通常会从暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据,最终存放在自己时序数据库中

[root@prometheus software]# tar -xf node_exporter-1.2.2.linux-amd64.tar.gz 
[root@prometheus software]# mv node_exporter-1.2.2.linux-amd64 /usr/local/node_exporter-1.2.2

远程给其它主机

[root@prometheus software]# cd /usr/local/
[root@prometheus local]# scp -r node_exporter-1.2.2/ k8s-master:/usr/local/
LICENSE                                    100%   11KB   6.3MB/s   00:00    
NOTICE                                     100%  463   426.7KB/s   00:00    
node_exporter                              100%   18MB  64.7MB/s   00:00    
[root@prometheus local]# scp -r node_exporter-1.2.2/ k8s-node1:/usr/local/
LICENSE                                    100%   11KB   6.7MB/s   00:00    
NOTICE                                     100%  463   211.1KB/s   00:00    
node_exporter                              100%   18MB  66.2MB/s   00:00    
[root@prometheus local]# scp -r node_exporter-1.2.2/ k8s-node2:/usr/local/
LICENSE                                    100%   11KB   5.9MB/s   00:00    
NOTICE                                     100%  463   394.6KB/s   00:00    
node_exporter                              100%   18MB  83.0MB/s   00:00

创建服务:/etc/systemd/system/node_exporter.service

[root@prometheus local]# vim /etc/systemd/system/node_exporter.service

[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart= /usr/local/node_exporter-1.2.2/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

远程给其它主机:

#给其他主机传送
[root@prometheus local]# scp -r /etc/systemd/system/node_exporter.service k8s-master:/etc/systemd/system/
node_exporter.service                      100%  254   271.2KB/s   00:00    
[root@prometheus local]# scp -r /etc/systemd/system/node_exporter.service k8s-node1:/etc/systemd/system/
node_exporter.service                      100%  254   199.4KB/s   00:00    
[root@prometheus local]# scp -r /etc/systemd/system/node_exporter.service k8s-node2:/etc/systemd/system/
node_exporter.service                      100%  254   130.4KB/s   00:00 

所有主机启动exporter服务

[root@prometheus local]# systemctl enable --now node_exporter
[root@k8s-master ~]# systemctl enable --now node_exporter
[root@k8s-node1 ~]# systemctl enable --now node_exporter
[root@k8s-node2 ~]# systemctl enable --now node_exporter

所有主机访问9100端口:

192.168.200.11:9100/metrics

192.168.200.12:9100/metrics

192.168.200.13:9100/metricss

192.168.200.14:9100/metrics

能访问该端口,表明目标主机上的 Node Exporter 服务已成功启动并正常监听,正在通过 http://IP:9100/metrics 提供数据供prometheus拉取。

启动prometheus和pushgateway

systemctl daemon-reload
systemctl enable --now prometheus
systemctl enable --now pushgateway

访问prometheus服务端界面

五、Grafana 安装与使用

5.1 Grafana安装

[root@prometheus software]# cd /data/software/
[root@prometheus software]# tar -xf grafana-enterprise-12.0.0.linux-amd64.tar.gz -C /usr/local/

创建Granfana服务单元/etc/systemd/system/grafana.service

[Unit]
Description=Grafana
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/grafana-v12.0.0/bin/grafana-server web
WorkingDirectory=/usr/local/grafana-v12.0.0
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload 
systemctl enable --now grafana.service 

访问地址:http://192.168.200.14:3000(默认账号密码:admin / admin) 首次登录需强制修改密码

5.2 添加数据源

  1. 进入 Grafana左侧菜单栏Data sources
  2. 添加 Prometheus 数据源,地址为:http://192.168.200.14:9090
  3. 点击 Save & Test 确认连接成功

这个是prometheus服务器地址:http://192.168.200.14:9090 输入完成后点击下方的Save&test按钮

5.3 导入模板

点击右上角搜索按钮

点击导入模板

输入模板ID 8919 导入

5.4 图形化数据展示

Grafana官网 https://grafana.com/grafana/dashboards/ 多个模板可供选择

六、Kubernetes 集群监控(kube-state-metrics 安装)

6.1 安装Kube-state-metrics服务

  • 作用
    通过监听 Kubernetes API Server,将集群内资源对象( PodDeploymentServiceNamespaceConfigMap 等)的状态转换为 Prometheus 可采集的时间序列指标

yaml文件创建kube-state-metrics.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: 1.9.0
  name: kube-state-metrics
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - secrets
  - nodes
  - pods
  - services
  - serviceaccounts
  - resourcequotas
  - replicationcontrollers
  - limitranges
  - persistentvolumeclaims
  - persistentvolumes
  - namespaces
  - endpoints
  verbs:
  - list
  - watch
- apiGroups:
  - apps
  resources:
  - statefulsets
  - daemonsets
  - deployments
  - replicasets
  verbs:
  - list
  - watch
- apiGroups:
  - batch
  resources:
  - cronjobs
  - jobs
  verbs:
  - list
  - watch
- apiGroups:
  - autoscaling
  resources:
  - horizontalpodautoscalers
  verbs:
  - list
  - watch
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - list
  - watch
- apiGroups:
  - certificates.k8s.io
  resources:
  - certificatesigningrequests
  verbs:
  - list
  - watch
- apiGroups:
  - discovery.k8s.io
  resources:
  - endpointslices
  verbs:
  - list
  - watch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - volumeattachments
  verbs:
  - list
  - watch
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - mutatingwebhookconfigurations
  - validatingwebhookconfigurations
  verbs:
  - list
  - watch
- apiGroups:
  - networking.k8s.io
  resources:
  - networkpolicies
  - ingressclasses
  - ingresses
  verbs:
  - list
  - watch
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - list
  - watch
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterrolebindings
  - clusterroles
  - rolebindings
  - roles
  verbs:
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: 1.9.0
  name: kube-state-metrics
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kube-state-metrics
subjects:
- kind: ServiceAccount
  name: kube-state-metrics
  namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: 1.9.0
  name: kube-state-metrics
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: kube-state-metrics
  template:
    metadata:
      labels:
        app.kubernetes.io/component: exporter
        app.kubernetes.io/name: kube-state-metrics
        app.kubernetes.io/version: 1.9.0
    spec:
      automountServiceAccountToken: true
      containers:
      - image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 5
          timeoutSeconds: 5
        name: kube-state-metrics
        ports:
        - containerPort: 8080
          name: http-metrics
        - containerPort: 8081
          name: telemetry
        readinessProbe:
          httpGet:
            path: /
            port: 8081
          initialDelaySeconds: 5
          timeoutSeconds: 5
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 65534
          seccompProfile:
            type: RuntimeDefault
      nodeSelector:
        kubernetes.io/os: linux
      serviceAccountName: kube-state-metrics
---
apiVersion: v1
automountServiceAccountToken: false
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: 1.9.0
  name: kube-state-metrics
  namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: 1.9.0
  name: kube-state-metrics
  namespace: kube-system
spec:
  type: NodePort
  ports:
  - name: http-metrics
    port: 9090
    protocol: TCP
    targetPort: http-metrics
    nodePort: 31031
  - name: telemetry
    port: 9091
    protocol: TCP
    targetPort: telemetry
    nodePort: 31032
  selector:
    app.kubernetes.io/name: kube-state-metrics
kubectl apply -f kube-state-metrics.yaml 
#查看pod运行状态
[root@k8s-master01 ~]# kubectl get pod -A |grep kube-state-metrics
kube-system   kube-state-metrics-cc7d6998c-kjj4b        1/1     Running   0              20h

[root@k8s-master01 ~]# kubectl get svc -A |grep kube-state-metrics
kube-system   kube-state-metrics   NodePort    10.100.7.78     <none>        9090:31031/TCP,9091:31032/TCP   20h
#修改prometheus.yml文件添加
 - job_name: "kube-state-metrics"
    static_configs:
            - targets: ['192.168.200.11:31031']

#重启prometheus
systemctl restart prometheus

6.2 模板导入

七、邮箱报警

7.1 Alertmanager邮箱配置

cp /usr/local/alertmanager-0.28.1/alertmanager.yml{,.bak}

vim 

编辑 /usr/local/alertmanager-0.28.1/alertmanager.yml

这个文档使用163邮箱报警

global:
  smtp_smarthost: 'smtp.163.com:465'
  smtp_from: 'jin1205577136@163.com'
  smtp_auth_username: 'jin1205577136@163.com'
  smtp_auth_password: 'PTbz4G4WEstghuh7'
  smtp_require_tls: false

templates:
  - '/usr/local/alertmanager-0.28.1/custom.tmpl'

route:
  receiver: '邮件接收人'
  group_wait: 0s
  group_interval: 30s
  repeat_interval: 300s

receivers:
- name: '邮件接收人'
  email_configs:
  - to: 'jin1205577136@163.com'                   #多个收件人用逗号分隔
    send_resolved: true
    html: '{{ template "custom_alert_template" . }}'
    headers:
      Subject: |
        {{- if eq .Status "firing" -}}
        [⚠️紧急告警] 🚨 触发中:{{ .CommonLabels.alertname }} - 实例: {{ .CommonLabels.instance }}
        {{- else -}}
        [✅已恢复] 🔔 告警解决:{{ .CommonLabels.alertname }} - 实例: {{ .CommonLabels.instance }}
        {{- end -}}

这个文档使用钉钉报警

global:
  # 移除 SMTP 相关配置(如果不再使用邮箱)

templates:
  - '/usr/local/alertmanager-0.28.1/custom.tmpl'  # 只需包含钉钉模板

route:
  receiver: 'dingtalk-notification'  # 默认接收器改为钉钉
  group_wait: 0s
  group_interval: 30s
  repeat_interval: 300s

receivers:
- name: 'dingtalk-notification'
  webhook_configs:
  - url: 'https://oapi.dingtalk.com/robot/send?access_token=xxx'  # 替换为你的钉钉 Webhook
    send_resolved: true
    http_config:
      tls_config:
        insecure_skip_verify: true
    headers:
      Content-Type: 'application/json'
    body: '{{ template "dingtalk_alert_template" . }}'  # 引用钉钉模板

7.2 邮箱模板配置

**注意:**以下为邮箱和钉钉两种方案,选择其中一个即可。

**方案一:**邮箱配置

#创建模板
 cd /usr/local/alertmanager-0.28.1/
 vim custom.tmpl
{{ define "custom_alert_template" }}
{{- if eq .Status "firing" -}}
<div style="max-width:750px; margin:0 auto; font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif; background-color:#f9fafb; border-radius:12px; overflow:hidden; box-shadow:0 10px 25px -5px rgba(0,0,0,0.1),0 8px 10px -6px rgba(0,0,0,0.1);">
  <div style="background:linear-gradient(135deg, #e53935 0%, #b71c1c 100%); color:white; padding:25px 30px; position:relative; overflow:hidden;">
    <div style="position:absolute; top:0; right:0; width:100px; height:100px; opacity:0.1;">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
        <path d="M50,10 C80,10 100,30 100,50 C100,80 80,100 50,100 C20,100 0,80 0,50 C0,30 20,10 50,10 Z" fill="white">path>
        <path d="M50,30 C66.57,30 80,43.43 80,60 C80,76.57 66.57,90 50,90 C33.43,90 20,76.57 20,60 C20,43.43 33.43,30 50,30 Z" fill="none" stroke="white" stroke-width="5">path>
        <circle cx="50" cy="60" r="10" fill="white">circle>
      svg>
    div>
    <div style="position:relative; z-index:1;">
      <div style="display:flex; align-items:center; margin-bottom:15px;">
        <div style="width:50px; height:50px; border-radius:50%; background-color:rgba(255,255,255,0.2); display:flex; align-items:center; justify-content:center; margin-right:15px; animation:pulse 2s infinite;">
          <span style="font-size:28px;">🚨span>
        div>
        <div>
          <h2 style="margin:0; font-weight:500; font-size:22px;">[触发中] {{ .CommonLabels.alertname }}h2>
          <p style="margin:0; font-size:14px; opacity:0.8;">紧急程度: {{ .CommonLabels.severity | title }}p>
        div>
      div>
    div>
  div>
{{- else -}}
<div style="max-width:750px; margin:0 auto; font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif; background-color:#f9fafb; border-radius:12px; overflow:hidden; box-shadow:0 10px 25px -5px rgba(0,0,0,0.1),0 8px 10px -6px rgba(0,0,0,0.1);">
  <div style="background:linear-gradient(135deg, #43a047 0%, #2e7d32 100%); color:white; padding:25px 30px; position:relative; overflow:hidden;">
    <div style="position:absolute; top:0; right:0; width:100px; height:100px; opacity:0.1;">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
        <path d="M50,10 C80,10 100,30 100,50 C100,80 80,100 50,100 C20,100 0,80 0,50 C0,30 20,10 50,10 Z" fill="white">path>
        <path d="M30,50 L50,70 L75,35" fill="none" stroke="white" stroke-width="8" stroke-linecap="round">path>
      svg>
    div>
    <div style="position:relative; z-index:1;">
      <div style="display:flex; align-items:center; margin-bottom:15px;">
        <div style="width:50px; height:50px; border-radius:50%; background-color:rgba(255,255,255,0.2); display:flex; align-items:center; justify-content:center; margin-right:15px;">
          <span style="font-size:28px;">span>
        div>
        <div>
          <h2 style="margin:0; font-weight:500; font-size:22px;">[已解决] {{ .CommonLabels.alertname }}h2>
          <p style="margin:0; font-size:14px; opacity:0.8;">状态已恢复正常p>
        div>
      div>
    div>
  div>
{{- end }}

  <div style="padding:30px; background-color:white;">
    {{- if .Alerts -}}
      {{- range .Alerts }}
        <div style="margin-bottom:25px; border-radius:10px; overflow:hidden; box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06); transition:transform 0.3s ease, box-shadow 0.3s ease;">
          <div style="padding:20px; background-color:
            {{- if eq $.Status "firing" -}}
              {{- if eq .Labels.severity "critical" }}#ffebee{{ else if eq .Labels.severity "warning" }}#fff3e0{{ else }}#e8f5e9{{ end -}}
            {{- else -}}
              #e8f5e9
            {{- end -}};
            border-left:4px solid;
            border-left-color:
            {{- if eq $.Status "firing" -}}
              {{- if eq .Labels.severity "critical" }}#e53935{{ else if eq .Labels.severity "warning" }}#fb8c00{{ else }}#43a047{{ end -}}
            {{- else -}}
              #43a047
            {{- end -}};">
            
            <div style="display:flex; justify-content:space-between; align-items:flex-start;">
              <div style="display:flex; align-items:center;">
                <div style="width:40px; height:40px; border-radius:50%; background-color:
                  {{- if eq $.Status "firing" -}}
                    {{- if eq .Labels.severity "critical" }}rgba(229,57,53,0.1){{ else if eq .Labels.severity "warning" }}rgba(251,140,0,0.1){{ else }}rgba(67,160,71,0.1){{ end -}}
                  {{- else -}}
                    rgba(67,160,71,0.1)
                  {{- end -}};
                  display:flex; align-items:center; justify-content:center; margin-right:15px;">
                  <span style="font-size:20px; color:
                    {{- if eq $.Status "firing" -}}
                      {{- if eq .Labels.severity "critical" }}#e53935{{ else if eq .Labels.severity "warning" }}#fb8c00{{ else }}#43a047{{ end -}}
                    {{- else -}}
                      #43a047
                    {{- end -}};">
                    {{- if eq $.Status "firing" -}}
                      {{- if eq .Labels.severity "critical" }}🔥{{ else if eq .Labels.severity "warning" }}⚠️{{ else }}🔍{{ end -}}
                    {{- else -}}
                      ✅
                    {{- end -}}
                  span>
                div>
                <h3 style="margin:0; color:#2d3748; font-weight:500; font-size:18px;">{{ .Labels.alertname }}h3>
              div>
              <div style="padding:4px 12px; border-radius:4px; background-color:
                {{- if eq $.Status "firing" -}}
                  {{- if eq .Labels.severity "critical" }}rgba(229,57,53,0.1){{ else if eq .Labels.severity "warning" }}rgba(251,140,0,0.1){{ else }}rgba(67,160,71,0.1){{ end -}}
                {{- else -}}
                  rgba(67,160,71,0.1)
                {{- end -}};
                color:
                {{- if eq $.Status "firing" -}}
                  {{- if eq .Labels.severity "critical" }}#e53935{{ else if eq .Labels.severity "warning" }}#fb8c00{{ else }}#43a047{{ end -}}
                {{- else -}}
                  #43a047
                {{- end -}};
                font-size:13px; font-weight:500;">
                {{- if eq $.Status "firing" -}}
                  {{ .Labels.severity | title }}
                {{- else -}}
                  已解决
                {{- end -}}
              div>
            div>
            
            <div style="margin-top:15px; padding-left:55px;">
              <div style="display:grid; grid-template-columns:1fr 1fr; gap:10px;">
                <div style="padding:10px; background-color:rgba(0,0,0,0.03); border-radius:6px;">
                  <p style="margin:0; font-size:13px; color:#718096;">实例p>
                  <p style="margin:0; font-size:16px; font-weight:500;">{{ .Labels.instance }}p>
                div>
                <div style="padding:10px; background-color:rgba(0,0,0,0.03); border-radius:6px;">
                  <p style="margin:0; font-size:13px; color:#718096;">触发时间p>
                  <p style="margin:0; font-size:16px; font-weight:500;">{{ .StartsAt.Format "2006-01-02 15:04:05" }}p>
                div>
              div>
              
              <div style="margin-top:15px; padding:15px; background-color:rgba(0,0,0,0.03); border-radius:6px;">
                <p style="margin:0 0 5px 0; font-size:13px; color:#718096;">描述p>
                <p style="margin:0; font-size:16px;">{{ .Annotations.summary }}p>
              div>
              
              {{- if .Annotations.description -}}
              <div style="margin-top:15px; padding:15px; background-color:rgba(0,0,0,0.03); border-radius:6px;">
                <p style="margin:0 0 5px 0; font-size:13px; color:#718096;">详细信息p>
                <p style="margin:0; font-size:16px;">{{ .Annotations.description }}p>
              div>
              {{- end -}}
              
              {{- if .Annotations.runbook_url -}}
              <div style="margin-top:15px;">
                <a href="{{ .Annotations.runbook_url }}" style="display:inline-flex; align-items:center; padding:8px 16px; background-color:#1976d2; color:white; border-radius:6px; text-decoration:none; font-weight:500; transition:background-color 0.3s ease;">
                  <span style="margin-right:8px;">📖span>
                  查看操作手册
                a>
              div>
              {{- end -}}
            div>
          div>
        div>
      {{- end -}}
    {{- else -}}
      <div style="text-align:center; padding:40px 0; color:#6b7280;">
        <div style="font-size:64px; color:#e5e7eb; margin-bottom:20px;">div>
        <h3 style="margin:0 0 10px 0; font-weight:400; color:#374151;">一切正常h3>
        <p style="margin:0; max-width:300px; margin:0 auto;">没有活跃的告警需要处理p>
      div>
    {{- end -}}
  div>
  
  <div style="padding:15px 30px; background-color:#f9fafb; border-top:1px solid #e5e7eb; text-align:center; font-size:13px; color:#9ca3af;">
    <p style="margin:0;">此告警由 Alertmanager 自动生成p>
    <p style="margin:5px 0 0 0;">查看所有告警: <a href="http://alertmanager-server:9093" style="color:#1976d2; text-decoration:none;">http://alertmanager-server:9093a>p>
  div>
div>

<style>
  @keyframes pulse {
    0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(239, 83, 80, 0.7); }
    70% { transform: scale(1.05); box-shadow: 0 0 0 10px rgba(239, 83, 80, 0); }
    100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(239, 83, 80, 0); }
  }
style>
{{ end }}
#启动alertmanager服务
systemctl start alertmanager.service 

**方案二:**钉钉配置

vim alertmanager.yml
global:
  # 移除 SMTP 相关配置(如果不再使用邮箱)

templates:
  - '/usr/local/alertmanager-0.28.1/custom.tmpl'  #钉钉模板

route:
  receiver: 'dingtalk-notification'  # 默认接收器改为钉钉
  group_wait: 0s
  group_interval: 30s
  repeat_interval: 300s

receivers:
- name: 'dingtalk-notification'
  webhook_configs:
  - url: 'https://oapi.dingtalk.com/robot/send?access_token'  #钉钉的Webhook
    send_resolved: true
    http_config:
      tls_config:
        insecure_skip_verify: true
    headers:
      Content-Type: 'application/json'
    body: '{{ template "dingtalk_alert_template" . }}'  # 引用钉钉模板
vim custom.tmpl
{{/* 钉钉模板(JSON Markdown 格式) */}}
{{ define "dingtalk_alert_template" }}
{
  "msgtype": "markdown",
  "markdown": {
    "title": "[{{ if eq .Status "firing" }}🔥告警触发{{ else }}✅告警恢复{{ end }}] {{ .CommonLabels.alertname }}",
    "text": "### {{ if eq .Status "firing" }}🔥告警触发(级别:{{ .CommonLabels.severity | toUpper }}){{ else }}✅告警恢复{{ end }}
" +
            "**告警名称**: {{ .CommonLabels.alertname }}
" +
            "**实例**: {{ .CommonLabels.instance }}
" +
            "**描述**: {{ .CommonAnnotations.description }}

" +
            "{{ range .Alerts }}
" +
            "- **详情**: {{ .Annotations.summary }}
" +
            "- **时间**: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
" +
            "{{ end }}"
  }
}
{{ end }}

两者可以同时使用,文档这里不做配置

7.3 触发报警规则配置

#创建规则文件
vim /usr/local/prometheus-2.29.1/alert-rules.yml
groups:
# 主机资源监控规则(基础架构稳定性)
- name: host-resource-rules
  rules:
    # 节点 CPU 使用率过高(系统负载)
    - alert: 主机CPU使用率过高
      expr: (100 - avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
      for: 20s
      labels:
        severity: 严重
      annotations:
        summary: "主机 {{ $labels.instance }} CPU 使用率过高 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "主机 CPU 使用率持续超过 80%,可能导致服务响应缓慢,需检查高负载进程。"

    # 节点内存使用率过高(防止 OOM)
    - alert: 主机内存使用率过高
      expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
      for: 20s
      labels:
        severity: 严重
      annotations:
        summary: "主机 {{ $labels.instance }} 内存使用率过高 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "主机内存使用率持续超过 85%,可能触发 OOM Killer,导致服务异常终止。"

    # 节点磁盘空间不足(避免系统崩溃)
    - alert: 磁盘空间不足
      expr: (1 - node_filesystem_free_bytes{fstype=~"ext4|xfs|btrfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs|btrfs"}) * 100 > 80
      for: 20s
      labels:
        severity: 警告
      annotations:
        summary: "主机 {{ $labels.instance }} 磁盘分区 {{ $labels.mountpoint }} 空间不足 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "磁盘空间使用率超过 80%,可能导致日志写入失败、应用无法启动,需清理或扩容。"

    # 节点磁盘 IO 延迟过高(影响读写性能)
    - alert: 磁盘IO延迟过高
      expr: avg by(instance, device)(irate(node_disk_io_time_seconds_total[5m])) > 100
      for: 20s
      labels:
        severity: 警告
      annotations:
        summary: "主机 {{ $labels.instance }} 磁盘 {{ $labels.device }} IO 延迟过高 (当前值: {{ $value | printf "%.2f" }}ms)"
        description: "磁盘 IO 延迟持续超过 100ms,可能由磁盘故障、碎片过多或负载过高导致。"

    # 节点网络带宽利用率过高(网络瓶颈)
    - alert: 网络带宽利用率过高
      expr: sum by(instance, device)(rate(node_network_receive_bytes_total[5m]) + rate(node_network_transmit_bytes_total[5m])) / node_network_speed_bytes * 100 > 80
      for: 20s
      labels:
        severity: 警告
      annotations:
        summary: "主机 {{ $labels.instance }} 网络接口 {{ $labels.device }} 带宽利用率过高 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "网络带宽利用率持续超过 80%,可能导致数据包丢失、服务响应超时。"

    # 节点负载过高(系统整体压力)
    - alert: 系统负载过高
      expr: node_load1 > on (instance) node_cpu_seconds_total{mode="idle"} * 0.8
      for: 20s
      labels:
        severity: 警告
      annotations:
        summary: "主机 {{ $labels.instance }} 系统负载过高 (当前值: {{ $value | printf "%.2f" }})"
        description: "系统 1 分钟负载超过 CPU 核心数的 80%,可能由进程泄漏或资源竞争导致。"

    # 节点不可达(基础设施可用性)
    - alert: 节点不可达
      expr: up{job="node-exporter"} == 0
      for: 20s
      labels:
        severity: 严重
      annotations:
        summary: "主机 {{ $labels.instance }} 不可达"
        description: "Node Exporter 无法访问,可能由主机崩溃、网络中断或服务异常导致。"

# Kubernetes 资源监控规则(容器平台稳定性)
- name: kubernetes-resource-rules
  rules:
    # Pod CPU 使用率过高(容器资源)
    - alert: PodCPU使用率过高
      expr: sum by(namespace, pod)(rate(container_cpu_usage_seconds_total{container!="POD", container!=""}[5m])) / sum by(namespace, pod)(container_spec_cpu_quota{container!="POD", container!=""}) * 100 > 80
      for: 5m
      labels:
        severity: 警告
      annotations:
        summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} CPU 使用率过高 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "Pod CPU 使用率持续超过 80%,可能导致容器被限流(throttled),影响服务性能。"

    # Pod 内存使用率过高(容器资源)
    - alert: Pod内存使用率过高
      expr: sum by(namespace, pod)(container_memory_usage_bytes{container!="POD", container!=""}) / sum by(namespace, pod)(container_spec_memory_limit_bytes{container!="POD", container!=""}) * 100 > 90
      for: 5m
      labels:
        severity: 警告
      annotations:
        summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} 内存使用率过高 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "Pod 内存使用率持续超过 90%,可能触发 OOM Kill,导致容器重启。"

    # Deployment 副本不足(服务可用性)
    - alert: Deployment副本不足
      expr: kube_deployment_spec_replicas != kube_deployment_status_available_replicas
      for: 10m
      labels:
        severity: 严重
      annotations:
        summary: "Deployment {{ $labels.namespace }}/{{ $labels.deployment }} 副本不足"
        description: "期望 {{ $value | printf "%.0f" }} 个副本,但只有 {{ $labels.available_replicas }} 个可用,可能影响服务可用性。"

    # PVC 容量不足(存储资源)
    - alert: PVCCapacity不足
      expr: (1 - kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes) * 100 > 80
      for: 24h
      labels:
        severity: 警告
      annotations:
        summary: "PVC {{ $labels.namespace }}/{{ $labels.persistentvolumeclaim }} 容量不足 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "PVC 容量使用率超过 80%,建议在 24 小时内扩容,避免影响数据写入。"

# 应用程序监控规则(直接关联业务)
- name: application-rules
  rules:
    # HTTP 请求错误率过高(业务可用性)
    - alert: HTTP请求错误率过高
      expr: sum by(job)(rate(http_requests_total{status=~"5.."}[5m])) / sum by(job)(rate(http_requests_total[5m])) * 100 > 5
      for: 10m
      labels:
        severity: 警告
      annotations:
        summary: "服务 {{ $labels.job }} HTTP 请求错误率过高 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "HTTP 5xx 错误率持续超过 5%,可能由服务崩溃、依赖故障或资源不足导致。"

    # 数据库连接池耗尽(数据访问)
    - alert: 数据库连接池耗尽
      expr: database_connections_active / database_connections_max * 100 > 90
      for: 5m
      labels:
        severity: 严重
      annotations:
        summary: "数据库 {{ $labels.instance }} 连接池耗尽 (当前值: {{ $value | printf "%.2f" }}%)"
        description: "数据库连接池使用率超过 90%,新请求可能无法获取连接,导致服务无响应。"

    # 消息队列堆积(异步处理)
    - alert: 消息队列堆积
      expr: sum by(queue)(rabbitmq_queue_messages_ready) > 10000
      for: 10m
      labels:
        severity: 警告
      annotations:
        summary: "消息队列 {{ $labels.queue }} 堆积严重 (当前值: {{ $value | printf "%.0f" }} 条)"
        description: "消息队列中待处理消息超过 10000 条,消费者可能存在瓶颈,需检查消费逻辑或扩容。"

7.4 Prometheus连接配置

vim /usr/local/prometheus-2.29.1/prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["192.168.200.14:9093"]  #Alertmanager服务地址(默认端口9093)

rule_files:
  - "/usr/local/prometheus-2.29.1/alert-rules.yml"  #报警规则文件路径
#重启启动prometheus服务
systemctl restart prometheus.service 

7.5 CPU触发报警测试

测试192.168.200.14主机cpu达到阈值触发报警

#在200.104编写测试脚本
vim cpu-test.sh
#!/usr/bin/env bash
# 文件名:cpu_stress.sh
# 用法:chmod +x cpu_stress.sh && ./cpu_stress.sh [持续时长秒]
# 默认持续 60 秒,如果传入参数则按参数秒数运行。

# 运行时长(秒)
DURATION=${1:-60}

# 计算结束时间
END_TIME=$((SECONDS + DURATION))

# 启动与 CPU 核数相同的子进程,每个子进程都在忙循环
CPU_CORES=$(nproc)
echo ">> 启动 $CPU_CORES 个 busy-loop,压满所有 CPU 核心,共运行 $DURATION 秒"

for ((i=1; i<=CPU_CORES; i++)); do
  (
    # 子进程忙循环直到超时
    while [ $SECONDS -lt $END_TIME ]; do
      :  # 空操作,占用 CPU
    done
  ) &
done

# 等待所有子进程结束
wait
echo ">> CPU 压力测试结束。"
#执行脚本(执行脚本前使用   journalctl -u alertmanager.service -f    查看日志)
journalctl -u alertmanager.service -f 

bash cpu-test.sh
#日志
514 03:01:39 prometheus alertmanager[7188]: time=2025-05-14T07:01:39.747Z level=DEBUG source=dispatch.go:165 msg="Received alert" component=dispatcher alert=主机CPU使用率过高[c57a700][resolved]
514 03:01:54 prometheus alertmanager[7188]: time=2025-05-14T07:01:54.746Z level=DEBUG source=dispatch.go:165 msg="Received alert" component=dispatcher alert=主机CPU使用率过高[8ccbb6e][resolved]
514 03:01:54 prometheus alertmanager[7188]: time=2025-05-14T07:01:54.752Z level=DEBUG source=dispatch.go:530 msg=flushing component=dispatcher aggrGroup={}:{} alerts="[主机CPU使用率过高[c57a700][resolved] 主机CPU使用率过高[8ccbb6e][resolved]]"
514 03:01:56 prometheus alertmanager[7188]: time=2025-05-14T07:01:56.043Z level=DEBUG source=notify.go:876 msg="Notify success" component=dispatcher receiver=邮件接收人 integration=email[0] aggrGroup={}:{} attempts=1 duration=1.291165694s alerts="[主机CPU使用率过高[c57a700][resolved] 主机CPU使用率过高[8ccbb6e][resolved]]"

7.6 查看邮箱邮件

本文地址:https://www.yitenyun.com/3883.html

搜索文章

Tags

#服务器 #python #pip #conda #远程工作 #ios面试 #ios弱网 #断点续传 #ios开发 #objective-c #ios #ios缓存 香港站群服务器 多IP服务器 香港站群 站群服务器 #kubernetes #笔记 #平面 #容器 #linux #学习方法 #运维 #进程控制 #学习 #docker #后端 #数据库 #开发语言 #云原生 #iventoy #VmWare #OpenEuler #人工智能 #node.js #fastapi #html #css #Conda # 私有索引 # 包管理 #Trae #IDE #AI 原生集成开发环境 #Trae AI #cpolar #MobaXterm #ubuntu #物联网 #websocket #内网穿透 #网络 #低代码 #爬虫 #音视频 #github #git #算法 #大数据 #数信院生信服务器 #Rstudio #生信入门 #生信云服务器 #vscode #mobaxterm #深度学习 #计算机视觉 #开源 #RTP over RTSP #RTP over TCP #RTSP服务器 #RTP #TCP发送RTP #android #腾讯云 #c# #web安全 #安全 #unity #游戏引擎 #nginx #tcp/ip #缓存 #golang #java #redis #vllm #大模型 #Streamlit #Qwen #本地部署 #AI聊天机器人 #c++ #json #jmeter #功能测试 #软件测试 #自动化测试 #职场和发展 #prometheus #gpu算力 #grafana #kylin #需求分析 #ping通服务器 #读不了内网数据库 #bug菌问答团队 #ssh #jvm #我的世界 #hadoop #hbase #hive #zookeeper #spark #kafka #flink #凤希AI伴侣 #oracle #云计算 #http #udp #windows #银河麒麟高级服务器操作系统安装 #银河麒麟高级服务器V11配置 #设置基础软件仓库时出错 #银河麒高级服务器系统的实操教程 #生产级部署银河麒麟服务系统教程 #Linux系统的快速上手教程 #AI #大模型学习 #javascript #todesk #qt #jar #flutter #数码相机 #Dell #PowerEdge620 #内存 #硬盘 #RAID5 #架构 #改行学it #创业创新 #程序员创富 #centos #asp.net #面试 #claude #分阶段策略 #模型协议 #银河麒麟 #系统升级 #信创 #国产化 #多个客户端访问 #IO多路复用 #回显服务器 #TCP相关API #编辑器 #ide #金融 #mcp #金融投资Agent #Agent #科技 #个人博客 #n8n #华为云 #部署上线 #动静分离 #Nginx #新人首发 #C++ #mamba #计算机 #树莓派4b安装系统 #我的世界服务器搭建 #minecraft #Spring AI #MCP服务器 #STDIO协议 #Streamable-HTTP #McpTool注解 #服务器能力 #1024程序员节 #Android #Bluedroid #智能手机 #mysql #Ansible #Playbook #AI服务器 #journalctl #AI论文写作工具 #学术写作辅助 #论文创作效率提升 #AI写论文实测 #MCP #压力测试 #ssl #AIGC #vue.js #spring boot #openlayers #bmap #tile #server #vue #电脑 #自动化 #c语言 #网络协议 #vuejs #高级IO #select #计算机网络 #语音识别 #说话人验证 #声纹识别 #CAM++ #jupyter #ansible #asp.net大文件上传 #asp.net大文件上传下载 #asp.net大文件上传源码 #ASP.NET断点续传 #asp.net上传文件夹 #gitea #macos #FTP服务器 #scala #测试用例 #测试工具 #网站 #截图工具 #批量处理图片 #图片格式转换 #图片裁剪 #前端 #课程设计 #SSH #X11转发 #Miniconda #mcu #性能优化 #sqlserver #debian #聊天小程序 #stm32 #apache #tdengine #时序数据库 #制造 #涛思数据 #spring #cpp #项目 #高并发 #flask #arm开发 #企业开发 #ERP #项目实践 #.NET开发 #C#编程 #编程与数学 #fiddler #NPU #CANN #gemini #gemini国内访问 #gemini api #gemini中转搭建 #Cloudflare #cosmic #阿里云 #screen 命令 #华为 #ModelEngine #JumpServer #堡垒机 #AI编程 #mvp #个人开发 #设计模式 #振镜 #振镜焊接 #teamviewer #YOLO # Triton # 目标检测 #DisM++ # GLM-4.6V # 系统维护 #tomcat #elasticsearch #版本控制 #Git入门 #开发工具 #代码托管 #web server #请求处理流程 #SRS #流媒体 #直播 #数据结构 #jenkins #react.js #分布式 #研发管理 #禅道 #禅道云端部署 #网络安全 #系统架构 #守护进程 #复用 #screen #RAID #RAID技术 #磁盘 #存储 #嵌入式编译 #ccache #distcc # 双因素认证 # TensorFlow #毕设 #unity3d #游戏 #服务器框架 #Fantasy #pytorch #umeditor粘贴word #ueditor粘贴word #ueditor复制word #ueditor上传word图片 #智能路由器 #ollama #ai #llm #php #django #java-ee #大语言模型 #程序员 #毕业设计 #车辆排放 #pycharm #ms-swift # 大模型 # 模型训练 #经验分享 #langchain #排序算法 #jdk #排序 #PyTorch # 高并发部署 #ddos #vps #数据仓库 #软件 #本地生活 #电商系统 #商城 #小程序 #sqlite #epoll #wordpress #雨云 #电气工程 #C# #PLC #https #LoRA # lora-scripts # 模型微调 #openresty #lua #自然语言处理 #神经网络 #负载均衡 #sql #maven #intellij-idea #rdp #集成测试 #微服务 #Go并发 #高并发架构 #Goroutine #系统设计 #Dify #ARM架构 #鲲鹏 #统信UOS #服务器操作系统 #win10 #虚拟化 #qemu #libosinfo #SSH反向隧道 # Miniconda # Jupyter远程访问 #EMC存储 #存储维护 #NetApp存储 #单片机 #嵌入式硬件 #TCP #客户端 #嵌入式 #DIY机器人工房 #gitlab #eBPF #硬件架构 #win11 #NAS #Termux #Samba #Linux #uni-app #notepad++ #PTP_1588 #gPTP #rust #p2p #Windows #webrtc #idm #harmonyos #鸿蒙PC #进程等待 #wait #waitpid #万悟 #联通元景 #智能体 #镜像 #chatgpt #pdf #DeepSeek #大模型教程 #AI大模型 #微信小程序 #微信 #健身房预约系统 #健身房管理系统 #健身管理系统 #Android16 #音频性能实战 #音频进阶 #SSE # AI翻译机 # 实时翻译 #VMware #VMWare Tool #deepseek #postgresql #鸭科夫 #逃离鸭科夫 #鸭科夫联机 #鸭科夫异地联机 #开服 #北京百思可瑞教育 #百思可瑞教育 #北京百思教育 #无人机 #Deepoc #具身模型 #开发板 #未来 #risc-v #Proxmox VE #视频去字幕 #交互 #SSH公钥认证 # PyTorch # 安全加固 #idea #intellij idea #dify #信号处理 #部署 #GPU服务器 #8U #5G #esp32教程 #搜索引擎 #leetcode #H5 #跨域 #发布上线后跨域报错 #请求接口跨域问题解决 #跨域请求代理配置 #request浏览器跨域 #运维开发 #C2000 #TI #实时控制MCU #AI服务器电源 #UDP的API使用 #处理器 #iBMC #UltraISO #黑群晖 #虚拟机 #无U盘 #纯小白 #支付 #东方仙盟 #算力一体机 #ai算力服务器 #银河麒麟操作系统 #openssh #华为交换机 #信创终端 #API限流 # 频率限制 # 令牌桶算法 #bash #智能体来了 #智能体对传统行业冲击 #行业转型 #AI赋能 #蓝湖 #Axure原型发布 #RAG #LLM #chat #单元测试 #YOLO26 #目标检测 #京东云 #蓝耘智算 #milvus #springboot #知识库 #910B #昇腾 #ida #postman #Anaconda配置云虚拟环境 #交通物流 #1panel #vmware #媒体 #政务 #深度优先 #DFS #Nacos #web #chrome #rustdesk #KMS #slmgr #源码 #闲置物品交易系统 #YOLOFuse # Base64编码 # 多模态检测 #进程 #操作系统 #进程创建与终止 #shell #xlwings #Excel #spring cloud #nfs #iscsi #SPA #单页应用 #web3.py #翻译 #transformer #prompt #RustDesk #IndexTTS 2.0 #本地化部署 #YOLOv8 # Docker镜像 #麒麟OS #文件管理 #文件服务器 #jetty #swagger #前端框架 #Java #SA-PEKS # 关键词猜测攻击 # 盲签名 # 限速机制 #小艺 #鸿蒙 #搜索 #mariadb #代理模式 #Spring AOP #LangGraph #CLI #Python #JavaScript #langgraph.json #学术论文创作 #论文效率提升 #MBA论文写作 #paddleocr #企业级存储 #网络设备 #Smokeping #pve #产品经理 #就业 #机器学习 #推荐算法 #tensorflow #arm #zotero #WebDAV #同步失败 #工具集 #国产操作系统 #麒麟 #V11 #kylinos #大模型应用 #API调用 #PyInstaller打包运行 #服务端部署 #raid #raid阵列 #KMS激活 #论文阅读 #软件工程 #Langchain-Chatchat # 国产化服务器 # 信创 #openEuler #欧拉 #numpy #CSDN #aiohttp #asyncio #异步 #LobeChat #vLLM #GPU加速 #selenium #.netcore #webpack #儿童AI #图像生成 #星图GPU #海外服务器安装宝塔面板 #开源工具 #Tracker 服务器 #响应最快 #torrent 下载 #2026年 #Aria2 可用 #迅雷可用 #BT工具通用 #.net #net core #kestrel #web-server #asp.net-core #大模型开发 #FASTMCP #ZooKeeper #ZooKeeper面试题 #面试宝典 #深入解析 #大模型部署 #mindie #大模型推理 #业界资讯 #数据分析 #Puppet # IndexTTS2 # TTS #联机教程 #局域网联机 #局域网联机教程 #局域网游戏 #集成学习 #简单数论 #埃氏筛法 #CosyVoice3 # 语音合成 #windows11 #microsoft #系统修复 #codex #云服务器 #个人电脑 #C语言 #Harbor #cursor #x86_64 #数字人系统 #MC #MC群组服务器 #yum #机器人 #CS2 #debian13 #三维 #3D #三维重建 #安卓 #信令服务器 #Janus #MediaSoup #其他 #rtsp #转发 #unix #实时音视频 #fpga开发 #信创国产化 #达梦数据库 #CVE-2025-61686 #漏洞 #路径遍历高危漏洞 #echarts #GPU #AutoDL ##租显卡 #树莓派 #温湿度监控 #WhatsApp通知 #IoT #MySQL #结构体 #web服务器 #渗透测试 #黑客技术 #文件上传漏洞 #Kylin-Server #服务器安装 #LangFlow # 智能运维 # 性能瓶颈分析 # GPU租赁 # 自建服务器 #devops #SMTP # 内容安全 # Qwen3Guard #遛狗 #bug #密码学 #ui #分类 #平板 #零售 #硬件工程 #智能硬件 #H5网页 #网页白屏 #H5页面空白 #资源加载问题 #打包部署后网页打不开 #HBuilderX #CTF #模型训练 #插件 #开源软件 #agent #ai大模型 #FHSS #信息与通信 #心理健康服务平台 #心理健康系统 #心理服务平台 #心理健康小程序 # 一锤定音 # 大模型微调 #adb #nodejs #散列表 #哈希算法 #硬件 #ffmpeg #数据挖掘 #CUDA #Triton #SSH密钥 # CUDA # ControlMaster #练习 #基础练习 #数组 #循环 #九九乘法表 #计算机实现 #dynadot #域名 #ETL管道 #向量存储 #数据预处理 #DocumentReader #PowerBI #企业 #smtp #smtp服务器 #PHP #银河麒麟部署 #银河麒麟部署文档 #银河麒麟linux #银河麒麟linux部署教程 #aws #serverless #Qwen3-14B # 大模型部署 # 私有化AI #vnstat #监控 #opencv #攻防演练 #Java web #红队 #Llama-Factory # 树莓派 # ARM架构 #AI 推理 #NV #文心一言 #AI智能体 #大剑师 #nodejs面试题 #vp9 #ServBay #ESP32 # OTA升级 # 黄山派 #飞牛nas #fnos #laravel #ranger #MySQL8.0 #cesium #可视化 #远程桌面 #远程控制 #SSH跳板机 # Python3.11 #WT-2026-0001 #QVD-2026-4572 #smartermail #LVDS #高速ADC #DDR #游戏机 #Modbus-TCP #screen命令 #Gunicorn #WSGI #Flask #并发模型 #容器化 #性能调优 #系统管理 #服务 #管道Pipe #system V #ai编程 #语言模型 #飞牛NAS #NVR #EasyNVR #llama #门禁 #梯控 #智能一卡通 #门禁一卡通 #消费一卡通 #智能梯控 #一卡通 #elk #Socket网络编程 #超时设置 #客户端/服务器 #网络编程 #sql注入 #reactjs #web3 #muduo #TcpServer #accept #高并发服务器 #远程开发 #SAP #ebs #metaerp #oracle ebs #muduo库 #链表 #链表的销毁 #链表的排序 #链表倒置 #判断链表是否有环 #uv #uvx #uv pip #npx #Ruff #pytest #HeyGem # 服务器配置 # GPU #AI技术 #AI-native #Tokio #中间件 #远程连接 #MQTT协议 #vivado license #CVE-2025-68143 #CVE-2025-68144 #CVE-2025-68145 #html5 #WinSCP 下载安装教程 #SFTP #FTP工具 #服务器文件传输 #excel #copilot # 批量管理 #ASR #SenseVoice # TTS服务器 # 键鼠锁定 #openHiTLS #TLCP #DTLCP #商用密码算法 #ArkUI #ArkTS #鸿蒙开发 #node #zabbix #手机h5网页浏览器 #安卓app #苹果ios APP #手机电脑开启摄像头并排查 #rocketmq #svn #scrapy #fabric #可信计算技术 #蓝牙 #LE Audio #BAP #powerbi #Clawdbot #个人助理 #数字员工 #CPU #测评 #CCE #Dify-LLM #Flexus #参数估计 #矩估计 #概率论 #服务器繁忙 #VMware Workstation16 #Node.js # CosyVoice3 # child_process #puppeteer #ShaderGraph #图形 #mybatis #scikit-learn #随机森林 #安全威胁分析 #spine #仙盟创梦IDE #GLM-4.6V-Flash-WEB # AI视觉 # 本地部署 #IPv6 #DNS #智能家居 #POC #问答 #交付 #动态规划 #pyqt #STDIO传输 #SSE传输 #WebMVC #WebFlux #bootstrap #3d #C #kmeans #聚类 #文件IO #输入输出流 #tcpdump #embedding #kong #Kong Audio #Kong Audio3 #KongAudio3 #空音3 #空音 #中国民乐 #visual studio code #scanf #printf #getchar #putchar #cin #cout #Reactor #ET模式 #非阻塞 #bond #服务器链路聚合 #网卡绑定 #程序人生 #健康医疗 #AI应用 #CMake #Make #C/C++ #多进程 #python技巧 #蓝桥杯 #高考 #iot #生信 #word #工程实践 #策略模式 #租显卡 #训练推理 #wsl #gpt #API #AI写作 #taro #java大文件上传 #java大文件秒传 #java大文件上传下载 #java文件传输解决方案 #wps #Linux多线程 #ambari #bigtop #hdp #hue #kerberos #pencil #pencil.dev #设计 #Java程序员 #Java面试 #后端开发 #Spring源码 #Spring #SpringBoot #轻量化 #低配服务器 #Beidou #北斗 #SSR #Anything-LLM #IDC服务器 #私有化部署 #信息可视化 #信息安全 #信息收集 #poll #通信 #系统安全 #simulink #matlab #docker安装seata #传统行业 #能源 #生产服务器问题查询 #日志过滤 #Autodl私有云 #深度服务器配置 # 水冷服务器 # 风冷服务器 # IndexTTS 2.0 # 自动化运维 #VoxCPM-1.5-TTS # 云端GPU # PyCharm宕机 #pjsip #人脸识别sdk #视频编解码 #人脸识别 #VMware创建虚拟机 #远程更新 #缓存更新 #多指令适配 #物料关联计划 #AI生成 # outputs目录 # 自动化 #挖漏洞 #攻击溯源 #编程 #stl #漏洞修复 #IIS Crypto #blender #warp #数字化转型 #实体经济 #商业模式 #软件开发 #数智红包 #商业变革 #创业干货 #everything #材料工程 #智能电视 #rabbitmq #m3u8 #HLS #移动端H5网页 #APP安卓苹果ios #监控画面 直播视频流 #Prometheus #决策树 #Zabbix #语音合成 #ARM服务器 # 多模态推理 #DooTask #sglang #ComfyUI # 推理服务器 #防毒面罩 #防尘面罩 #n8n解惑 #编程助手 # GLM-4.6V-Flash-WEB # 显卡驱动备份 #Socket #模拟退火算法 #计算机毕业设计 #程序定制 #毕设代做 #课设 #Hadoop #视觉检测 #visual studio #SSH Agent Forwarding # 容器化 #高斯溅射 #RK3576 #瑞芯微 #硬件设计 #UEFI #BIOS #Legacy BIOS #产品运营 # 服务器迁移 # 回滚方案 #大模型入门 #homelab #Lattepanda #Jellyfin #Plex #Emby #Kodi #yolov12 #研究生life #开关电源 #热敏电阻 #PTC热敏电阻 #文件传输 #电脑文件传输 #电脑传输文件 #电脑怎么传输文件到另一台电脑 #电脑传输文件到另一台电脑 #云开发 #eureka #性能 #优化 #RAM #KMS 激活 #mongodb #AI智能棋盘 #Rock Pi S #边缘计算 #wireshark #广播 #组播 #并发服务器 #nacos #银河麒麟aarch64 #SSH别名 #c #BoringSSL #企业存储 #RustFS #对象存储 #高可用 #es安装 #Docker #云计算运维 #asp.net上传大文件 #gpu #nvcc #cuda #nvidia #ceph #漏洞挖掘 #驱动开发 #TensorRT # 推理优化 #Coturn #TURN #STUN #ci/cd #k8s #log4j #Jetty # 嵌入式服务器 #模块 #RXT4090显卡 #RTX4090 #深度学习服务器 #硬件选型 #群晖 #音乐 # ARM服务器 # 鲲鹏 #IntelliJ IDEA #Spring Boot #gateway #SQL注入主机 #neo4j #NoSQL #SQL #http头信息 #uip #全文检索 #银河麒麟服务器系统 # 代理转发 # 跳板机 #Host #SSRF #TCP服务器 #开发实战 #汽车 #ThingsBoard MCP #可撤销IBE #服务器辅助 #私钥更新 #安全性证明 #双线性Diffie-Hellman # 公钥认证 #短剧 #短剧小程序 #短剧系统 #微剧 #空间计算 #原型模式 #hibernate #nosql #VibeVoice # 云服务器 #戴尔服务器 #戴尔730 #装系统 #Comate #I/O模型 #并发 #水平触发、边缘触发 #多路复用 #MinIO服务器启动与配置详解 #clickhouse #代理 #数据访问 #vncdotool #链接VNC服务器 #如何隐藏光标 # 服务器IP访问 # 端口映射 #A2A #GenAI #磁盘配额 #存储管理 #形考作业 #国家开放大学 #系统运维 #ONLYOFFICE #自动化运维 #IO #DHCP #网络安全大赛 #C++ UA Server #SDK #跨平台开发 #r-tree #eclipse #servlet #arm64 #CNAS #CMA #程序文件 #SSH复用 # 远程开发 #wpf #实时检测 #卷积神经网络 #串口服务器 #Modbus #MOXA #googlecloud #lucene #DAG # keep-alive #云服务器选购 #Saas #线程 #机器视觉 #6D位姿 #outlook #错误代码2603 #无网络连接 #2603 #算力建设 #数据安全 #注入漏洞 #esb接口 #走处理类报异常 #密码 #firefox #safari # RTX 3090 #b树 #具身智能 #dba #声源定位 #MUSIC #windbg分析蓝屏教程 #AI电商客服 #memory mcp #Cursor #数据可视化 #网路编程 #百万并发 #昇腾300I DUO #docker-compose #目标跟踪 #rtmp #IFix # 高温监控 #c++20 # 远程连接 #fs7TF # 远程访问 # 服务器IP #ROS # 局域网访问 # 批量处理 #内存治理 #安全架构 #gerrit #opc ua #opc #npu #memcache # 环境迁移 #matplotlib #TTS私有化 # IndexTTS # 音色克隆 #青少年编程 #内网 #ansys #ansys问题解决办法 # WebUI # 网络延迟 #指针 #远程软件 # GLM-TTS # 数据安全 #代理服务器 #ip #设计师 #图像处理 #游戏美术 #技术美术 # 大模型推理 #CPU利用率 #分布式数据库 #集中式数据库 #业务需求 #选型误 # Connection refused #视频 #odoo #微PE # GLM # 服务连通性 #HarmonyOS #azure #Apple AI #Apple 人工智能 #FoundationModel #Summarize #SwiftUI #多线程 #claudeCode #content7 #源代码管理 #跳槽 #工作 #挖矿 #Linux病毒 #turn #网安应急响应 # 高并发 # 串口服务器 # NPort5630 #appche #数据恢复 #视频恢复 #视频修复 #RAID5恢复 #流媒体服务器恢复 #Aluminium #Google #华为od #华为机试 #react native #OpenHarmony #Python办公自动化 #Python办公 #SSH跳转 #TTS #go # GPU集群 #Ubuntu服务器 #硬盘扩容 #命令行操作 #Gateway #认证服务器集成详解 #服务器开启 TLS v1.2 #IISCrypto 使用教程 #TLS 协议配置 #IIS 安全设置 #服务器运维工具 #ftp #sftp #uniapp #合法域名校验出错 #服务器域名配置不生效 #request域名配置 #已经配置好了但还是报错 #uniapp微信小程序 #框架搭建 #YOLO识别 #YOLO环境搭建Windows #YOLO环境搭建Ubuntu #状态模式 # 轻量化镜像 # 边缘计算 #国产化OS #opc模拟服务器 #cpu #套接字 #I/O多路复用 #字节序 #工程设计 #预混 #扩散 #燃烧知识 #层流 #湍流 #weston #x11 #x11显示服务器 #量子计算 #计算几何 #斜率 #方向归一化 #叉积 # 批量部署 #samba #RSO #机器人操作系统 #硬盘克隆 #DiskGenius #glibc #winscp #AI部署 # ms-swift #PN 结 #MCP 服务器 #后端框架 #服务器线程 # SSL通信 # 动态结构体 #RWK35xx #语音流 #实时传输 #超算中心 #PBS #lsf #报表制作 #职场 #用数据讲故事 #语音生成 #证书 #JNI #pxe #lvs # 数字人系统 # 远程部署 #adobe # TURN # NAT穿透 #MCP服务器注解 #异步支持 #方法筛选 #声明式编程 #自动筛选机制 #宝塔面板部署RustDesk #RustDesk远程控制手机 #手机远程控制 #系统安装 #铁路桥梁 #DIC技术 #箱梁试验 #裂纹监测 #四点弯曲 #可再生能源 #绿色算力 #风电 #连接数据库报错 #麦克风权限 #访问麦克风并录制音频 #麦克风录制音频后在线播放 #用户拒绝访问麦克风权限怎么办 #uniapp 安卓 苹果ios #将音频保存本地或上传服务器 #express #cherry studio #gmssh #宝塔 #Exchange #free #vmstat #sar #sentinel #AI应用编程 #dlms #dlms协议 #逻辑设备 #逻辑设置间权限 #r语言 #若依 #TRO #TRO侵权 #TRO和解 #运维工具 #MS #Materials #网络攻击模型 #Discord机器人 #云部署 #程序那些事 #自由表达演说平台 #演说 #移动端h5网页 #调用浏览器摄像头并拍照 #开启摄像头权限 #拍照后查看与上传服务器端 #摄像头黑屏打不开问题 #AI Agent #开发者工具 #企业微信 #服务器IO模型 #非阻塞轮询模型 #多任务并发模型 #异步信号模型 #多路复用模型 #Minecraft #Minecraft服务器 #PaperMC #我的世界服务器 #ipmitool #BMC # 黑屏模式 #前端开发 #领域驱动 #Karalon #AI Test #ue5 #流程图 #论文笔记 #图论 #国产开源制品管理工具 #Hadess #一文上手 #工业级串口服务器 #串口转以太网 #串口设备联网通讯模块 #串口服务器选型 #okhttp #IndexTTS2 # 阿里云安骑士 # 木马查杀 #扩展屏应用开发 #android runtime #计算机外设 #入侵 #日志排查 #remote-ssh #人大金仓 #Kingbase #VS Code调试配置 #图像识别 #OpenAI #故障 #多模态 #微调 #超参 #LLamafactory #智能制造 #供应链管理 #工业工程 #库存管理 #WinDbg #Windows调试 #内存转储分析 #PyCharm # 远程调试 # YOLOFuse #agi #log #Syslog #系统日志 #日志分析 #日志监控 #全链路优化 #实战教程 #浏览器自动化 #python #database #claude code #code cli #ccusage #Xshell #Finalshell #生物信息学 #组学 #SSH免密登录 #SSH保活 # AI部署 #Ascend #MindIE #AB包 #上下文工程 #langgraph #意图识别 #esp32 arduino #HistoryServer #Spark #YARN #jobhistory #二值化 #Canny边缘检测 #轮廓检测 #透视变换 #交换机 #三层交换机 #WRF #WRFDA #内存接口 # 澜起科技 # 服务器主板 #身体实验室 #健康认知重构 #系统思维 #微行动 #NEAT效应 #亚健康自救 #ICT人 #gRPC #注册中心 #uvicorn #uvloop #asgi #event #c++高并发 # 权限修复 #ICE #OPCUA #CA证书 # 端口7860 # HiChatBox # 离线AI #建筑缺陷 #红外 #数据集 #SMARC #ARM #nas #junit # REST API #GATT服务器 #蓝牙低功耗 #服务器解析漏洞 #UOS #海光K100 #统信 #面向对象 #基础语法 #标识符 #常量与变量 #数据类型 #运算符与表达式 #NFC #智能公交 #服务器计费 #FP-增长 #mssql #Fun-ASR # 语音识别 #HarmonyOS APP #主板 #总体设计 #电源树 #框图 #le audio #低功耗音频 #连接 #spring ai #oauth2 #iphone #nmodbus4类库使用教程 #模版 #函数 #类 #笔试 #Buck #NVIDIA #算力 #交错并联 #DGX #WEB #diskinfo # 磁盘健康 #anaconda #虚拟环境 #GB28181 #SIP信令 #视频监控 #流量监控 #xshell #host key #rsync # 数据同步 #coffeescript #雨云服务器 #教程 #MCSM面板 #Ubuntu # 自动化部署 # VibeThinker #mtgsig #美团医药 #美团医药mtgsig #美团医药mtgsig1.2 #反向代理 #数据迁移 #模型上下文协议 #MultiServerMCPC #load_mcp_tools #load_mcp_prompt #MinIO #文生视频 #WAN2.2 #AI视频生成 #静脉曲张 #腿部健康 #运动 #游戏策划 #游戏程序 #用户体验 #EN4FE #边缘AI # Kontron # SMARC-sAMX8 #范式 #TLS协议 #HTTPS #运维安全 #运维 #测速 #iperf #iperf3