关于监控服务器指标、CPU、内存、警报的一些解决方案
文章目錄
- 關于監控服務器指標、CPU、內存、警報的一些解決方案
- `Prometheus` + `Grafana` 配置 `IRIS` / `Caché` 監控服務器
- `Prometheus`
- 簡介
- 特點
- 架構圖
- `Grafana`
- 簡介
- 特點
- 配置流程
- 自定義`Prometheus`接口定義
- 配置 `Exporter` 監控服務器系統資源
- 簡介
- 配置流程
- 使用 `Alertmanager`報警
- 簡介
- 配置流程
- 基于`M`實現監控服務器,并用郵件報警
- 解析`Prometheus`數據接口信息
- 使用嵌入式`Python`方式獲取系統`CPU`、內存等
- `python`模塊之`psutil`詳解
- `CPU`相關
- `Memory`內存相關
- `Disk`相關
- `Network`相關
- `Process`相關
- 通過嵌入式`Python`調用`psutil`庫
- 使用郵件發送報警信息
- 使用`M`發送郵件發送消息
- 通過配置文件`csv`文件,來獲取維護指標,進行郵件報警。
- 總結
- 思考
- 附
關于監控服務器指標、CPU、內存、警報的一些解決方案
本文章主要介紹以下幾個章節內容:
- Prometheus + Grafana 配置 IRIS / Caché 監控服務器
- 自定義Prometheus接口定義 - 配置 Caché 監控服務
- 配置 Exporter 監控服務器系統資源
- 使用 Alertmanager報警
- 基于M實現監控服務器,并用郵件報警
- 解析Prometheus數據接口信息
- 使用嵌入式Python方式獲取系統CPU、內存等
- 使用郵件發送報警信息
Prometheus + Grafana 配置 IRIS / Caché 監控服務器
首先我們介紹一下如何用IRIS結合Prometheus + Grafana的使用,在介紹如何配置之前我們先了簡單了解一下工具。
Prometheus
簡介
Prometheus是一個最初在SoundCloud上構建的開源系統監視和警報工具包 。 自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有一個非常活躍的開發人員和用戶社區。它現在是一個獨立的開源項目,可以獨立于任何公司進行維護。為了強調這一點,并澄清項目的治理結構,Prometheus 于2016年加入 云計算本地計算基金會,作為繼Kubernetes之后的第二個托管項目。
特點
- 具有由度量名稱和鍵/值對標識的時間序列數據的多維數據模型。
- 一個靈活的查詢語言 來利用這一維度。
- 不依賴分布式存儲,單個服務器節點是自治的。
- 時間序列收集通過 HTTP 上的拉模型發生。
- 通過中間網關支持推送時間序列。
- 通過服務發現或靜態配置發現目標。
- 多種圖形和儀表板支持模式。
架構圖
Grafana
簡介
Grafana是一個跨平臺的開源的度量分析和可視化工具,可以通過將采集的數據查詢然后可視化的展示,并及時通知。
特點
- 展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式。
- 支持多種數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等。
- 通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算并發送通知,在數據達到閾值時通過Slack、PagerDuty等獲得通知。
- 混合展示:在同一圖表中混合使用不同的數據源,可以基于每個查詢指定數據源,甚至自定義數據源。
- 注釋:使用來自不同數據源的豐富事件注釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記。
- 過濾器:Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用于使用該數據源的所有查詢。
配置流程
- 下載地址:https://prometheus.io/download/
- 地址 - http://localhost:9090/
- 這里以我的私有服務器地址為例:https://8.142.29.250:2443/api/monitor/metrics。
輸入以下代碼:
- job_name: "250-IRIS"metrics_path: /api/monitor/metricsscheme: httpstls_config:insecure_skip_verify: truestatic_configs:- targets: ['8.142.29.250:2443']其中:
- job_name - 服務器名稱。
- metrics_path - 監控服務器地址路徑。
- scheme - 網絡協議。
- tls_config - insecure_skip_verify - 過濾完成驗證。
- static_configs - targets - IP端口號。
- iris_cpu_usage - 代表CPU使用率。
說明:這里監控指標為服務器接口里的具體指標,輸入接口地址具體查看。
- 下載地址:https://grafana.com/grafana/download?
- garafana默認端口為3030
- 訪問地址:http://localhost:3000/
- 默認用戶名密碼admin/admin
- Name - Prometheus
- Url - http://localhost:9090
- 點擊Save&test顯示測試成功。
- Title - 修改儀表盤名稱。
- iris_csp_sessions - 會話使用數
- iris_cpu_usage - cpu使用率
- iris_system_alerts - 系統警報數
- iris_process_count - 進程數量
- iris_glo_ref_per_sec - Global每秒引用數量
自定義Prometheus接口定義
那么我們是否可以自定義Prometheus接口呢?
答案肯定是可以的,整好 Caché 沒有自帶的監控服務,所以我們給Caché 自定義個一個監控服務接口。
- 名稱 - /api/metrics
- 命名空間 - 選擇Rest接口類所在命名空間
- 分派類 - M.Metrics
- 基礎儀表盤接口
- 系統使用情況
- 系統監視器統計
- ECP 數據統計
- 磁盤和緩沖區數據統計
- 許可數據統計
- 開放性事務數據統計
- 數據庫情況
- 把所有數據組裝到一起。
- 將數據解析成Prometheus數據格式。
prometheus將所有數據保存為timeseries data,用metric name和label區分,label是在metric name上的更細維度的劃分,其中的每一個實例是由一個float64和timestamp組成,只不過timestamp是隱式加上去的,#HELP代表指標的注釋信息,#TYPE用于定義樣本的類型注釋信息。如下示例:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles. # TYPE go_gc_duration_seconds summary go_gc_duration_seconds{quantile="0"} 0- metrics name - 為go_gc_duration_seconds
- label - 為quantile="0"
- float64 - 為0
- 配置路由
- prometheus格式地址接口:http://localhost:57772/api/metrics/prometheus
- Json格式地址接口:http://localhost:57772/api/metrics/json
配置 Exporter 監控服務器系統資源
- 通過服務器配置Exporter監控服務器的系統信息,例如內存使用情況,CPU使用情況。
簡介
為Prometheus提供監控數據源的應用都可以被成為Exporter,比如Node Exporter則用來提供節點相關的資源使用狀況,而Prometheus從這些不同的Exporter中獲取監控數據,然后可以在諸如Grafana這樣的可視化工具中進行結果的顯示。
廣義上講所有可以向Prometheus提供監控樣本數據的程序都可以被稱為一個Exporter。而Exporter的一個實例稱為target,如下所示,Prometheus通過輪詢的方式定期從這些target中獲取樣本數據。
配置流程
- 下載地址:https://github.com/prometheus-community/windows_exporter/releases
- 地址:http://localhost:9182/metrics
使用 Alertmanager報警
簡介
Alertmanager是一個獨立的告警模塊,接收Prometheus等客戶端發來的警報,之后通過分組、刪除重復等處理,并將它們通過路由發送給正確的接收器。
Prometheus 的報警分為兩部分:
- Prometheus 服務器中的警報規則向警報管理器(Alertmanager)發送警報。
- 警報管理器負責管理這些警報,包括告警信息進行去重,降噪,分組等,并通過豐富的告警通知渠道,如電子郵件、微信、釘釘、Slack等常用溝通工具發出通知。
配置流程
- 下載地址:https://github.com/prometheus/alertmanager/releases
- 端口 - 9093
- 地址 - http://localhost:9093/#/alerts
- global - 全局配置,包括報警解決后的超時時間、SMTP 相關配置、各種渠道通知的 API 地址等等。
- route - 用來設置報警的分發策略,它是一個樹狀結構,按照深度優先從左向右的順序進行匹配。
- receivers - 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式。
- inhibit_rules - 抑制規則配置,當存在與另一組匹配的警報時,抑制規則將禁用與一組匹配的警報(目標)。
- name - 規則名稱,可自己定義。
- alert - 報警名稱,當觸發報警時,會作為郵件標題顯示。
- expr - 報警規則,為 PromQL 表達式驗證特定節點,如上述配置中up{job="250-IRIS"}為驗證job="250-IRIS"是否還活著,如果等于0則啟動報警。
- for - 表示報警狀態為 Pending 后等待 15s 變成 Firing 狀態,一旦變成 Firing 狀態則將報警發送到 AlertManager。
- summary - 報警信息描述。
- 地址:http://localhost:9090/alerts?search=
Prometheus Alert 告警狀態有三種:Inactive、Pending、Firing。
- Inactive - 非活動狀態,表示正在監控,但是還未有任何警報觸發。
- Pending - 表示這個警報將被觸發。由于警報可以被分組、壓抑/抑制或靜默/靜音,所以等待驗證,一旦所有的驗證都通過,則將轉到 Firing 狀態。
- Firing - 將警報發送到AlertManager,將按照配置將警報的發送給所有接收者。一旦警報解除,則將狀態轉到 Inactive,如此循環。
首先發現警報變為Pending狀態。
過了15秒后變為Firing狀態
基于M實現監控服務器,并用郵件報警
解析Prometheus數據接口信息
- 獲取接口信息
- 將接口信息轉為Json格式
- 調用方法。
- 調用自定義Caché接口
- 調用自定義IRIS接口
- 調用自定義Exporter接口
使用嵌入式Python方式獲取系統CPU、內存等
python模塊之psutil詳解
在講嵌入式Python之前我們先了解一下psutil庫
psutil是一個開源切跨平臺的庫,其提供了便利的函數用來獲取才做系統的信息,比如CPU,內存,磁盤,網絡等。此外,psutil還可以用來進行進程管理,包括判斷進程是否存在、獲取進程列表、獲取進程詳細信息等。而且psutil還提供了許多命令行工具提供的功能,包括:ps,top,lsof,netstat,ifconfig, who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。
psutil是一個跨平臺的庫,在官方網站上查到其支持如下操作系統。
- Linux
- Windows
- OSX
- FreeBSD
- OpenBSD
- NetBSD
- Sun Solaris
- AIX
CPU相關
| psutil.cpu_count() | cpu_count(,[logical]):默認返回邏輯CPU的個數,當設置logical的參數為False時,返回物理CPU的個數。 |
| psutil.cpu_percent() | cpu_percent(,[percpu],[interval]):返回CPU的利用率,percpu為True時顯示所有物理核心的利用率,interval不為0時,則阻塞時顯示interval執行的時間內的平均利用率。 |
| psutil.cpu_times() | cpu_times(,[percpu]):以命名元組(namedtuple)的形式返回cpu的時間花費,percpu=True表示獲取每個CPU的時間花費。 |
| psutil.cpu_times_percent() | cpu_times_percent(,[percpu]):功能和cpu_times大致相同,看字面意思就能知道,該函數返回的是耗時比例。 |
| psutil.cpu_stats() | cpu_stats()以命名元組的形式返回CPU的統計信息,包括上下文切換,中斷,軟中斷和系統調用次數。 |
| psutil.cpu_freq() | cpu_freq([percpu]):返回cpu頻率。 |
Memory內存相關
| virtual_memory() | 以命名元組的形式返回內存使用情況,包括總內存,可用內存,內存利用率,buffer和cache等。單位為字節。 |
| swap_memory() | 以命名元組的形式返回swap/memory使用情況,包含swap中頁的換入和換出。 |
Disk相關
| psutil.disk_io_counters() | disk_io_counters([perdisk]):以命名元組的形式返回磁盤io統計信息,包括讀、寫的次數,讀、寫的字節數等。 當perdisk的值為True,則分別列出單個磁盤的統計信息(字典:key為磁盤名稱,value為統計的namedtuple)。 |
| psutil.disk_partitions() | disk_partitions([all=False]):以命名元組的形式返回所有已掛載的磁盤,包含磁盤名稱,掛載點,文件系統類型等信息。 當all等于True時,返回包含/proc等特殊文件系統的掛載信息。 |
| psutil.disk_usage() | disk_usage(path):以命名元組的形式返回path所在磁盤的使用情況,包括磁盤的容量、已經使用的磁盤容量、磁盤的空間利用率等。 |
Network相關
| psutil.net_io_counter([pernic]) | 以命名元組的形式返回當前系統中每塊網卡的網絡io統計信息,包括收發字節數,收發包的數量、出錯的情況和刪包情況。當pernic為True時,則列出所有網卡的統計信息。 |
| psutil.net_connections([kind]) | 以列表的形式返回每個網絡連接的詳細信息(namedtuple)。命名元組包含fd, family, type, laddr, raddr, status, pid等信息。kind表示過濾的連接類型,支持的值如下:(默認為inet)。 |
| psutil.net_if_addrs() | 以字典的形式返回網卡的配置信息,包括IP地址和mac地址、子網掩碼和廣播地址。 |
| psutil.net_if_stats() | 返回網卡的詳細信息,包括是否啟動、通信類型、傳輸速度與mtu。 |
| psutil.users() | 以命名元組的方式返回當前登陸用戶的信息,包括用戶名,登陸時間,終端,與主機信息。 |
| psutil.boot_time() | 以時間戳的形式返回系統的啟動時間。 |
Process相關
| psutil.pids() | 以列表的形式返回當前正在運行的進程。 |
| psutil.pid_exists(1) | 判斷給點定的pid是否存在。 |
| psutil.process_iter() | 迭代當前正在運行的進程,返回的是每個進程的Process對象。 |
| psutil.Process() | 對進程進行封裝,可以使用該類的方法獲取進行的詳細信息,或者給進程發送信號。 |
通過嵌入式Python調用psutil庫
這里僅簡單介紹個主要方法、其他獲取系統資源方法由讀者自行實現。
- 在安裝路徑C:\InterSystems\IRISHealth\bin,輸入cmd,進入命令行控制臺輸入命令。安裝 psutil庫。
- 獲取服務器CPU使用率
根據上圖可以觀察到獲取的內容使用 1 - 是 IRIS監控接口、2 - 是M方法實現、 3 - 是任務管理器,三者監控的CPU使用率基本使用是一致的。(因為CPU使用率是瞬態的,所以可以認為是準確的)
- 獲取服務系內存使用狀態
根據上圖可以觀察到獲取的內容使用 1 - 是 360監控、2 - 是任務管理器、 3 - 是M方法實現,三者監控的內存使用是一致的。
使用郵件發送報警信息
這里考慮使用郵件來發送警報信息是因為:
- 郵件相對其他方式來說比較方便,只管發送,不用管是否接收。
- IRIS自帶發送郵件接口,操作性大。
- 相比其他方式,例如微信,公眾號等,還需要做接口交互。使用郵件相對簡單。
那么下一個考慮的問題是通過什么方式來觸發監控發郵件呢,筆者考慮以下兩點可以觸發:
- 通過掛任務的方式定時輪詢。
- 通過SessionEvent事件來觸發。
這里僅提供代碼示例,具體使用哪種方式由讀者自行決定。
使用M發送郵件發送消息
- 這里以QQ郵箱例,配置信息與Alertmanager郵箱配置相同
- 發送郵件具體方法
- 測試郵件方法,發送成功目標郵箱會接收到郵件。
通過配置文件csv文件,來獲取維護指標,進行郵件報警。
- 使用csv文件通過手動的方式來維護需要監控的指標
- key - 指標名稱,這里要與IRIS接口信息的具體指標保持一致。
- val - 報警的閾值。
- oper - 操作符。指具體報警時操作符。是大于val時報警,還是小于val時報警,或其他。
- desc - 指標描述信息。
- 讀取csv文件將數據轉為Json。
- 對比維護指標與接口指標,超過閾值發送郵件進行警報。
注:這里雙循環,時間復雜O2,數據量大,效率可能會比較低,需要注意下。
ClassMethod Main(url As %String, filename As %String) As %Status {#; 獲取接口指標Jsons irismetrics = ##class(M.ParseMetrics).Main(url)#; 獲取Csv維護指標Jsons config = ##class(M.Mail).Csv2Json(filename)#; 雙向對比,維護指標超過閾值發送郵件警報for i = 1 : 1 : irismetrics.%Size() - 1{s metrics = irismetrics.%Get(i)for j = 1 : 1 : config.%Size() - 1{s obj = config.%Get(j)if (obj.key = metrics.key) {if @(metrics.val _ obj.oper _ obj.val) {s content = obj.desc _ "警報,超過閾值:" _ obj.vald ..SendMailMessage("來自系統的警報",content)ret $$$NO} }}}#; 監控內存使用率,接口中沒有監視內存選項所以調用嵌入式接口s memory = ..GetSystemMemory()if (memory > 30) {d ..SendMailMessage("來自系統的警報","內存使用率已經大于" _ 30 _ "")}ret $$$YES } USER>w ##class(M.Mail).Main("https://localhost:2443/api/monitor/metrics", "E:\temp\metrics.csv") 0注:這里基本思路已經實現,可以通過掛任務或其他方式來定時輪詢。
總結
以上是個人關于監控服務器指標、CPU、內存、警報的一些理解,由于個人能力有限,歡迎大家提出意見,共同交流。
思考
IRIS還提供了alert警報接口,該接口提供alert.log警報日志內容,基于以上方案,思考如何通過M程序進行監控
- 接口地址:https://localhost:2443/api/monitor/alerts
- 該接口有警報時會提示報警信息,調用一次后清空。
- 如果有警報,警報信息如下:
附
- /api/monitor/metrics指標含義列表:
| iris_cpu_pct {id="ProcessType"} | IRIS 進程類型的 CPU 使用百分比。 ProcessType 可以是以下任何一項:ECPWorker、ECPCliR、ECPCliW、ECPSrvR、ECPSrvW、LICENSESRV、WDAUX、WRTDMN、JRNDMN、GARCOL、CSPDMN、CSPSRV、ODBCSRC、MirrorMaster、MirrorPri、MirrorBack、MirrorPre、MirrorSvrR、MirrorJrnR、MirrorSK、MirrorComm |
| iris_cpu_usage | 操作系統上所有程序的 CPU 使用率百分比 |
| iris_csp_activity {id="IPaddress:port"} | Web 網關服務器自啟動以來處理的 Web 請求數 |
| iris_csp_actual_connections {id="IPAddress:port"} | Web 網關服務器與該服務器的當前連接數 |
| iris_csp_gateway_latency {id="IPaddress:port"} | 獲取 iris_csp_ 指標時從 Web 網關服務器獲得響應的時間,以毫秒為單位 |
| iris_csp_in_use_connections {id="IPaddress:port"} | 正在處理 Web 請求的 Web 網關服務器與此服務器的當前連接數 |
| iris_csp_private_connections {id="IPaddress:port"} | 為狀態感知應用程序保留的 Web 網關服務器與此服務器的當前連接數(保留模式 1) |
| iris_csp_sessions | 此服務器上當前活動的 Web 會話 ID 數 |
| iris_cache_efficiency | 全局引用與物理讀寫的比率,以百分比表示 |
| iris_db_expansion_size_mb {id="database"} | 擴展數據庫的數量,以兆字節為單位 |
| iris_db_free_space {id="database"} | 數據庫中可用的可用空間,以兆字節為單位(此指標每天僅更新一次,可能不會反映最近的更改。) |
| iris_db_latency {id="database"} | 完成從數據庫隨機讀取的時間量,以毫秒為單位 |
| iris_db_max_size_mb {id="database"} | `數據庫可以增長到的最大大小,以兆字節為單位 |
| iris_db_size_mb {id="database",dir="path"} | 數據庫大小,以兆字節為單位 |
| iris_directory_space {id="database",dir="path"} | 數據庫目錄存儲卷上的可用空間,以兆字節為單位 |
| iris_disk_percent_full {id="database",dir="path"} | 數據庫目錄存儲卷上的空間百分比 |
| iris_ecp_conn | 此 ECP 應用程序服務器上的活動客戶端連接總數 |
| iris_ecp_conn_max | 來自此 ECP 應用程序服務器的最大活動客戶端連接數 |
| iris_ecp_connections | 此 ECP 應用程序服務器與其配置的 ECP 數據服務器同步時同步的服務器數 |
| iris_ecp_latency | ECP 應用服務器和 ECP 數據服務器之間的延遲,以毫秒為單位 |
| iris_ecps_conn | 每秒與此 ECP 數據服務器的活動客戶端連接總數 |
| iris_ecps_conn_max | 與此 ECP 數據服務器的最大活動客戶端連接數 |
| iris_glo_a_seize_per_sec | 每秒全局資源上的 Aseizes 數 |
| iris_glo_n_seize_per_sec | 每秒全局資源上的 Nseizes 數 |
| iris_glo_ref_per_sec | 每秒對位于本地數據庫上的全局變量的引用數 |
| iris_glo_ref_rem_per_sec | 每秒對位于遠程數據庫上的全局變量的引用數 |
| iris_glo_seize_per_sec | 每秒占用全局資源的次數 |
| iris_glo_update_per_sec | 每秒對本地數據庫上的全局變量進行更新(SET 和 KILL 命令)的次數 |
| iris_glo_update_rem_per_sec | 每秒對位于遠程數據庫上的全局變量的更新(SET 和 KILL 命令)數 |
| iris_jrn_block_per_sec | 每秒寫入磁盤的日志塊 |
| iris_jrn_free_space {id="JournalType",dir="path"} | 每個日志目錄的存儲卷上可用的可用空間,以兆字節為單位。 JournalType 可以是 WIJ、primary 或 secondary |
| iris_jrn_size {id="JournalType"} | 每個日志文件的當前大小,以兆字節為單位。 JournalType 可以是 WIJ、primary 或 secondary |
| iris_license_available | 當前未使用的許可證數量 |
| iris_license_consumed | 當前使用的許可證數量 |
| iris_license_percent_used | 當前使用的許可證的百分比 |
| iris_log_reads_per_sec | 每秒邏輯讀取 |
| iris_obj_a_seize_per_sec | 每秒對象資源上的 Aseizes 數 |
| iris_obj_del_per_sec | 每秒刪除的對象數 |
| iris_obj_hit_per_sec | 進程內存中每秒的對象引用數 |
| iris_obj_load_per_sec | 每秒從磁盤加載的對象數,不在共享內存中 |
| iris_obj_miss_per_sec | 每秒在內存中找不到的對象引用數 |
| iris_obj_new_per_sec | 每秒初始化的對象數 |
| iris_obj_seize_per_sec | 每秒占用對象資源的次數 |
| iris_page_space_percent_used | 已用最大分配頁面文件空間的百分比 |
| iris_phys_mem_percent_used | 當前使用的物理內存 (RAM) 的百分比 |
| iris_phys_reads_per_sec | 每秒從磁盤讀取的物理數據庫塊 |
| iris_phys_writes_per_sec | 每秒寫入磁盤的物理數據庫塊 |
| iris_process_count | 活躍的 IRIS 進程總數 |
| iris_rtn_a_seize_per_sec | 每秒例程資源上的 Aseizes 數 |
| iris_rtn_call_local_per_sec | 每秒對位于遠程數據庫上的全局變量的本地例程調用數 |
| iris_rtn_call_miss_per_sec | 每秒在內存中找不到的例程調用數 |
| iris_rtn_call_remote_per_sec | 每秒遠程例程調用次數 |
| iris_rtn_load_per_sec | 每秒從本地加載或保存到磁盤的例程數 |
| iris_rtn_load_rem_per_sec | 每秒從磁盤遠程加載或保存到磁盤的例程數 |
| iris_rtn_seize_per_sec | 每秒占用例程資源的次數 |
| iris_sam_get_db_sensors_seconds | 收集 iris_db* 傳感器所花費的時間,以秒為單位 |
| iris_sam_get_jrn_sensors_seconds | 收集 iris_jrn* 傳感器所花費的時間,以秒為單位 |
| iris_sam_get_sql_sensors_seconds | 收集 iris_sql* 傳感器所花費的時間,以秒為單位 |
| iris_sam_get_wqm_sensors_seconds | 收集 iris_wqm* 傳感器所花費的時間,以秒為單位 |
| iris_smh_available {id="purpose"} | 按目的可用的共享內存,以千字節為單位 |
| iris_smh_percent_full {id="purpose"} | 按目的使用的已分配共享內存的百分比 |
| iris_smh_total | 為當前實例分配的共享內存,以千字節為單位 |
| iris_smh_total_percent_full | 當前實例使用的已分配共享內存的百分比 |
| iris_smh_used {id="purpose"} | 按目的使用的共享內存,以千字節為單位 |
| iris_sql_active_queries {id="namespace"} | 當前執行的 SQL語句數 |
| iris_sql_active_queries_95_percentile {id="namespace"} | 對于當前的活動 SQL 語句集,自語句開始執行以來經過的第 95 個百分位數的時間 |
| iris_sql_active_queries_99_percentile {id="namespace"} | 對于當前活動的 SQL 語句集,自語句開始執行以來經過的第 99 個百分位數的時間 |
| iris_sql_queries_avg_runtime {id="namespace"} | 平均 SQL 語句運行時間,以秒為單位 |
| iris_sql_queries_avg_runtime_std_dev {id="namespace"} | 平均 SQL 語句運行時間的標準偏差 |
| iris_sql_queries_per_second {id="namespace"} | 每秒平均 SQL 語句數 |
| iris_system_alerts | 自系統啟動以來發布到消息日志的警報數 |
| iris_system_alerts_log | 當前位于警報日志中的警報數 |
| iris_system_alerts_new | /api/monitor/alerts 端點上是否有新警報,作為布爾值 |
| iris_system_state | 表示系統監視器健康狀態的數字 |
| iris_trans_open_count | 當前實例上打開的事務數 |
| iris_trans_open_secs | 當前實例上打開事務的平均持續時間,以秒為單位 |
| iris_trans_open_secs_max | 當前實例上當前打開的最長事務的 |
| iris_wd_buffer_redirty | 寫入守護進程在最近一個周期中寫入并且也在前一個周期中寫入的數據庫緩沖區數 |
| iris_wd_buffer_write | 寫入守護進程在其最近周期寫入的數據庫緩沖區數 |
| iris_wd_cycle_time | 完成最近的寫入守護進程周期所花費的時間量,以毫秒為單位 |
| iris_wd_proc_in_global | 在最近的寫入守護進程周期開始時主動持有全局緩沖區的進程數 |
| iris_wd_size_write | 寫入守護程序在其最近周期寫入的數據庫緩沖區的大小,以千字節為單位 |
| iris_wd_sleep | 寫入守護進程在其最近的周期開始之前處于非活動狀態的時間量,以毫秒為單位 |
| iris_wd_temp_queue | 寫入守護進程在其最近周期開始時使用的內存緩沖區數 |
| iris_wd_temp_write | 寫入守護進程在其最近周期中寫入的內存緩沖區數 |
| iris_wdwij_time | 寫入守護進程在其最近的周期內寫入 WIJ 文件所花費的時間,以毫秒為單位 |
| iris_wd_write_time | 寫守護進程在其最近的周期內將緩沖區寫入數據庫所花費的時間,以毫秒為單位 |
| iris_wij_writes_per_sec | WIJ 每秒物理塊寫入 |
| iris_wqm_active_worker_jobs {id="category"} | 未被阻塞的運行邏輯的平均工作者作業數 |
| iris_wqm_commands_per_sec {id="category"} | 平均每秒在此工作隊列管理類別中執行的命令數 |
| iris_wqm_globals_per_sec {id="category"} | 平均每秒在此工作隊列管理類別中運行的全局引用數 |
| iris_wqm_max_active_worker_jobs {id="category"} | 自上次記錄日志條目以來的最大活動工作人員數 |
| iris_wqm_max_work_queue_depth {id="category"} | 自上次記錄以來此工作隊列管理類別隊列中的最大條目數 |
| iris_wqm_waiting_worker_jobs {id="category"} | 等待一個組連接并為其工作的空閑工人作業的平均數量 |
總結
以上是生活随笔為你收集整理的关于监控服务器指标、CPU、内存、警报的一些解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Orz是什么意思……
- 下一篇: 【基于ECharts 数据可视化展示相关