【prometheus+Grafana篇】基于Prometheus+Grafana實現Oracle數據庫的監控與可視化

💫《博主主頁》:

? ? ? ? ? ?🔎?CSDN主頁

? ? ? ? ? ?🔎?IF Club社區主頁

🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(MongoDB)有了解

💖如果覺得文章對你有所幫助,歡迎點贊收藏加關注💖

? ? 又是元氣滿滿的一周,博主目前的狀態是周更文章,也就是一周撰寫一篇,那么今天這篇文章還是繼續分享一下關于?Prometheus+Grafana 的文章,通過?Prometheus?來抓取?Oracle數據庫?的監控數據,并利用?Grafana?可視化平臺進行展示。同時,博主還將配置一些常見的?Oracle數據庫告警項 ,進行實時監控和及時預警,幫助大家第一時間發現Oracle數據庫潛在問題。

? ? ? ? ? ? ? ??

特別說明💥:

📌 開源儀表盤引用

  • 本文采用的Oracle數據庫監控儀表盤直接使用了Grafana官網開源項目(Dashboard ID:?17136),非常感謝原作者的無私分享。關于Grafana的所有配置步驟均基于該開源儀表盤并驗證通過,各位可一鍵導入快速搭建專業級的可視化監控。

? ? ? ? ? ? ? ? ? ? ??

? 原創告警規則實現

  • 關于告警部分為博主獨立開發完成,針對Oracle數據庫實現了如下告警:

    • ??Oracle 數據庫實例宕機

    • ??Oracle 會話使用率過高

    • ??Oracle 表空間使用率過高

    • ??Oracle Data Guard 進程存在異常

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

prometheus+Grafana全系列文章(實時更新 🔥 ):

序號文章
1【prometheus+Grafana篇】Prometheus與Grafana:深入了解監控架構與數據可視化分析平臺-CSDN博客
2【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter_grafana二進制部署-CSDN博客
3【prometheus+Grafana篇】Prometheus告警規則參數全解析 + Alertmanager實現多平臺告警(含電子郵件/企業微信群/飛書群/釘釘群接受方式)_grafana做飛書機器人報警-CSDN博客
4【prometheus+Grafana篇】基于Prometheus+Grafana實現Linux操作系統的監控與可視化-CSDN博客
5【prometheus+Grafana篇】基于Prometheus+Grafana實現windows操作系統的監控與可視化_grafana 監控 windows-CSDN博客
6【prometheus+Grafana篇】基于Prometheus+Grafana實現Oracle數據庫的監控與可視化-CSDN博客

? ? ? ? ? ? ?

目錄

一、在Oracle orcl實例上的操作

二、安裝oracledb_exporter(oracledb_exporter:是prometheus的一個插件,抓取和收集Oracle數據庫的各種運行指標用于分析。oracledb_exporter插件是GitHub開源組織提供的,通過GitHub官網下載oracledb_exporter)

1)下載oracledb_exporter安裝包,選擇download,然后點擊“Exporters and integrations”,選擇Oracle DB Exporter

2)跳轉到了gitHub,點擊oracledb_exporter的版本集,選擇最新的oracledb_exporter下載

3)目前oracledb_exporter最新版本為0.6.0。但是最新的0.6.0版本和linux7.6版本不兼容,導致在使用oracledb_exporter命令時報錯,所以使用上一個版本0.5.2進行部署

4)解壓二進制oracledb_exporter包

5)移動并重命名oracledb_exporter解壓出來的目錄

6)創建prometheus用戶

7)賦權

8)寫入linux啟動服務項

9)登錄oracledb_exporter界面管理,默認端口為9161

三、將當前Oracle orcl實例加入到prometheus監控,并通過Grafana展示

1)將oracledb_exporter的信息加入到prometheus監控的配置文件prometheus.yml中

2)配置告警規則文件

3)檢查配置文件

4)prometheus.yml文件添加了信息,所以重啟prometheus進程或者重新加載配置文件(二選一)?

5)在prometheus查看是否可以看到監控信息

6)登錄Grafana界面管理,將當前主機的監控信息做展示

一、下載一個儀表盤:Grafana官網“http://www.grafana.com”—Dashboard templates,然后選擇一個下載量高的自己喜歡的oracledb_exporter(Oracle監控)

二、將儀表盤添加到Grafana上:Dashboards—New—Import—點擊“Upload dashboard JSON file”

三、儀表盤展示:Dashboards—查看到已經定義好的儀表盤,并且數據源是prometheus監控,點擊進去


? ? ? ? ? ? ? ??

監控Oracle信息如下:

主機名

IP地址

配置

系統

描述

Oracle11g

110.120.100.17

4C 8G

Red Hat Linux 7.6

安裝oracledb_exporter對這臺服務器進行監控

oracledb_exporter:默認端口9161。抓取和收集Oracle數據庫的各種運行指標用于分析

? ? ? ? ? ?

一、在Oracle orcl實例上的操作

1)創建專屬監控用戶(不建議使用sys用戶,sys用戶權限太高)

SQL> 
create user oracle_exporter identified by 123456;
grant connect,resource,OEM_MONITOR to oracle_exporter;        ###OEM_MONITOR角色是用于 Oracle Enterprise Manager (OEM) 的一個特定角色。這個角色的權限通常包括可以監控數據庫性能和狀態所需的權限。

? ? ??

二、安裝oracledb_exporter(oracledb_exporter:是prometheus的一個插件,抓取和收集Oracle數據庫的各種運行指標用于分析。oracledb_exporter插件是GitHub開源組織提供的,通過GitHub官網下載oracledb_exporter

1)下載oracledb_exporter安裝包,選擇download,然后點擊“Exporters and integrations”,選擇Oracle DB Exporter

? ? ? ? ? ? ? ?

2)跳轉到了gitHub,點擊oracledb_exporter的版本集,選擇最新的oracledb_exporter下載

PS:也可以直接在gitHub官網下載

一、通過gitHub(官網地址:GitHub · Build and ship software on a single, collaborative platform · GitHub)下載oracledb_exporter安裝包,在gitHub搜索“oracledb_exporter”。因為是開源,所以大家都是有時間才會開發,所以選擇一個最近更新的

二、點擊oracledb_exporter的版本集,選擇最新的oracledb_exporter下載

? ? ? ??

3)目前oracledb_exporter最新版本為0.6.0。但是最新的0.6.0版本和linux7.6版本不兼容,導致在使用oracledb_exporter命令時報錯,所以使用上一個版本0.5.2進行部署

?? ? ? ??

4)解壓二進制oracledb_exporter

[root@Oracle11g ~]# tar -zxvf oracledb_exporter.tar.gz 

? ??

5)移動并重命名oracledb_exporter解壓出來的目錄

[root@Oracle11g ~]# mkdir -p /opt/prometheus
[root@Oracle11g ~]# mv oracledb_exporter-0.5.2.linux-amd64 /opt/prometheus/
[root@Oracle11g ~]# mv /opt/prometheus/oracledb_exporter-0.5.2.linux-amd64 /opt/prometheus/oracledb_exporter

? ??

6)創建prometheus用戶

[root@Oracle11g ~]# groupadd prometheus
[root@Oracle11g ~]# useradd -g prometheus -M -s /usr/sbin/nologin prometheus     ---創建一個名為prometheus的系統賬號,該賬號沒有家目錄并且不能登錄Shell。這種設置適用于需要運行服務或任務而不需要用戶交互的情況。
-M:不為用戶創建家目錄。對于系統服務賬號來說,通常不需要家目錄,因此使用 -M 可以跳過家目錄的創建步驟。
-s /usr/sbin/nologin:指定用戶登錄時使用的Shell。將用戶prometheus的登錄Shell設置為/usr/sbin/nologin。nologin Shell的作用是阻止用戶登錄系統,但允許該用戶擁有有效的系統賬號。這通常用于服務賬號,因為它們不需要交互式Shell訪問,僅用于執行特定服務或任務。[root@Oracle11g ~]# passwd prometheus[root@Oracle11g ~]# id prometheus

? ??

7)賦權

[root@Oracle11g ~]# chown -R prometheus:prometheus /opt/prometheus/oracledb_exporter

8)寫入linux啟動服務項

Linux7之后通過systemctl方式:

[root@Oracle11g ~]# cd /usr/lib/systemd/system
[root@Oracle11g ~]# vi oracledb_orcl_exporter.service[Unit]
Description=oracledb_exporter
After=network.target[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/oracledb_exporter/oracledb_exporter --database.dsn "oracle://oracle_exporter:123456@192.168.56.17:1521/orcl" --default.metrics "/opt/prometheus/oracledb_exporter/default-metrics.toml" --web.listen-address=0.0.0.0:9161[Install]
WantedBy=multi-user.target[root@Oracle11g ~]# systemctl daemon-reload
[root@Oracle11g ~]# systemctl start oracledb_orcl_exporter.service
[root@Oracle11g ~]# systemctl enable oracledb_orcl_exporter.service
[root@Oracle11g ~]# systemctl status oracledb_orcl_exporter.service

###--database.dsn="":Oracle數據源的連接字符串,默認識別DATA_SOURCE_NAME變量的值。需要注意此參數不能使用 = ,使用的話會報錯:ts=2024-09-16T12:41:33.326Z caller=collector.go:262 level=error errorpingingoracle:="parse \"\\\"oracle://oracle_exporter:123456@192.168.56.17:1521/orcl\\\"\": first path segment in URL cannot contain colon"。并且此參數在0.5以上版本改變了書寫格式:

?###--default.metrics=指定toml文件,toml文件中包含指定的指標。oracledb_exporter的0.5.2版本是沒有包含toml文件的,一般都是開發者自己編輯,然后指定該toml文件。需要注意此參數不能使用 = ,使用的話會報錯:ts=2024-09-16T12:42:45.684Z caller=default_metrics.go:81 level=error therewasanissuewhileloadingspecifieddefaultmetricsfileat:/opt/prometheus/oracledb_exporter/default-metrics.toml,proceedingtorunwithdefaultmetrics.="open \"/opt/prometheus/oracledb_exporter/default-metrics.toml\": no such file or directory"。

###--web.listen-address=<address>:<port>:指定服務端口。Oracle的抓取默認通過9161端口訪問oracledb_exporter管理界面,可以修改成其他端口用于訪問oracledb_exporter管理界面(如果沒有修改端口的需求可以不設置這個參數)。此參數只能在oracledb_exporter命令啟動時指定,不可以在配置文件prometheus.yml中指定。如果服務器上有多個實例,比如還有orcl2實例,那么需要再寫一個linux啟動項,并且通過--database.dsn=""參數指定Oracle數據源

? ? ? ? ?

Linux7之前通過service方式:

[root@Oracle11g ~]# cd /etc/init.d/
[root@Oracle11g ~]# vi oracledb_orcl_exporter#!/bin/bash
# chkconfig: 2345 99 10
# description: Oracle Exporter for Oracle instance orclDAEMON="/opt/prometheus/oracledb_exporter/oracledb_exporter"
DAEMON_OPTS="--database.dsn oracle://oracle_exporter:123456@192.168.56.17:1521/orcl --default.metrics /opt/prometheus/oracledb_exporter/default-metrics.toml --web.listen-address=0.0.0.0:9161"case "$1" instart)echo "Starting oracledb_orcl_exporter"$DAEMON $DAEMON_OPTS &;;stop)echo "Stopping oracledb_orcl_exporter"pkill -f "$DAEMON $DAEMON_OPTS";;restart)$0 stop$0 start
;;status)PID=$(pgrep -f "$DAEMON $DAEMON_OPTS")if [ -n "$PID" ]; thenecho "oracledb_orcl_exporter is running with PID: $PID"elseecho "oracledb_orcl_exporter is not running"fi
;;*)echo "Usage: $0 {start|stop|restart|status}"exit 1;;
esacexit 0[root@Oracle11g ~]# chmod 755  /etc/init.d/oracledb_orcl_exporter
[root@Oracle11g ~]# chkconfig --add oracledb_orcl_exporter [root@Oracle11g ~]# service  oracledb_orcl_exporter  start
[root@Oracle11g ~]# chkconfig  oracledb_orcl_exporter  on  [root@Oracle11g ~]# service oracledb_orcl_exporter status

? ? ?

9)登錄oracledb_exporter界面管理,默認端口為9161

http://192.168.56.17:9161/metrics

? ? ? ? ??

三、將當前Oracle orcl實例加入到prometheus監控,并通過Grafana展示

注意:如下操作是在安裝了prometheus和Grafana的主機上進行操作安裝直通車👉【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter_grafana二進制部署-CSDN博客👈

? ? ? ?

1)將oracledb_exporter的信息加入到prometheus監控的配置文件prometheus.yml中

[root@prometheus ~]# vi /opt/prometheus/prometheus.yml    
在scrape_configs下面新增如下內容:# oracledb_exporter配置           - job_name: "oracledb_exporter"      ###job_name 用來唯一標識一個監控任務。在同一個 prometheus.yml 文件中,不同的 scrape_config可以有不同的job_name,以便 Prometheus 能夠區分和管理不同的監控目標和配置,用來將不同的監控目標分組。單位為監控Oracle數據庫設置一個獨立的job_namescrape_interval: 15s              ###指定這個job_name每隔多久從每個目標(如 Exporter、應用端點)拉取一次指標數據。優先級:會覆蓋全局的 global:scrape_interval(如果存在)。file_sd_configs:- files:- /opt/prometheus/conf.d/oracle_targets.json           #### Oracle需要監控的實例都單獨寫在了oracle_targets.json文件中,是為了避免prometheus.yml內容過多,看起來更簡潔[root@prometheus ~]# vi /opt/prometheus/conf.d/oracle_targets.json        
###因為使用的是17136 json模版,17136模版中在頁頭定義了group(group)、數據庫ip(oracle_ip)、數據庫實例(oracle_instance)信息,所以在配置文件中就必須定義這些內容。如果添加了多個targets,但每個targets都沒有定義group(group)、數據庫ip(oracle_ip)、數據庫實例(oracle_instance)信息,就會導致在grafana界面上無法選擇對應目標targets的監控信息。所以用17136 json模版,就必須添加
[{"targets": [ "192.168.56.17:9161" ],"labels": {"type": "db","group": "192.168.56.17 orcl實例","oracle_ip": "192.168.56.17","oracle_instance": "orcl"}}
]

? ? ??

2)配置告警規則文件

? ? 除了如下告警規則之外,還需要單獨配置一個Targets目標不可達(up)的相關規則,因為up 是一個布爾值指標,表示 Prometheus 是否能夠成功地 scrape(抓取)到指定的目標(targets)數據,用于判斷目標node-exporter相關進程是否在目標主機存活。關于up的規則文件參考:【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter_grafana二進制部署-CSDN博客

[root@prometheus ~]# cd /opt/prometheus/rules/    ###在prometheus.yml文件中定義了告警規則文件rule_files參數
[root@prometheus rules]# vi oracledb_alerts.yml groups:- name: oracledb_alertsrules:- alert: OracleDBDownexpr: oracledb_up == 0for: 3slabels:severity: criticalannotations:summary: "Oracle 數據庫實例宕機"description: "Oracle 實例 {{ $labels.instance }} 當前不可用,請立即檢查!"- alert: OracleSessionUsageexpr: sum(oracledb_sessions_value) by (instance, oracle_ip, oracle_instance) / sum(oracledb_parameter_sessions_value) by (instance, oracle_ip, oracle_instance) * 100 > 90for: 3slabels:severity: criticalannotations:summary: "Oracle 會話使用率過高"description: "當前 Oracle 實例 {{ $labels.instance }} 的會話與限額百分比已達到 {{ $value | printf \"%.2f\" }}%,超過 90%。請及時檢查會話使用情況!"- alert: OracleTablespaceUsageexpr: (1 - oracledb_tablespace_free / oracledb_tablespace_bytes) * 100 > 90for: 3slabels:severity: criticalannotations:summary: "Oracle 表空間使用率過高"description: "當前 Oracle 實例 {{ $labels.instance }} 的 {{ $labels.tablespace }} 表空間使用率已達到 {{ $value | printf \"%.2f\" }}%,超過 90%。請及時檢查表空間使用情況!"- alert: OracleDataGuardStatusIssueexpr: oracledb_dataguard_status_value == 1for: 3slabels:severity: criticalannotations:summary: "Oracle Data Guard 進程存在異常"description: "當前 Oracle 實例 {{ $labels.instance }} 不能將歸檔日志傳輸到備庫,請檢查備庫alert日志排查問題或排除MRP進程是否啟動!"

? ? ? ? ??

3)檢查配置文件

[root@prometheus ~]# cd /opt/prometheus/
[root@prometheus ~]# ./promtool check config prometheus.yml      ###用于檢查 Prometheus 配置文件(prometheus.yml)的語法和格式是否正確。

執行這條命令會執行以下操作:

  1. 驗證配置文件的語法:檢查 prometheus.yml 文件是否符合 Prometheus 配置格式規范。
  2. 檢測潛在的錯誤或警告:如果配置文件中存在拼寫錯誤、格式問題、無效的配置項等問題,它會提供相關的錯誤信息或警告。比如告警規則寫的不對,就會有提示
  3. 輸出有用的診斷信息:如果配置文件存在問題,promtool 會輸出詳細的錯誤信息。

?? ? ? ? ? ? ? ? ??

4)prometheus.yml文件添加了信息,所以重啟prometheus進程或者重新加載配置文件(二選一)?

#重載:前提是在prometheus.service啟動服務項中加了--web.enable-lifecycle參數:--web.enable-lifecycle:###啟用Prometheus的生命周期接口,允許通過HTTP請求來動態重新加載配置等操作。這對于在運行時更新配置或執行其他管理操作非常有用,當修改了prometheus的配置后,可以通過curl命令來重新加載配置文件,而不需要重啟prometheus(推薦方式)

[root@prometheus ~]# curl -X POST http://localhost:9090/-/reload

? ? ??

#重啟

[root@prometheus ~]# systemctl restart prometheus.service

? ? ? ??

5)在prometheus查看是否可以看到監控信息

網址:http://110.120.100.21:9090

菜單欄:Status—Targets

?? ? ? ? ? ? ?

6)登錄Grafana界面管理,將當前主機的監控信息做展示

地址:http://110.120.100.21:3000

默認用戶:admin

默認密碼:admin

? ? ? ??

一、下載一個儀表盤:Grafana官網“http://www.grafana.com”—Dashboard templates,然后選擇一個下載量高的自己喜歡的oracledb_exporter(Oracle監控)

注意:不需要再增加數據源了。因為在第一次搭建prometheus+Grafana的時候就已經加好了,在添加數據源時,有個配置項是Connection,這里添加的是prometheus的地址,指的是prometheus監控服務器的地址,而不是node-exporter的地址

?? ? ? ? ? ? ? ? ??

以17136為例,新增了多個指標,比較全面,包括,所以需要單獨去下載一下toml文件,然后在啟動oracledb_exporter時指定對應的toml文件,然后通過它提供的17136模版將指標展示出來

替換default-metrics.toml用的文件:GitHub - saitiger008/oracledb_exporter_metrics: default-metrics.toml for oracledb_exporter

需要注意17136模版中在頁頭定義了group(group)、數據庫ip(oracle_ip)、數據庫實例(oracle_instance)信息,所以在配置文件中就必須定義這些內容。如果添加了多個targets,但每個targets都沒有定義group(group)、數據庫ip(oracle_ip)、數據庫實例(oracle_instance)信息,就會導致在grafana界面上無法選擇對應目標targets的監控信息。所以用17136 json模版,就必須添加。下圖是17136模版作者的說明

?? ? ? ? ? ? ??

二、將儀表盤添加到Grafana上:Dashboards—New—Import—點擊“Upload dashboard JSON file”

Name:定義名稱,最好定義為主機ip加用途

Prometheus:選擇prometheus源,Prometheus監控源(ip:110.120.100.21:9090)

....

然后import

?? ? ? ? ? ??

三、儀表盤展示:Dashboards—查看到已經定義好的儀表盤,并且數據源是prometheus監控,點擊進去

儀表盤Name:Oracle數據庫監控
數據源Name:prometheus監控,Prometheus監控源(ip:110.120.100.21:9090)

JOB:這里其實就是當時已經在配置prometheus.yml時,定義的job_name,也就是說Grafana會自動識別到。

group:這里其實就是當時已經在配置prometheus.yml時,定義的group,也就是說Grafana會自動識別到

數據庫IP:這里其實就是當時已經在配置prometheus.yml時,定義的oracle_ip,也就是說Grafana會自動識別到

數據庫實例:這里其實就是當時已經在配置prometheus.yml時,定義的oracle_instance,也就是說Grafana會自動識別到

? ? 好了!現在你的Oracle數據庫已經在Prometheus和Grafana的守護下了,監控數據一目了然,運維效率直接起飛~ �?

? ? 下次遇到性能波動,再也不用“盲猜”啦,Grafana面板分分鐘給你答案!📊👀

? ? 祝你的數據庫永遠健康,查詢秒級響應,告警欄空空如也~ �🪀

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

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

相關文章

【數據倉庫面試題合集③】實時數倉建模思路與實踐詳解

實時數據倉庫已經成為各大企業構建核心指標監控與業務實時洞察的基礎能力。面試中,關于實時建模的題目頻繁出現,尤其聚焦于建模思路、寬表設計、狀態管理、亂序處理等方面。本文整理典型題目及答題思路,幫助你應對相關考察。 一、建模原則與數倉分層認知 1. 實時數倉與離線…

鴻蒙PC操作系統:從Linux到自研微內核的蛻變

鴻蒙PC操作系統是否基于Linux內核,需要結合其技術架構、發展階段和官方聲明綜合分析。以下從多個角度展開論述: 一、鴻蒙操作系統的多內核架構設計 多內核混合架構 根據資料,鴻蒙操作系統(HarmonyOS)采用分層多內核架構,內核層包含Linux內核、LiteOS-m內核、LiteOS-a內核…

LabVIEW數據庫使用說明

介紹LabVIEW如何在數據庫中插入記錄以及執行 SQL 查詢&#xff0c;適用于對數據庫進行數據管理和操作的場景。借助 Database Connectivity Toolkit&#xff0c;可便捷地與指定數據庫交互。 各 VI 功能詳述 左側 VI 功能概述&#xff1a;實現向數據庫表中插入數據的操作。當輸入…

【docker】--docker file編寫教程

文章目錄 構建docker file 鏡像常用命令速查表一、基礎指令&#xff08;指定鏡像和執行命令&#xff09;二、構建上下文管理三、設置鏡像內部環境四、容器運行配置五、多階段構建&#xff08;可選進階&#xff09; 構建docker file 鏡像 # -f 指定dockerfile # -t 鏡像名和tag…

WeakAuras Lua Script <BiaoGe>

WeakAuras Lua Script <BiaoGe> 表格拍賣插件WA字符串 表格字符串代碼&#xff1a; !WA:2!S3xA3XXXrcoE2VH9l7ZFy)C969PvDpSrRgaeuhljFlUiiSWbxaqXDx(4RDd0vtulB0fMUQMhwMZJsAO5HenLnf1LPSUT4iBrjRzSepL(pS)e2bDdWp5)cBEvzLhrMvvnAkj7zWJeO7mJ8kYiJmYiImYF0b(XR)JR9JRD…

虛幻引擎5-Unreal Engine筆記之什么時候新建GameMode,什么時候新建關卡?

虛幻引擎5-Unreal Engine筆記之什么時候新建GameMode,什么時候新建關卡&#xff1f; code review! 參考筆記&#xff1a; 1.虛幻引擎5-Unreal Engine筆記之GameMode、關卡&#xff08;Level&#xff09; 和 關卡藍圖&#xff08;Level Blueprint&#xff09;的關系 2.虛幻引擎…

開源模型應用落地-模型上下文協議(MCP)-Resource Template-資源模板的使用邏輯(六)

一、前言 在數字化進程加速的今天,如何高效管理動態資源已成為開發者們的核心課題。Resource Template(資源模板)作為Model Context Protocol(MCP)中的關鍵機制,正通過參數化設計重新定義資源調用的邊界——它不僅是靜態數據的容器,更是動態上下文生成的引擎。與傳統的R…

uniapp小程序獲取手機設備安全距離

utils.js let systemInfo null;export const getSystemInfo () > {if (!systemInfo) {systemInfo uni.getSystemInfoSync();// 補充安全區域默認值systemInfo.safeAreaInsets systemInfo.safeAreaInsets || {top: 0,bottom: 0,left: 0,right: 0};// 確保statusBarHei…

【線下沙龍】NineData x Apache Doris x 阿里云聯合舉辦數據庫技術Meetup,5月24日深圳見!

5月24日下午&#xff0c;NineData 將聯合 Apache Doris、阿里云一起&#xff0c;在深圳舉辦數據庫技術Meetup。本次技術沙龍聚焦「數據實時分析」與「數據同步遷移」 兩大核心領域&#xff0c;針對企業數據戰略中的痛點&#xff0c;特邀行業資深技術大咖&#xff0c;結合多年技…

企業網站架構部署與優化 --web技術與nginx網站環境部署

一、Web 基礎 本節將介紹Web 基礎知識,包括域名的概念、DNS 原理、靜態網頁和動態網頁的 相關知識。 1、域名和DNS 1.1、域名的概念 網絡是基于TCP/IP 協議進行通信和連接的&#xff0c;每一臺主機都有一個唯一的標識(固定的IP 地址),用以區別在網絡上成千上萬個用戶和計算機。…

java實現poi-ooxml導出Excel的功能

文章目錄 1. 添加poi-ooxml依賴2. Excel導出工具類3.核心邏輯說明4.擴展建議5.HSSF、XSSF、SXSSF 的核心原則和場景建議&#xff0c;幫助你在不同需求下快速決策&#xff1a; 以下是一個基于 Apache POI 實現的簡單、通用的Java導出Excel工具類&#xff0c;代碼邏輯清晰且注釋詳…

Nginx端口telnet不通排查指南

nginx已經配置server及端口20002&#xff0c;telnet不通&#xff1a;telnet 127.0.0.1 20002 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused 一、檢查 systemctl status nginx.service nginx: [emerg] bind() to 0.0.0.0:20002 failed (13…

【RabbitMQ】消息丟失問題排查與解決

RabbitMQ 消息丟失是一個常見的問題&#xff0c;可能發生在消息的生產、傳輸、消費或 Broker 端等多個環節。消息丟失的常見原因及對應的解決方案&#xff1a; 一、消息丟失的常見原因 1. 生產端&#xff08;Producer&#xff09;原因 (1) 消息未持久化 原因&#xff1a;生產…

docker默認存儲遷移

在容器化場景下默認存儲路徑為&#xff08;/var/lib/docker&#xff09;大多數平臺根目錄不支持系統盤擴容&#xff0c;會有空間不足風險隱患&#xff0c;因未配置持久化存儲導致容器數據丟失。以遷移Docker存儲路徑至大容量/data目錄說明 一、停止容器 systemctl stop docke…

【Golang筆記02】函數、方法、泛型、接口學習筆記

Golang筆記02&#xff1a;函數、方法、泛型、接口學習筆記 一、進階學習 1.1、函數 go中的函數使用func關鍵字進行定義&#xff0c;go程序的入口函數叫做&#xff1a;main&#xff0c;并且必須是屬于main包里面。 1.1.1、定義函數 &#xff08;1&#xff09;普通函數 go中…

LLM筆記(九)KV緩存調研

KV 緩存 (Key-Value Cache) 技術詳解 KV 緩存&#xff08;Key-Value Cache&#xff09;是在 Transformer 模型&#xff08;尤其是 Decoder-Only 架構或 Encoder-Decoder 架構的 Decoder 部分&#xff09;進行自回歸 (auto-regressive) 推理生成序列時&#xff0c;一種至關重要…

【Boost搜索引擎】構建Boost站內搜索引擎實踐

目錄 1. 搜索引擎的相關宏觀原理 2. 正排索引 vs 倒排索引 - 搜索引擎具體原理 3. 編寫數據去標簽與數據清洗的模塊 Parser 去標簽 編寫parser 用boost枚舉文件名 解析html 提取title ?編輯 去標簽 構建URL 將解析內容寫入文件中 4. 編寫建立索引的模塊 Index 建…

LeetCode 熱題 100 1.兩數之和

目錄 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路&#xff1a; 思路一暴力遍歷&#xff1a; 代碼&#xff1a; 暴力遍歷Java代碼&#xff1a; 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 1. 兩數之和 - 力扣&#xff08;LeetC…

基于LSTM-GARCH混合模型的黃金價格波動率預測:信用降級事件沖擊評估

摘要&#xff1a;本文構建多維度量化分析框架&#xff0c;對近期黃金市場波動進行技術解構。通過主權信用評級調整、地緣風險及宏觀經濟數據等公開信息源&#xff0c;運用統計學習模型解析市場驅動因素&#xff0c;避免主觀預判。文中所有技術分析均基于歷史數據回測&#xff0…

分布式與集群:概念、區別與協同

分布式與集群:概念、區別與協同 在分布式系統與云計算領域,分布式(Distributed)和集群(Cluster)是兩個高頻出現的核心概念。它們常被混淆,但本質上屬于不同維度的設計思想。本文將從定義、分類、實際應用及協同關系四個層面,結合 Dubbo、Git、Hadoop 等典型案例,系統…