云平臺監控-云原生環境Prometheus企業級監控實戰

目錄

一、基于 Kubernetes 的 Prometheus 監控方案概述

1. 核心組件及功能

2. 監控流程詳解

3. 關鍵監控指標說明

二、Prometheus 與相關組件部署

1. 克隆項目代碼

2. 安裝 Prometheus Operator

3. 安裝 Prometheus Stack

4. 查看容器運行狀態

三、ServiceMonitor 配置與應用

1. ServiceMonitor 作用與查看

2. ServiceMonitor 工作原理

四、Grafana 配置與訪問

1. 修改 Grafana Service 類型

2. 訪問 Grafana 并配置數據源

3. 導入監控模板

五、Prometheus 訪問配置

1. 修改 Prometheus Service 類型

2. 訪問 Prometheus 并查看監控目標

六、監控 MySQL 數據庫

1. 部署 MySQL

2. 部署 MySQL Exporter

3. 配置 ServiceMonitor 監控 MySQL

4. 在 Grafana 中添加 MySQL 監控模板

七、對接釘釘報警

1. 部署 DingTalk 組件

2. 修改 DingTalk 配置文件

3. 啟動 DingTalk 服務

4. 配置 Alertmanager 對接 DingTalk

5. 測試釘釘報警


一、基于 Kubernetes 的 Prometheus 監控方案概述
1. 核心組件及功能
在 Kubernetes 監控中,node - exporter + Prometheus + Grafana 組成的組合被廣泛采用,各組件功能如下:

node - exporter:節點級指標導出工具,可采集節點的 CPU、內存、磁盤、網絡等關鍵指標,并通過 Metrics 接口暴露數據,為監控提供基礎數據來源。
Prometheus:集時間序列數據庫與監控報警功能于一身,能夠主動抓取 Cadvisor 和 node - exporter 暴露的 Metrics 接口數據,將容器和節點的時序數據存儲起來,同時提供強大的 PromQL 查詢語言用于監控分析和報警設置。
Grafana:專業的圖表和 Dashboard 工具,可將 Prometheus 作為數據源,通過編寫 PromQL 查詢語句,以直觀的圖表形式展示 K8S 集群的 CPU 使用率、內存使用率、網絡流量等監控指標。
2. 監控流程詳解
Kubernetes 集群的監控流程清晰且有序,主要分為以下步驟:

數據采集層部署:在 Kubernetes 集群的每個節點上安裝 Cadvisor 和 node - exporter,其中 Cadvisor 負責容器級指標采集,node - exporter 負責節點級指標采集。
數據存儲與處理:部署 Prometheus,通過配置使其能夠抓取 Cadvisor 和 node - exporter 的 Metrics 接口數據,將容器(containers)和節點(nodes)的時序數據妥善存儲。
可視化展示:利用 Grafana 構建監控儀表盤,選擇 Prometheus 作為數據源,通過編寫 PromQL 查詢語句,直觀展示 K8S 集群的各類監控指標。
報警機制設置:根據監控需求設置 Prometheus 報警規則,當監控指標超過設定閾值時,及時發送報警信息,保障集群穩定運行。
在實際部署中,node - exporter 以 DaemonSet 形式運行,確保每個節點都能被監控;Prometheus 通過部署 Prometheus Operator 以 Deployment 形式運行,實現 Metrics 抓取和報警功能;Grafana 則通過部署 Grafana Operator 實現儀表盤展示。

3. 關鍵監控指標說明
Kubernetes 集群的監控指標眾多,涵蓋集群運行狀態的各個方面,主要包括:

資源利用率指標:CPU 利用率(節點、Pod、容器級別)、內存利用率(節點、Pod、容器級別)、網絡流量(節點、Pod、容器的收發包大小和帶寬利用率)、磁盤使用率(節點磁盤空間使用情況)。
組件狀態指標:Pod 狀態(Running、Waiting、Succeeded、Failed 等狀態數量)、節點狀態(Ready、NotReady 和 Unreachable 狀態數量)、容器重啟次數(單個容器或 Pod 內所有容器的重啟次數)。
核心組件性能指標:API 服務指標(Kubernetes API Server 的請求 LATENCY、請求 QPS、錯誤碼數量等)、集群組件指標(etcd、kubelet、kube - proxy 等組件的運行指標)。
基于這些指標可設置相應報警規則,例如 CPU 利用率超過 80% 報警、內存利用率超過 90% 報警、Pod / 節點 NotReady 狀態超過 10% 報警、API Server 請求 LATENCY 超過 200ms 報警等,具體閾值需根據集群大小和服務負載評估確定。

二、Prometheus 與相關組件部署
1. 克隆項目代碼
首先需要從 Github 克隆 kube - prometheus 項目的指定分支,命令如下:

[root@k8s - master ~]# git clone -b release - 0.10 https://github.com/prometheus - operator/kube - prometheus.git
命令解釋:??git clone???用于克隆遠程倉庫代碼,??-b release - 0.10??指定克隆的分支為 release - 0.10,該分支包含了適配當前部署需求的穩定版本代碼。

2. 安裝 Prometheus Operator
Prometheus Operator 是 CoreOS 開源項目,提供了 Kubernetes 原生方式運行和管理 Prometheus 的能力,能自動創建、配置和管理 Prometheus 實例,并與 Kubernetes 服務發現機制集成,大幅簡化部署工作量。
安裝命令如下:

[root@k8s - master ~]# cd kube - prometheus/
[root@k8s - master kube - prometheus]# kubectl apply --server - side -f manifests/setup
命令解釋:??cd kube - prometheus/???進入克隆下來的項目目錄;??kubectl apply???用于應用 Kubernetes 資源配置,??--server - side???特性將配置邏輯從 kubectl 移至 API 服務器,解決所有權沖突問題,??-f manifests/setup??指定應用 setup 目錄下的配置文件,完成 Prometheus Operator 的基礎環境部署。

若需刪除 Prometheus Operator,可執行以下命令:

kubectl delete --ignore - not - found=true -f manifests/setup
命令解釋:??kubectl delete???用于刪除 Kubernetes 資源,??--ignore - not - found=true???表示忽略未找到資源的錯誤,??-f manifests/setup??指定刪除 setup 目錄下配置文件對應的資源。

3. 安裝 Prometheus Stack
待 Operator 容器啟動后,安裝 Prometheus Stack,命令如下:

[root@k8s - master kube - prometheus]# kubectl apply --server - side -f manifests/
命令解釋:??-f manifests/??指定應用 manifests 目錄下的所有配置文件,該目錄包含了 Prometheus、Alertmanager、Grafana 等全套監控告警組件的配置,即 kube - prometheus - stack 全家桶。

刪除 Prometheus Stack 的命令為:

kubectl delete --ignore - not - found=true -f manifests/ -f manifests/setup
4. 查看容器運行狀態
安裝完成后,查看監控命名空間下的 Pod 狀態,確認組件是否正常運行:

[root@k8s - master ~]# kubectl get pod -n monitoring
正常情況下,會顯示 alertmanager、blackbox - exporter、grafana、kube - state - metrics、node - exporter、prometheus 等組件的 Pod 處于 Running 狀態,如下所示(部分示例):

NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? READY ? STATUS ? ?RESTARTS ? AGE
alertmanager - main - 0 ? ? ? ? ? ? ? ?2/2 ? ? Running ? 0 ? ? ? ? ?79m
grafana - 5fc7f9f55d - x4gv4 ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? ?87m
prometheus - k8s - 0 ? ? ? ? ? ? ? ? ? 2/2 ? ? Running ? 0 ? ? ? ? ?79m
命令解釋:??kubectl get pod???用于獲取 Pod 列表,??-n monitoring??指定查看 monitoring 命名空間下的 Pod,通過 STATUS 列可確認 Pod 是否正常運行。

三、ServiceMonitor 配置與應用
1. ServiceMonitor 作用與查看
ServiceMonitor 用于定義如何監控一組動態服務,通過標簽選擇器確定需要監控的 Service,實現服務的自動發現和監控配置,無需手動重新配置。
查看已有的 ServiceMonitor:

[root@k8s - master ~]# kubectl get servicemonitors -A
執行后會列出 monitoring 命名空間下的各類 ServiceMonitor,如 alertmanager - main、coredns、grafana、kube - apiserver 等,示例如下:

NAMESPACE ? NAME ? ? ? ? ? ? ? ? ? ? AGE
monitoring ?alertmanager - main ? ? ?2m9s
monitoring ?coredns ? ? ? ? ? ? ? ? 2m6s
monitoring ?grafana ? ? ? ? ? ? ? ? 2m7s
命令解釋:??kubectl get servicemonitors???用于獲取 ServiceMonitor 列表,??-A??表示查看所有命名空間下的 ServiceMonitor。

2. ServiceMonitor 工作原理
為使 Prometheus 監控 Kubernetes 內的應用,需存在 Endpoints 對象(本質是 IP 地址列表),通常由 Service 對象通過標簽選擇器匹配 Pod 自動填充。Prometheus Operator 的 ServiceMonitor 會發現這些 Endpoints 對象,并配置 Prometheus 監控對應的 Pod,其 spec.endpoints 部分用于配置需要抓取指標的端口。

四、Grafana 配置與訪問
1. 修改 Grafana Service 類型
默認 Grafana 的 Service 類型為 ClusterIP,僅集群內部可訪問,需修改為 NodePort 類型以便外部訪問:

[root@k8s - master ~]# kubectl edit svc grafana -n monitoring
命令解釋:??kubectl edit svc???用于編輯 Service 配置,??grafana???為 Service 名稱,??-n monitoring??指定命名空間。

在編輯界面中,將??type: ClusterIP???修改為??type: NodePort??,并可指定 nodePort(如 32082),修改后保存退出。

查看修改后的 Grafana Service 信息:

[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
命令解釋:??kubectl get svc??用于獲取 Service 信息,可看到 TYPE 已變為 NodePort,以及映射的節點端口 32082。

2. 訪問 Grafana 并配置數據源
通過以下 URL 訪問 Grafana:??http://<K8S集群任意節點的IP>:32082???。
默認登錄賬號密碼為 admin/admin,首次登錄會提示修改密碼,可選擇跳過。

Grafana 默認已配置 Prometheus 數據源,若需手動配置:

單擊首頁左側的 “Add your first data source”。
選擇 Prometheus 數據源。
在 HTTP 配置項下的 URL 填寫 “http://prometheus - k8s:9090”(prometheus - k8s 為 K8s 集群內的 Service 名),點擊 “Save & Test” 保存并測試。
3. 導入監控模板
導入 Node 節點監控模板步驟:

單擊首頁左側 “+” 按鈕,選擇 “Import”。
輸入模板 ID:13105,單擊 “Load” 加載。
最后單擊 “Import” 完成導入,即可在 Dashboard 查看 Node 節點監控數據。
其他常用模板可在 Grafana 官網(??https://grafana.com/grafana/dashboards/??)查找,如 Kubernetes Cluster(7249)、Docker and system monitoring(893)等。

五、Prometheus 訪問配置
1. 修改 Prometheus Service 類型
同樣將 Prometheus 的 Service 類型修改為 NodePort:

[root@k8s - master ~]# kubectl edit svc prometheus - k8s -n monitoring
在編輯界面中,將??type: ClusterIP???修改為??type: NodePort??,并指定 nodePort(如 9090 對應 32370)。

查看修改后的 Prometheus Service 信息:

[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
2. 訪問 Prometheus 并查看監控目標
通過 URL??http://<K8S集群任意節點的IP>:32370??訪問 Prometheus。在 Prometheus 界面中,點擊 “Status”->“Targets” 可查看所有監控目標的狀態,確認各 ServiceMonitor 對應的目標是否正常(up 狀態)。

Prometheus 告警規則有三個狀態:

inactive:未被觸發。
pending:已觸發但未達到 for 設定時間。
firing:觸發且達到設定時間,會發送告警。
六、監控 MySQL 數據庫
1. 部署 MySQL
在 Kubernetes 中部署 MySQL:

[root@k8s - master ~]# kubectl create deploy mysql --image=mysql:5.7.23
命令解釋:??kubectl create deploy???用于創建 Deployment,??mysql???為 Deployment 名稱,??--image=mysql:5.7.23??指定使用的鏡像及版本。

設置 MySQL 密碼:

[root@k8s - master ~]# kubectl set env deploy/mysql MYSQL_ROOT_PASSWORD=pd123
命令解釋:??kubectl set env???為 Deployment 設置環境變量,??deploy/mysql???指定 Deployment,??MYSQL_ROOT_PASSWORD=pd123??設置 root 用戶密碼。

查看 MySQL Pod 狀態:

[root@k8s - master ~]# kubectl get pod
輸出示例:

NAME ? ? ? ? ? ? ? ? ? ? READY ? STATUS ? ?RESTARTS ? AGE
mysql - 58dd9c4df4 - 17fgd 1/1 ? ? Running ? 0 ? ? ? ? ?2m53s
創建 Service 暴露 MySQL 端口:

[root@k8s - master ~]# kubectl expose deployment mysql --type NodePort --port=3306
命令解釋:??kubectl expose deployment???為 Deployment 創建 Service,??--type NodePort???指定 Service 類型,??--port=3306??指定服務端口。

查看 MySQL 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
訪問測試 MySQL:

[root@k8s - master ~]# dnf -y install mysql ?# 安裝MySQL客戶端
[root@k8s - master ~]# mysql -u root -ppwd123 -h 192.168.207.137 -P31152 ?# 連接測試,IP為K8S節點IP,端口為映射的NodePort
設置 MySQL 訪問權限:

[root@k8s - master ~]# grant all on *.* to exporter@'%' identified by 'exporter';
命令解釋:創建 exporter 用戶并授權,允許其從任意主機(%)訪問所有數據庫,密碼為 exporter,供 exporter 采集數據使用。

2. 部署 MySQL Exporter
創建 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: IfNotPresent
? ? ? ? ports:
? ? ? ? - containerPort: 9104 ?# exporter暴露指標的端口
---
apiVersion: v1
kind: Service
metadata:
? name: mysql - exporter
? namespace: monitoring
? labels:
? ? k8s - app: mysql - exporter
spec:
? type: ClusterIP
? selector:
? ? k8s - app: mysql - exporter
? ports:
? - name: api
? ? port: 9104
? ? protocol: TCP

部署 MySQL Exporter:

[root@k8s - master ~]# kubectl create -f mysql - exporter.yaml
命令解釋:??kubectl create -f??根據配置文件創建 Deployment 和 Service 資源。

查看部署結果:

[root@k8s - master ~]# kubectl get -f mysql - exporter.yaml
測試能否獲取 metrics 數據:

[root@k8s - master ~]# curl 10.109.16.46:9104/metrics | tail -n 5 ?# 10.109.16.46為mysql - exporter Service的ClusterIP
若能獲取到指標數據,說明 Exporter 工作正常。

3. 配置 ServiceMonitor 監控 MySQL
創建 mysql - sm.yaml 配置文件:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
? name: mysql - exporter
? namespace: monitoring
? labels:
? ? k8s - app: mysql - exporter
spec:
? jobLabel: k8s - app
? endpoints:
? - port: api ?# 對應Service中定義的端口名
? ? interval: 30s ?# 抓取間隔
? ? scheme: http
? selector:
? ? matchLabels:
? ? ? k8s - app: mysql - exporter ?# 匹配mysql - exporter Service的標簽
? namespaceSelector:
? ? matchNames:
? ? - monitoring ?# 監控的命名空間

創建 ServiceMonitor:

[root@k8s - master ~]# kubectl create -f mysql - sm.yaml
在 Prometheus 的 “Targets” 頁面中,可查看 mysql - exporter 的監控目標是否正常(up 狀態)。

4. 在 Grafana 中添加 MySQL 監控模板
導入 MySQL 監控模板,模板 ID:6239,步驟同 Node 節點模板導入,完成后即可查看 MySQL 監控數據。

七、對接釘釘報警
1. 部署 DingTalk 組件
下載 Prometheus Webhook DingTalk:

wget https://github.com/timonwong/prometheus - webhook - dingtalk/releases/download/v2.0.0/prometheus - webhook - dingtalk - 2.0.0.linux - amd64.tar.gz
解壓并部署:

tar -xf prometheus - webhook - dingtalk - 2.0.0.linux - amd64.tar.gz
mv prometheus - webhook - dingtalk - 2.0.0.linux - amd64 /usr/local/dingtalk
2. 修改 DingTalk 配置文件
進入配置目錄并修改配置:

cd /usr/local/dingtalk
mv config.example.yml config.yml
vi config.yml
配置文件內容示例(關鍵部分):

targets:
? webhook1:
? ? url: https://oapi.dingtalk.com/robot/send?access_token=你的機器人access_token
? ? secret: 你的機器人secret(可選)
? # 可配置多個webhook
配置解釋:??url???為釘釘機器人的 Webhook 地址,需替換為實際創建的機器人地址;??secret??用于簽名驗證,增強安全性。

3. 啟動 DingTalk 服務
創建系統服務配置:

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

?

啟動服務并設置開機自啟:

sudo systemctl daemon - reload
sudo systemctl start prometheus - webhook - dingtalk
sudo systemctl enable prometheus - webhook - dingtalk
查看服務狀態:

sudo systemctl status prometheus - webhook - dingtalk
確認服務處于 Running 狀態,同時可通過??ss -n1pt | grep 8060??查看 8060 端口是否被監聽(默認端口)。

4. 配置 Alertmanager 對接 DingTalk
編輯 Alertmanager 配置文件:

cd /root/kube - prometheus/manifests/
vi alertmanager - secret.yaml
修改配置文件中的 receivers 和 route 部分,示例如下:

stringData:
? alertmanager.yml: |
? ? 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/webhook2/send ?# DingTalk服務地址
? ? ? ? send_resolved: true
? ? route:
? ? ? group_by:
? ? ? - namespace
? ? ? group_interval: 50s
? ? ? group_wait: 30s
? ? ? receiver: webhook
? ? ? repeat_interval: 1h
? ? ? routes:
? ? ? - matchers:
? ? ? ? - alertname = Watchdog
? ? ? ? receiver: webhook
? ? ? - matchers:
? ? ? ? - severity = critical
? ? ? ? receiver: webhook
? ? ? - matchers:
? ? ? ? - alertname = TargetDown
? ? ? ? receiver: webhook

配置解釋:??receivers???定義接收者為 webhook,指定 DingTalk 服務的 URL;??route??定義告警路由規則,將各類告警發送到 webhook 接收者。

應用配置:

kubectl replace -f alertmanager - secret.yaml
若配置修改后未生效,可刪除后重新創建:

kubectl delete -f alertmanager - secret.yaml
kubectl create -f alertmanager - secret.yaml
修改 Alertmanager 的 Service 類型為 NodePort 以便訪問:

kubectl edit svc -n monitoring alertmanager - main
查看 Alertmanager Service 信息:

kubectl get svc -n monitoring alertmanager - main
通過??http://<K8S集群任意節點的IP>:<NodePort>??訪問 Alertmanager 頁面。

5. 測試釘釘報警
停止 MySQL 服務模擬故障:

kubectl scale deployment mysql --replicas=0
命令解釋:??kubectl scale deployment???用于調整 Deployment 的副本數量,??--replicas=0??表示停止所有 MySQL Pod。

等待一段時間后,若報警規則觸發,釘釘機器人會發送報警信息,確認報警功能正常后,可恢復 MySQL 服務:

kubectl scale deployment mysql --replicas=1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918688.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GPT-5 有點不太順

GPT-5 有點不太順 OpenAI 的新模型 GPT-5 盼了很久,結果一上線就問題不少。 發布會剛過,CEO 山姆?奧特曼就說,要給部分用戶恢復 GPT-4o 這些老模型的使用權限,還承認 GPT-5 上線 “比預想的坎坷”。 簡單題都做錯了 不少用戶發現,GPT-5 連一些簡單問題都答不對,比之前…

《卷積神經網絡(CNN):解鎖視覺與多模態任務的深度學習核心》

1.概述卷積神經網絡&#xff08;CNN&#xff09;是深度學習在計算機視覺領域的重要突破&#xff0c;專為處理網格狀數據&#xff08;如圖像&#xff09;設計&#xff0c;后也擴展到自然語言處理等領域。它解決了全連接網絡處理大圖像時計算代價高、特征保留差的問題&#xff0c…

React Native + Expo搭建APP項目+安卓模擬器

Expo 嘗試一下就好&#xff0c;畢竟參考代碼太少&#xff0c;相當于閉關造輪子&#xff0c;不建議。 一、需要的工具 1. node.js&#xff0c;推薦使用&#xff08;TLS版本&#xff09;&#xff0c;版本不是太低就行&#xff0c;測試用的v20.12.2的Node 2. 開發工具 VS CODE或…

第六十五章:AI的“精良食材”:圖像標注、視頻幀抽幀與字幕提取技巧

ai 數據處理前言&#xff1a;從“原始食材”到“AI盛宴”第一章&#xff1a;圖像標注&#xff1a;為AI“指點江山”1.1 什么是圖像標注&#xff1f;—— AI的“視覺標簽”1.2 分類任務&#xff1a;圖像的“身份識別”1.3 目標檢測&#xff1a;圖像的“區域識別”與“邊界框”1.…

2025 開源語音合成模型全景解析:從工業級性能到創新架構的技術圖譜

一、引言&#xff1a;開源浪潮下的語音合成技術躍遷 語音合成&#xff08;TTS&#xff09;作為人工智能領域的核心技術&#xff0c;近年來在開源社區的推動下取得了突破性進展。從早期的基于規則的拼接合成&#xff0c;到深度學習驅動的端到端模型&#xff0c;再到當前與大語言…

前端懶加載技術全面解析

懶加載(Lazy Loading)是一種優化前端性能的重要技術,核心思想是延遲加載非關鍵資源,只在需要時加載它們。 一、懶加載的基本原理 懶加載的核心思想是通過以下方式優化性能: 減少初始加載實踐: 只加載首屏所需資源 節省帶寬和內存: 避免加載用戶可能不會查看的內容 提高…

B3DM,OSGB,PLY,OBJ,S3MB,I3S這幾種格式有什么區別

B3DM、OSGB、PLY、OBJ、S3MB、I3S 都是三維模型/地理空間數據的文件格式&#xff0c;但它們的用途、結構和適用場景差別很大。1. B3DM&#xff08;Batched 3D Model&#xff09;來源/用途&#xff1a;屬于 Cesium 3D Tiles 規范&#xff0c;用于在 Cesium、Mapbox 這種 WebGIS …

Matlab(4)

一、Basic plotting1.plot&#xff08;&#xff09;plot(x,y) &#xff1a;x圖片中點的橫坐標&#xff0c;y圖片中點的縱坐標plot(y) &#xff1a;y圖片中點的縱坐標&#xff0c;x圖片中點的橫坐標默認為1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5........plot(co…

Pycharm選好的env有包,但是IDE環境顯示無包

一、異常現象 Pycharm選好的env&#xff08;yolov7&#xff09;&#xff1a; 有Numpy這個包&#xff1a; IDE環境愣是報沒有&#xff1a; 二、嘗試解決 2.1 重新啟動pycharm 重新打開.py文件&#xff1a; 還是不行&#xff1a; 看看好使的windows上的pycharm參數&#xff1a…

深入理解 Linux 下的 GDB 調試工具

引言 在軟件開發中&#xff0c;調試是一個不可避免且至關重要的環節。無論是簡單的邏輯錯誤&#xff0c;還是復雜的內存泄漏問題&#xff0c;調試工具都能幫助我們快速定位并修復問題。而在 Linux 系統中&#xff0c;GDB&#xff08;GNU 調試器&#xff09;是最強大、最常用的…

讓齒輪與斑馬線共舞:汽車文化驛站及安全教育基地的展陳實踐

當汽車文化驛站及安全教育基地的展陳項目圖紙在繪圖儀上初現輪廓時&#xff0c;我們就明確了一個核心命題&#xff1a;如何讓 “速度與激情” 的汽車文化&#xff0c;與 “規則與敬畏” 的安全教育在同一空間里和諧共生&#xff0c;而非簡單拼接。這不是兩個獨立展區的物理疊加…

Flask + Vue.js 物聯網數字大屏實現方案

我將為您創建一個精美的物聯網數字大屏,使用Flask作為后端提供數據,Vue.js作為前端展示,全部集成在單個HTML文件中實現。 設計思路 整體布局: 深色主題背景提高數據可視性 頂部標題欄顯示系統名稱和時間 中央區域分為多個數據卡片 底部顯示系統狀態信息 核心功能: 實…

Excel怎么篩選重復項?【圖文詳解】查找/刪除重復項?查找重復項公式?如何去重?

一、問題背景 在使用 Excel 整理數據時&#xff0c;我們經常會遇到重復內容。這些重復項不僅會讓表格顯得雜亂&#xff0c;還可能影響數據統計的準確性。比如學生成績表中重復的分數、員工信息表中重復的姓名等&#xff0c;都需要及時篩選出來處理。其實&#xff0c;篩選重復項…

模板打印技術——自動識別office類型 打印模板:為政務土地確權定制的替換利器—仙盟創夢IDE

代碼for (int i 0; i < tmpcount; i){string tmptable dt.Rows[i]["tmpname"].ToString().Trim();string doctype dt.Rows[i]["doctype"].ToString().Trim();if (doctype "doc"){doc_pagecount cyberwin_replacr_tmpes_files(dgvr, tmpt…

MongoDB分析insert源代碼

mongo插入單條文檔insert()> db.user.insert({ ... "name": "alice", ... "age": 28 ... }); WriteResult({ "nInserted" : 1 }) >MongoDB插入文檔代碼調用鏈如下&#xff1a;mongo/db/commands/write_commands/write_c…

react路由跳轉與路由懶加載等(對照vue來說一說不同之處)

前言&#xff1a;react路由跳轉與路由懶加載等路由懶加載&#xff1a;使用 loadable/component 插件來實現安裝&#xff1a;npm i loadable/component具體使用&#xff1a;1、引入loadable/component2、正常封裝的地方const HomeLoadable(()>import(./views/Home.jsx));也可…

Nginx 架構和安裝

二、.Nginx 架構和安裝 2.1 Nginx 概述 2.1.1 Nginx 介紹 Nginx&#xff1a;engine X &#xff0c;2002年開發&#xff0c;分為社區版和商業版(nginx plus ) 2019年3月11日 F5 Networks 6.7億美元的價格收購 Nginx是免費的、開源的、高性能的HTTP和反向代理服務器、郵件代理服務…

HarmonyOS NDK的JavaScript/TypeScript與C++交互機制

HarmonyOS NDK的JavaScript/TypeScript與C交互機制 細解釋這個調用流程&#xff1a; 整體架構流程 ArkTS/JavaScript ←→ .d.ts (類型定義) ←→ NAPI ←→ .cpp (C實現)文件結構和作用 項目結構示例&#xff1a; MyHarmonyApp/ ├── entry/src/main/ets/ # ArkTS應…

[激光原理與應用-226]:機械 - 如何學習3D圖設計

學習機械領域的3D圖設計需要系統掌握軟件操作、設計思維、工程規范和實戰經驗。以下是分階段的學習路徑和實用建議&#xff0c;幫助你高效入門并提升技能&#xff1a;一、基礎準備階段1. 明確學習目標方向選擇&#xff1a;根據興趣確定細分領域&#xff08;如機械零件設計、鈑金…

uniapp -- 小程序處理與設備通訊 GBK/GB2312 編碼問題。

?? 小程序/UniApp 中處理 GBK 編碼:iconv-lite + Buffer 實用指南 適用場景:設備通信、藍牙傳輸、舊系統對接、十六進制轉中文等涉及 GB2312/GBK 編碼 的中文亂碼問題。 ?? 一、為什么需要這個工具? 在小程序或 UniApp 開發中,常遇到以下問題: 藍牙設備返回的中文是 …