Grafana 與 InfluxDB 可視化深度集成(二)

四、案例實操:以服務器性能監控為例

4.1 模擬數據生成

為了更直觀地展示 Grafana 與 InfluxDB 的集成效果,我們通過 Python 腳本模擬生成服務器性能相關的時間序列數據。以下是一個簡單的 Python 腳本示例,用于生成 CPU 使用率和內存使用量數據:

 

import random

import time

from datetime import datetime

# 模擬生成CPU使用率數據

def generate_cpu_usage():

return round(random.uniform(10, 90), 2)

# 模擬生成內存使用量數據(單位:MB)

def generate_memory_usage():

return round(random.uniform(500, 1500), 2)

while True:

cpu_usage = generate_cpu_usage()

memory_usage = generate_memory_usage()

timestamp = int(time.time() * 1000) # 毫秒級時間戳

print(f"cpu_usage,host=server1 value={cpu_usage} {timestamp}")

print(f"memory_usage,host=server1 value={memory_usage} {timestamp}")

time.sleep(5) # 每5秒生成一次數據

在上述腳本中,generate_cpu_usage函數使用random.uniform方法生成 10 到 90 之間的隨機浮點數,模擬服務器的 CPU 使用率;generate_memory_usage函數生成 500 到 1500 之間的隨機浮點數,模擬內存使用量。通過while True循環和time.sleep(5)語句,每 5 秒生成一組數據,并打印出符合 InfluxDB 數據格式的字符串,包含測量值(如cpu_usage、memory_usage)、標簽(如host=server1)、字段值(如 CPU 使用率、內存使用量)和時間戳。這樣的模擬數據生成方式可以方便地用于測試和演示 InfluxDB 的數據寫入以及 Grafana 的數據可視化功能。

4.2 數據寫入 InfluxDB

使用 InfluxDB 的命令行工具或客戶端庫,將模擬生成的數據寫入 InfluxDB。以下是使用 Python 的influxdb庫進行數據寫入的示例代碼:

 

from influxdb import InfluxDBClient

# 連接到InfluxDB

client = InfluxDBClient('localhost', 8086, 'root', 'root','mydb')

# 模擬生成并寫入數據

while True:

cpu_usage = generate_cpu_usage()

memory_usage = generate_memory_usage()

timestamp = int(time.time() * 1000) # 毫秒級時間戳

json_body = [

{

"measurement": "cpu_usage",

"tags": {

"host": "server1"

},

"time": timestamp,

"fields": {

"value": cpu_usage

}

},

{

"measurement": "memory_usage",

"tags": {

"host": "server1"

},

"time": timestamp,

"fields": {

"value": memory_usage

}

}

]

client.write_points(json_body)

print(f"Data written: cpu_usage={cpu_usage}, memory_usage={memory_usage}")

time.sleep(5) # 每5秒寫入一次數據

在這個示例中,首先使用InfluxDBClient類連接到本地的 InfluxDB 服務器,指定服務器地址為localhost,端口為 8086,用戶名和密碼均為root,數據庫名為mydb。然后,在循環中,每次生成新的 CPU 使用率和內存使用量數據,并創建一個符合 InfluxDB 數據格式的 JSON 體json_body。這個 JSON 體包含了測量值(measurement),如cpu_usage和memory_usage;標簽(tags),這里只有host標簽,值為server1;時間(time),以毫秒級時間戳表示;以及字段(fields),即實際的性能指標值,如value字段存儲 CPU 使用率和內存使用量。最后,使用client.write_points(json_body)方法將數據寫入 InfluxDB,并通過time.sleep(5)實現每 5 秒寫入一次數據,同時打印出寫入的數據,以便確認數據寫入操作的執行情況。這樣,模擬生成的服務器性能數據就能夠持續、準確地存儲到 InfluxDB 中,為后續的可視化分析提供數據支持。

4.3 Grafana 可視化展示

在 Grafana 中創建對應的儀表板和面板,展示服務器性能數據的折線圖、柱狀圖等,實現實時監控和趨勢分析。具體步驟如下:

  1. 創建儀表板:點擊 Grafana 界面左側菜單欄中的加號圖標 “+”,選擇 “Dashboard” 選項,創建一個新的儀表板,命名為 “Server Performance Monitoring”。
  1. 添加 CPU 使用率面板:在儀表板中點擊 “Add new panel” 按鈕,進入面板編輯界面。在 “Visualization” 選項卡中選擇 “Graph”(折線圖)作為面板類型。在 “Queries” 選項卡中,選擇之前配置的 InfluxDB 數據源,編寫查詢語句以獲取 CPU 使用率數據:
 

SELECT mean("value") FROM "cpu_usage" WHERE "host" ='server1' AND time > now() - 1h GROUP BY time(1m)

上述查詢語句表示從cpu_usage測量值中,篩選出host為server1,且時間在過去 1 小時內的數據,并按每分鐘進行分組,計算每組的平均值。在 “Visualization” 選項卡中,可以進一步設置折線圖的顏色、線條粗細、數據點樣式等,使圖表更加美觀和易于閱讀。例如,將折線顏色設置為藍色,線條粗細設置為 2 像素,數據點設置為圓形。在 “General” 選項卡中,設置面板標題為 “CPU Usage in the Past Hour”,并添加一些描述信息,如 “展示過去 1 小時內服務器的 CPU 使用率平均值,每分鐘統計一次”,方便用戶理解面板內容。

3. 添加內存使用量面板:再次點擊 “Add new panel” 按鈕,創建一個新面板用于展示內存使用量。選擇 “Bar Chart”(柱狀圖)作為面板類型。在 “Queries” 選項卡中,選擇 InfluxDB 數據源,編寫查詢語句:

 

SELECT mean("value") FROM "memory_usage" WHERE "host" ='server1' AND time > now() - 1h GROUP BY time(5m)

此查詢語句從memory_usage測量值中,篩選出host為server1,時間在過去 1 小時內的數據,按每 5 分鐘進行分組,并計算每組的平均值。在 “Visualization” 選項卡中,設置柱狀圖的顏色、柱子寬度等。比如,將柱子顏色設置為綠色,寬度設置為 80%。在 “General” 選項卡中,設置面板標題為 “Memory Usage in the Past Hour”,描述為 “展示過去 1 小時內服務器的內存使用量平均值,每 5 分鐘統計一次”。

4. 調整儀表板布局:通過拖動面板,將 CPU 使用率折線圖和內存使用量柱狀圖放置在合適的位置,使儀表板布局合理、美觀。可以將相關的面板放在相鄰位置,方便對比和分析數據。例如,將 CPU 使用率面板放在上方,內存使用量面板放在下方,這樣用戶在查看儀表板時,可以更直觀地同時觀察到兩個性能指標的變化情況。

5. 保存儀表板:完成所有面板配置和布局調整后,點擊儀表板頁面右上角的 “Save dashboard” 按鈕,保存儀表板設置。此時,在 Grafana 的儀表板中,就可以實時看到服務器 CPU 使用率和內存使用量的可視化展示,通過折線圖和柱狀圖的變化,清晰地了解服務器性能的實時狀態和趨勢。

五、高級應用與優化

5.1 自定義查詢與表達式

在 Grafana 與 InfluxDB 集成的環境中,深入掌握 InfluxQL 或 Flux 查詢語言的高級應用,對于實現復雜的數據過濾、聚合計算等操作至關重要。以 InfluxQL 為例,在服務器性能監控場景下,若要查詢特定時間段內所有服務器 CPU 使用率的最大值、最小值和平均值,可使用如下查詢語句:

 

SELECT max("usage"), min("usage"), mean("usage")

FROM "cpu_usage"

WHERE "host" != '' AND time >= '2024-10-01T00:00:00Z' AND time <= '2024-10-02T00:00:00Z'

GROUP BY "host"

在上述查詢中,通過WHERE子句限定了時間范圍為 2024 年 10 月 1 日 0 點至 10 月 2 日 0 點,且過濾出了host不為空的數據;GROUP BY子句按照host進行分組,以便分別統計每臺服務器的 CPU 使用率指標;max("usage")、min("usage")和mean("usage")分別用于計算每組數據中的最大值、最小值和平均值。

對于更復雜的數據過濾,如查詢 CPU 使用率超過 80% 且內存使用率超過 70% 的服務器記錄,可使用如下查詢:

 

SELECT *

FROM "server_performance"

WHERE "cpu_usage" > 80 AND "memory_usage" > 70

此查詢從server_performance測量值中篩選出滿足 CPU 使用率和內存使用率條件的數據,幫助運維人員快速定位性能異常的服務器。

在 Flux 語言中,若要實現類似的功能,查詢過去 1 小時內所有服務器的平均 CPU 使用率,可使用如下表達式:

 

from(bucket: "mydb")

|> range(start: -1h)

|> filter(fn: (r) => r._measurement == "cpu_usage")

|> group(columns: ["host"])

|> aggregateWindow(every: 1m, fn: mean)

在這個 Flux 表達式中,from(bucket: "mydb")指定了數據源為mydb存儲桶;range(start: -1h)設置時間范圍為過去 1 小時;filter(fn: (r) => r._measurement == "cpu_usage")用于過濾出measurement為cpu_usage的數據;group(columns: ["host"])按host進行分組;aggregateWindow(every: 1m, fn: mean)則按每分鐘計算每組數據的平均值。

再如,若要查詢過去 24 小時內,每個服務器每 5 分鐘的磁盤 I/O 讀寫總量,并按讀寫總量降序排列,Flux 表達式如下:

 

from(bucket: "mydb")

|> range(start: -24h)

|> filter(fn: (r) => r._measurement == "disk_io")

|> group(columns: ["host"])

|> aggregateWindow(every: 5m, fn: sum)

|> sort(columns: ["_value"], desc: true)

此表達式通過sum函數計算磁盤 I/O 讀寫總量,sort函數按_value(即讀寫總量)降序排列,方便運維人員快速了解磁盤 I/O 負載較高的服務器及其負載情況。

5.2 告警設置

在 Grafana 中基于 InfluxDB 數據設置告警規則,能夠及時發現服務器性能指標的異常情況,保障系統的穩定運行。以服務器性能監控為例,當服務器性能指標超出閾值時發送通知是非常關鍵的。

在 Grafana 的儀表板中,找到需要設置告警的面板,點擊面板標題右側的三個點,選擇 “Edit” 進入面板編輯模式。在編輯模式下,切換到 “Alert” 選項卡,開始配置告警規則。首先,設置告警名稱,如 “Server CPU Usage Alert”,以便于識別和管理告警。接著,定義觸發條件,即設置閾值。例如,當 CPU 使用率在過去 5 分鐘內的平均值持續超過 80% 時觸發告警。在 “Condition” 下拉菜單中選擇 “Mean”(表示計算平均值),在右側的輸入框中輸入 “80”,并選擇時間范圍為 “5m”。這樣,當 CPU 使用率在連續 5 分鐘內的平均值都高于 80% 時,告警條件將被觸發。

設置告警通知方式。點擊 “Notifications” 選項,添加通知渠道。Grafana 支持多種通知方式,如郵件、Webhook、釘釘、Slack 等。以郵件通知為例,在 “Type” 中選擇 “Email”,然后填寫接收告警郵件的郵箱地址。如果需要發送更詳細的告警信息,可以在 “Message” 文本框中自定義告警內容,如 “Server [host] CPU usage has been above 80% for the past 5 minutes. Current average usage is [value]%.”,其中[host]和[value]會在告警觸發時被實際的服務器主機名和 CPU 使用率值替換。

配置告警的嚴重級別和其他高級選項。在 “Severity” 下拉菜單中選擇告警的嚴重程度,如 “Critical”(嚴重)、“Warning”(警告)等,以便根據不同的嚴重級別采取不同的處理措施。還可以設置告警的重復間隔,即每隔多長時間重復發送一次告警通知,避免頻繁發送相同的告警信息給用戶造成干擾。例如,設置重復間隔為 “15m”,表示如果告警條件持續滿足,每 15 分鐘發送一次告警通知。完成所有配置后,點擊 “Save” 按鈕保存告警規則,此時 Grafana 將開始實時監控 InfluxDB 中的數據,一旦觸發告警條件,將按照設置的通知方式發送告警通知。

5.3 性能優化

提升 Grafana 與 InfluxDB 集成系統的性能,可從數據庫配置、查詢優化、緩存設置等多個方面著手。在數據庫配置方面,合理調整 InfluxDB 的存儲配置參數至關重要。例如,優化數據保留策略(Retention Policy),根據實際業務需求,精準設置數據的保留時間。對于一些實時性要求高但歷史數據價值較低的監控數據,如服務器實時性能指標,可將保留時間設置為較短,如一周或一個月;而對于一些重要的歷史數據,如金融交易數據或長期的業務統計數據,則可設置較長的保留時間,甚至永久保留。通過這種方式,既能確保重要數據的完整性,又能有效節省磁盤空間,提高數據庫的存儲效率。同時,調整 InfluxDB 的寫入緩存大小,根據服務器的內存資源和數據寫入負載情況,適當增大寫入緩存,可減少磁盤 I/O 操作的次數,從而顯著提升數據寫入性能。例如,在內存充足的情況下,將寫入緩存大小從默認的 100MB 調整為 500MB,可使數據寫入更加高效,尤其適用于高并發寫入的場景。

查詢優化也是提升系統性能的關鍵環節。在編寫 InfluxDB 查詢語句時,應避免全表掃描,盡量使用索引來提高查詢效率。在查詢服務器 CPU 使用率時,若數據中包含host標簽,可通過WHERE "host" ='server1'這樣的條件語句利用host標簽的索引,快速定位到特定服務器的數據,而不是掃描整個數據庫表。對于復雜的查詢,可使用連續查詢(Continuous Query)預先計算并存儲聚合結果,減少實時查詢時的計算量。比如,對于每天統計一次的服務器平均 CPU 使用率,可以創建一個連續查詢,每天定時計算并存儲結果,當需要查詢時,直接獲取預先計算好的結果,而無需在查詢時進行實時計算,大大縮短了查詢響應時間。

合理設置緩存能有效減少 Grafana 與 InfluxDB 之間的數據傳輸和查詢次數,提高系統的響應速度。Grafana 自身提供了緩存機制,可配置面板緩存和儀表盤緩存。通過設置面板緩存,將常用面板的數據緩存起來,在一定時間內,當用戶再次訪問該面板時,直接從緩存中獲取數據,而無需重新查詢 InfluxDB,減少了數據傳輸和查詢的開銷。例如,將面板緩存時間設置為 5 分鐘,對于一些實時性要求不是特別高的監控面板,如每日業務統計面板,5 分鐘內的數據變化可能不大,通過緩存可以顯著提高訪問速度。還可以配置 InfluxDB 的查詢緩存,InfluxDB 會緩存查詢結果,當相同的查詢再次發起時,直接返回緩存中的結果,避免重復執行查詢操作,提高查詢性能。在高并發查詢的場景下,查詢緩存能夠極大地減輕數據庫的負載,提高系統的整體性能。

六、總結與展望

Grafana 與 InfluxDB 的深度集成,為數據可視化和分析帶來了強大的解決方案。通過詳細的安裝步驟、精準的集成配置以及豐富的案例實操,我們成功搭建了一個高效的服務器性能監控系統,實現了數據的實時采集、存儲與直觀展示。在高級應用與優化部分,自定義查詢與表達式讓我們能夠根據具體需求靈活處理數據,告警設置為系統的穩定運行提供了有力保障,性能優化則進一步提升了系統的整體效能。

展望未來,隨著物聯網、大數據等技術的持續發展,數據量將呈指數級增長,Grafana 與 InfluxDB 的集成在更多領域的應用前景將更加廣闊。在智能工廠中,二者的集成可用于實時監控生產設備的運行狀態,預測設備故障,實現預防性維護,提高生產效率和產品質量;在城市交通管理中,能夠整合交通流量、車輛位置等數據,實現智能交通調度,緩解交通擁堵。隨著人工智能和機器學習技術的融入,它們將能夠對數據進行更深入的分析和預測,為決策提供更具前瞻性的支持。相信在未來,Grafana 與 InfluxDB 的集成將在更多領域發揮關鍵作用,助力各行業實現數字化轉型和智能化發展。

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

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

相關文章

.net印刷線路板進銷存PCB材料ERP財務軟件庫存貿易生產企業管理系統

# 印刷線路板進銷存PCB材料ERP財務軟件庫存貿易生產企業管理系統 # 開發背景 本軟件原為給蘇州某企業開發的pcb ERP管理軟件&#xff0c;后來在2021年深圳某pcb 板材公司買了我們的軟件然后在此基礎上按他行業的需求多次修改后的軟件&#xff0c;適合pcb板材行業使用。 # 功能…

基于飛算JavaAI的可視化數據分析集成系統項目實踐:從需求到落地的全流程解析

引言&#xff1a;為什么需要“可視化AI”的數據分析系統&#xff1f; 在數字化轉型浪潮中&#xff0c;企業/團隊每天產生海量數據&#xff08;如用戶行為日志、銷售記錄、設備傳感器數據等&#xff09;&#xff0c;但傳統數據分析存在三大痛點&#xff1a; 技術門檻高&#xff…

MqSQL中的《快照讀》和《當前讀》

目錄 1、MySQL讀取定義 1.1、鎖的分類 1.2、快照讀與當前讀 1.3、使用場景 1.4、區別 2、實現機制 2.1、實現原理 2.2、隔離級別和快照聯系 1、隔離級別 2、快照讀 2.3、快照何時生成 3、SQL場景實現 3.1、快照讀 3.2、當前讀 4、鎖的細節&#xff08;與當前讀相…

【Docker項目實戰】使用Docker部署Notepad輕量級記事本

【Docker項目實戰】使用Docker部署Notepad輕量級記事本一、 Notepad介紹1.1 Notepad簡介1.2 Notepad特點1.3 主要使用場景二、本次實踐規劃2.1 本地環境規劃2.2 本次實踐介紹三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本四、下載Note…

開疆智能ModbusTCP轉Ethernet網關連接FBOX串口服務器配置案例

本案例是串口服務器通過串口采集第三方設備數據轉成ModbusTCP的服務器后歐姆龍PLC通過Ethernet連接到網關&#xff0c;讀取采集到的數據。具體配置過程如下。配置過程&#xff1a;Fbox做從站FBox采集PLC數據&#xff0c;通過Modbus TCP Server/Modbus RTU Server協議配置地址映…

Vue中的數據渲染【4】

目錄1.頁面樣式綁定&#xff1a;1.概述&#xff1a; 2.綁定方式&#xff1a;1.通過類名綁定&#xff1a;1.通過動態類名綁定&#xff1a;&#xff08;&#xff1a;class&#xff09;2.通過類名數組綁定&#xff1a;3.通過類名對象進行綁定&#xff1a;2.內聯樣式綁定&#xff1…

LeeCode 39.組合總和

給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target &#xff0c;找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 &#xff0c;并以列表形式返回。你可以按 任意順序 返回這些組合。candidates 中的 同一個 數字可以 無限制重復被選取 。如果…

基于Python3.10.6與jieba庫的中文分詞模型接口在Windows Server 2022上的實現與部署教程

該教程詳細闡述了在Windows Server 2022上基于Python3.10.6與jieba庫實現并部署中文分詞模型接口的完整流程&#xff0c;涵蓋技術棧&#xff08;Python3.10.6、jieba、Flask、Waitress、Nginx、NSSM等&#xff09;與環境準備&#xff08;Python安裝、虛擬環境配置、依賴包安裝及…

java基礎(九)sql基礎及索引

一、NoSQL 和 SQL 數據庫的區別1. 基本概念SQL 數據庫&#xff08;關系型數據庫&#xff09; 代表產品&#xff1a;SQL Server, Oracle, MySQL (開源), PostgreSQL (開源)。 存儲方式&#xff1a;結構化數據&#xff0c;邏輯上以二維表&#xff08;行 & 列&#xff09;形式…

ffmpeg-調整視頻分辨率

ffmpeg -i input.mp4 -vf scale1280:720 output_1280x720.mp4-i input.mp4: 指定輸入視頻文件。-vf scale1280:720: 使用 scale 視頻濾鏡&#xff0c;將視頻寬度設置為 1280 像素&#xff0c;高度設置為 720 像素。output_1280x720.mp4: 指定輸出視頻文件。 16&#xff1a;9 常…

前端vue3+后端spring boot導出數據

有個項目需要提供數據導出功能。 該項目前端用vue3編寫&#xff0c;后端是spring boot 2&#xff0c;數據庫是mysql8。 工作流程是&#xff1a;1&#xff09;前端請求數據導出 2&#xff09;后端接到請求后&#xff0c;開啟一個數據導出線程&#xff0c;然后立刻返回信息到前端…

基于RK3588的微電網協調控制器:實現分布式能源的智能調控與優化運行

微電網協調控制器方案通過集成先進算法和實時數據技術&#xff0c;實現分布式能源的光伏、儲能、風電等設備的智能協調與優化運行?12。關鍵功能包括&#xff1a;?協同優化調度?&#xff1a;采用模型預測控制&#xff08;MPC&#xff09;動態調整光伏出力、儲能充放電策略和負…

機器學習——TF-IDF文本特征提取評估權重 + Jieba 庫進行分詞(以《紅樓夢》為例)

使用 Jieba 庫進行 TF-IDF 關鍵詞提取&#xff08;以《紅樓夢》為例&#xff09;在中文文本分析中&#xff0c;TF-IDF&#xff08;Term Frequency - Inverse Document Frequency&#xff09; 是最常用的關鍵詞提取方法之一。它通過評估詞在單個文檔中的出現頻率和在所有文檔中的…

一周學會Matplotlib3 Python 數據可視化-多子圖及布局實現

鋒哥原創的Matplotlib3 Python數據可視化視頻教程&#xff1a; 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib&#xff0c;學習Matplotlib圖形參數基本設置&…

Spark執行計劃與UI分析

文章目錄1.Spark任務階段劃分1.1 job&#xff0c;stage與task1.2 job劃分1.3 stage和task劃分2.任務執行時機3.task內部數據存儲與流動4.根據sparkUI了解Spark執行計劃4.1查看job和stage4.2 查看DAG圖4.3查看task1.Spark任務階段劃分 1.1 job&#xff0c;stage與task 首先根據…

16-docker的容器監控方案-prometheus實戰篇

文章目錄一.前置知識1.監控與報警2.監控系統的設計3.監控系統的分類二、prometheus概述1.什么是prometheus2.prometheus的歷史3.為什么要學習prometheus4.prometheus的使用場景5.prometheus的宏觀架構圖6.prometheus軟件下載地址三、部署prometheus server監控軟件1.同步集群時…

集成電路學習:什么是Image Processing圖像處理

Image Processing,即圖像處理,是計算機視覺、人工智能、多媒體等領域的重要基礎。它利用計算機對圖像進行分析、加工和處理,以達到預期目的的技術。以下是對圖像處理的詳細解析: 一、定義與分類 定義: 圖像處理是指用計算機對圖像進行分析,以達到所需結果的技術,又稱…

基于Android的隨身小管家APP的設計與實現/基于SSM框架的財務管理系統/android Studio/java/原生開發

基于Android的隨身小管家APP的設計與實現/基于SSM框架/android Studio/java/原生開發

Web 開發 16

1 在 JavaScript&#xff08;包括 JSX&#xff09;中&#xff0c;函數體的寫法和返回值處理在 JavaScript&#xff08;包括 JSX&#xff09;中&#xff0c;函數體的寫法和返回值處理確實有一些簡潔的語法規則&#xff0c;尤其是在箭頭函數中。這些規則常常讓人混淆&#xff0c;…

超高車輛碰撞預警系統如何幫助提升城市立交隧道安全?

超高車輛帶來的安全隱患立交橋和隧道的設計通常基于常規車輛的高度標準。然而&#xff0c;隨著重型運輸業和超高貨車的增加&#xff0c;很多超高車輛會誤入這些限高區域&#xff0c;造成潛在的安全隱患。超高車輛與立交橋梁或隧道頂蓋發生碰撞時&#xff0c;可能導致結構受損&a…