服務(wù)器監(jiān)控指標(biāo)
服務(wù)器日常監(jiān)控巡檢時,總會遇到不同服務(wù)器的不同告警,使用不同的監(jiān)控工具,監(jiān)控的指標(biāo)有所不同,但最基礎(chǔ)的服務(wù)器資源指標(biāo),基本都支持,比如zabbix + ,Prometheus + Grafana。
本文只針對服務(wù)器資源的相關(guān)告警,總結(jié)常用的處理方案,其他業(yè)務(wù)性指標(biāo)(尤其與業(yè)務(wù)系統(tǒng)相關(guān)),需要針對具體業(yè)務(wù)再分析,不過處理方案的思想是相通的。
CPU告警
通過 top 命令,查看所有進(jìn)程運行情況,在結(jié)果界面,通過 shift + p 切換視圖,按照CPU使用率倒序排列,找出CPU使用率最高的進(jìn)程依次分析(查看 %CPU 列)
特別關(guān)注:top命令顯示的 CPU 使用率是按照單核計算的,即100%代表使用了單核的滿負(fù)荷,如果服務(wù)器為4核,則理論最大為400%
[root@localhost ~]# top Tasks: 197 total, 1 running, 196 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.2 us, 1.3 sy, 0.0 ni, 97.3 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 8008984 total, 1046216 free, 4712336 used, 2250432 buff/cache KiB Swap: 7208956 total, 4409068 free, 2799888 used. 2373196 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1456 root 20 0 10.5g 361648 242164 S 3.0 4.5 12461:08 clickhouse-server --config-file=/etc/clickhouse-+ 1089 root 20 0 5755452 238580 2644 S 1.7 3.0 4330:47 java -jar V2XRealtimeServer.jar 1086 root 20 0 5822324 319628 3028 S 1.3 4.0 4161:58 java -jar V2XRawDataServer.jar 10174 root 20 0 5819584 963512 4420 S 1.3 12.0 3619:07 java -jar V2XWebSocketServer.jar 2105 mysql 20 0 3205688 907124 7584 S 0.7 11.3 1462:50 /usr/sbin/mysqld --daemonize --pid-file=/var/run+ 1090 root 20 0 148952 4648 780 S 0.3 0.1 420:01.32 /usr/local/redis/bin/redis-server 0.0.0.0:7379 [+ 17013 root 20 0 162128 2344 1600 R 0.3 0.0 0:00.04 top 1 root 20 0 125516 2636 1492 S 0.0 0.0 133:31.76 /usr/lib/systemd/systemd --switched-root --syste+
根據(jù)不同進(jìn)程的情況,可能會有以下現(xiàn)象
CPU持續(xù)告警,一般為計算型應(yīng)用程序,如數(shù)據(jù)清洗、轉(zhuǎn)換、計算等,即該應(yīng)用運行時本就會使用更多CPU資源
偶然告警,只要告警不超過CPU總資源的70%,不引起系統(tǒng)卡頓,原則上可以暫時不用處理
偶然告警,但告警頻率逐漸增高,可能由于應(yīng)用程序bug、漏洞引起
特定時間段告警,一般跟業(yè)務(wù)關(guān)聯(lián)性較高,比如流量高峰
常用處理方案
根據(jù)實際業(yè)務(wù)需要,可以限制單應(yīng)用的運行性能(如集群部署時,可以適當(dāng)降低單節(jié)點性能),則調(diào)整應(yīng)用相關(guān)配置,限制線程數(shù)、并發(fā)量等
如果公共組件該版本有相關(guān)漏洞缺陷,則根據(jù)官方指示,修補漏洞,或者升級版本
解決業(yè)務(wù)流量高的問題,使流量更均衡,如集群部署,消息緩存,負(fù)載均衡,定時任務(wù)調(diào)整等
擴容服務(wù)器資源,如增加CPU資源,或者將應(yīng)用服務(wù)遷移至資源性能更高的服務(wù)器
內(nèi)存告警
通過 top 命令,查看所有進(jìn)程運行情況,在結(jié)果界面,通過 shift + M 切換視圖,按照 內(nèi)存 使用量倒序排列,找出內(nèi)存使用量最高的進(jìn)程依次分析(查看 RES 和 %MEM 列)
[root@localhost ~]# top Tasks: 195 total, 1 running, 194 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.3 us, 1.1 sy, 0.0 ni, 97.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8008984 total, 969272 free, 4721960 used, 2317752 buff/cache KiB Swap: 7208956 total, 4409068 free, 2799888 used. 2363556 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10174 root 20 0 5819584 963512 4420 S 1.3 12.0 3619:52 java -jar V2XWebSocketServer.jar 10166 root 20 0 5768092 921932 4252 S 0.0 11.5 364:51.16 java -jar V2XStatisticsServer.jar 2105 mysql 20 0 3205688 907124 7584 S 0.0 11.3 1463:03 /usr/sbin/mysqld --daemonize --pid-file=/var/run+ 1087 root 20 0 5809328 449920 2736 S 0.0 5.6 226:25.74 java -jar V2XApiServer.jar 1456 root 20 0 10.5g 369520 242164 S 3.0 4.6 12463:01 clickhouse-server --config-file=/etc/clickhouse-+ 1086 root 20 0 5822324 319628 3028 S 1.3 4.0 4162:45 java -jar V2XRawDataServer.jar 1064 root 20 0 5702928 286440 2272 S 0.3 3.6 721:06.60 java -jar msbus.jar 1089 root 20 0 5755452 238580 2644 S 1.7 3.0 4331:30 java -jar V2XRealtimeServer.jar 27891 root 20 0 1111052 25192 2324 S 0.0 0.3 4:21.71 /usr/bin/dockerd -H fd:// --containerd=/run/cont+
常用處理方案
調(diào)整應(yīng)用服務(wù)相關(guān)參數(shù),限制內(nèi)存占用、緩存空間大小、緩存隊列長度、緩存保留時間、內(nèi)存管理參數(shù)等
擴容服務(wù)器內(nèi)存資源,或?qū)?yīng)用服務(wù)遷移至高性能服務(wù)器
磁盤空間容量告警
通過 df -h 命令,查看磁盤各分區(qū)占用量(查看 Use% 和 Mounted on 列),然后使用 du -sh 命令逐級查找分區(qū)內(nèi)磁盤使用量最高的目錄
[root@ecs-fb36-0002 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 0 16G 0% /dev tmpfs 16G 832K 16G 1% /dev/shm tmpfs 16G 1.7G 14G 11% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/klas_host--10--169--183--49-root 95G 9.6G 86G 11% / tmpfs 16G 3.5M 16G 1% /tmp /dev/vda2 1014M 217M 798M 22% /boot /dev/vda1 200M 5.8M 195M 3% /boot/efi /dev/mapper/vgdata-lvdata 100G 56G 45G 56% /data tmpfs 3.1G 0 3.1G 0% /run/user/993 tmpfs 3.1G 0 3.1G 0% /run/user/1000 #分析 /data 目錄,然后繼續(xù)分析 /data/jnpf 目錄 [root@ecs-fb36-0002 ~]# du -sh /data/* 4.6M /data/h5 40M /data/ioc-guanai 242M /data/jdk 54G /data/jnpf 5.2M /data/redis 952M /data/soft
常用解決方案
占用磁盤高的為日志文件,則可以參考Linux日志管理經(jīng)驗總結(jié)(crontab+logrotate)
數(shù)據(jù)盤磁盤占用高(獨立掛載磁盤的分區(qū),如 /data),包括安裝程序、數(shù)據(jù)文件等,則根據(jù)實際業(yè)務(wù)場景,調(diào)整相關(guān)參數(shù),限制數(shù)據(jù)保存時間、數(shù)據(jù)壓縮等
系統(tǒng)盤磁盤占用高(/ 根分區(qū)),則考慮將相關(guān)應(yīng)用程序遷移至數(shù)據(jù)盤,如果應(yīng)用程序支持,可以將安裝目錄整體遷移(如修改Docker鏡像存儲目錄,減輕系統(tǒng)盤負(fù)擔(dān),即配置到數(shù)據(jù)盤后,將現(xiàn)有數(shù)據(jù)遷移到數(shù)據(jù)盤,重啟服務(wù)),否則調(diào)整相關(guān)參數(shù),可以將數(shù)據(jù)存儲目錄、日志目錄遷移至數(shù)據(jù)盤
擴容服務(wù)器磁盤資源,而且只能擴容數(shù)據(jù)盤,或者增加獨立掛載磁盤,然后將相關(guān)業(yè)務(wù)遷移至新磁盤
磁盤IO告警
使用 iotop 命令(Linux系統(tǒng)默認(rèn)沒有集成,需要單獨安裝,CentOS可以使用 yum,也可以官網(wǎng)下載安裝包),查看磁盤IO最高的進(jìn)程,其中 SWAPIN 列為swap交換百分比,IO> 列為IO等待所占用的百分比。
iotop使用可以參考Iotop – Monitor Linux Disk I/O Activity and Usage Per-Process Basis或iotop 命令
[root@localhost ~]# iotop -o Total DISK READ : 0.00 B/s | Total DISK WRITE : 388.00 K/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 633.68 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 518 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.16 % [xfsaild/dm-0] 20271 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/3:2] 2178 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % java -jar V2XRawDataServer.jar 2229 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % java -jar V2XRawDataServer.jar 2286 be/4 root 0.00 B/s 30.61 K/s 0.00 % 0.00 % java -jar msbus.jar 1801 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % clickhouse-server --config-f~khouse-server.pid [BgSchPool] 23520 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % clickhouse-server --config-f~khouse-server.pid [Collector] 1253 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % java -jar V2XRealtimeServer.jar 1254 be/4 root 0.00 B/s 814.17 B/s 0.00 % 0.00 % java -jar msbus.jar 10253 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % java -jar V2XStatisticsServer.jar 1698 be/4 root 0.00 B/s 142.72 K/s 0.00 % 0.00 % clickhouse-server --config-f~khouse-server.pid [Formatter] 1700 be/4 root 0.00 B/s 407.08 B/s 0.00 % 0.00 % clickhouse-server --config-f~khouse-server.pid [BgSchPool]
與 CPU告警場景類似,根據(jù)不同進(jìn)程的情況,可能會有以下現(xiàn)象
磁盤IO持續(xù)告警,一般為存儲型應(yīng)用程序,如文件系統(tǒng),數(shù)據(jù)庫等,即該應(yīng)用運行時本就會使用更多磁盤IO
偶然告警,只要告警不超過70%,不引起系統(tǒng)卡頓,原則上可以暫時不用處理qq
偶然告警,但告警頻率逐漸增高,可能由于應(yīng)用程序bug、漏洞引起
特定時間段告警,一般跟業(yè)務(wù)關(guān)聯(lián)性較高,比如流量高峰
常用處理方案
根據(jù)實際業(yè)務(wù)需要,可以限制單應(yīng)用的運行性能(如集群部署時,可以適當(dāng)降低單節(jié)點性能),則調(diào)整應(yīng)用相關(guān)配置,限制線程數(shù)、并發(fā)量、緩存參數(shù)等
如果公共組件該版本有相關(guān)漏洞缺陷,則根據(jù)官方指示,修補漏洞,或者升級版本
解決業(yè)務(wù)流量高的問題,使流量更均衡,如集群部署,消息緩存,負(fù)載均衡,定時任務(wù)調(diào)整等
提升服務(wù)器磁盤性能,如使用SSD磁盤,或者將應(yīng)用服務(wù)遷移至資源性能更高的服務(wù)器
TCP連接告警
通過 netstat 命令,查看和統(tǒng)計不同狀態(tài)的TCP連接數(shù)量,以及相應(yīng)的應(yīng)用程序。
TCP連接狀態(tài)告警,一般只存在兩種:ESTABLISHED(已連接狀態(tài))、TIME_WAIT(主動關(guān)閉端的最后狀態(tài),等待操作系統(tǒng)回收,其中,主動關(guān)閉可以是服務(wù)端,也可以是客戶端),其他TCP連接的狀態(tài),幾乎不會出現(xiàn)數(shù)量太多,本文將不考慮。
ESTABLISHED,不管是服務(wù)端應(yīng)用程序還是客戶端應(yīng)用程序,該狀態(tài)的TCP連接過多,說明該應(yīng)用服務(wù)的業(yè)務(wù)量已經(jīng)不是單體服務(wù)可以處理的,所以需要擴展應(yīng)用服務(wù)
TIME_WAIT,服務(wù)端應(yīng)用程序和客戶端應(yīng)用程序都可能會出現(xiàn),而且這是TCP連接的最后一個狀態(tài),接下來只有等待操作系統(tǒng)回收(回收周期根據(jù)不同操作系統(tǒng),可能為30秒 - 2分鐘),但是,在被回收前,該連接仍然會占用操作系統(tǒng)一個套接字資源,如果短時間內(nèi)出現(xiàn)過多TIME_WAIT,可能是因為高并發(fā)且持續(xù)的短連接業(yè)務(wù)場景,最終可能會逐步將操作系統(tǒng)套接字資源耗盡,從而無法再創(chuàng)建 TCP連接
常用解決方案
ESTABLISHED,服服務(wù)端的應(yīng)用程序,可以考慮多節(jié)點部署,搭建集群或搭建負(fù)載均衡,或者將單服務(wù)拆分為多服務(wù),分別部署到不同的服務(wù)器實現(xiàn)負(fù)載均衡
ESTABLISHED,客戶端的應(yīng)用程序,可以考慮使用連接池,避免所有請求都建立新的連接,也可以考慮多節(jié)點部署客戶端,或者將客戶端業(yè)務(wù)拆分為多個客戶端,然后分別部署到不同的服務(wù)器
TIME_WAIT,可以考慮使用TCP長連接;如果是http服務(wù)端出現(xiàn)告警,可以考慮在客戶端連接時將 connection 設(shè)置為 keep-alive,避免服務(wù)端主動斷開連接;也可以從操作系統(tǒng)層調(diào)整相關(guān)參數(shù),一方面開啟套接字復(fù)用,一方面使操作系統(tǒng)更快的回收,調(diào)整方案如下
#vim /etc/sysctl.conf,增加或修改以下參數(shù) net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_fin_timeout=30 #調(diào)整后刷新生效 sysctl -p
附錄:TCP相關(guān)統(tǒng)計命令
1.使用netstat 統(tǒng)計不同狀態(tài)TCP連接數(shù)量
特別關(guān)注:腳本中NR>2由于netstat命令前2行輸出為描述信息
[root@localhost ~]# netstat -antp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:33071 0.0.0.0:* LISTEN 2105/mysqld tcp 0 0 0.0.0.0:7379 0.0.0.0:* LISTEN 1090/redis-server 0 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1244/sshd [root@localhost ~]# netstat -antp | awk -F '[ /]+' 'NR>2 {count[$6]++} END {for(state in count) print state," ",count[state] }' LISTEN 16 CLOSE_WAIT 2 ESTABLISHED 273 FIN_WAIT2 1 TIME_WAIT 1
2.使用netstat統(tǒng)計指定狀態(tài)TCP連接不同進(jìn)程數(shù)量
[root@localhost ~]# netstat -antp | grep -i established | awk -F '[ /]+' '{count[$8]++} END {for(app in count) print app," ",count[app] }' java 124 mysqld 109 clickhouse-ser 6 sshd: 1 redis-server 31
審核編輯:黃飛
-
cpu
+關(guān)注
關(guān)注
68文章
10863瀏覽量
211799 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9165瀏覽量
85438 -
Docker
+關(guān)注
關(guān)注
0文章
460瀏覽量
11859
原文標(biāo)題:服務(wù)器資源監(jiān)控告警處理方案總結(jié)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論