0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

服务器资源监控与告警处理方案的全面总结

马哥Linux运维 来源:cnblogs 2024-04-20 09:35 次阅读

服务器监控指标

服务器日常监控巡检时,总会遇到不同服务器的不同告警,使用不同的监控工具,监控的指标有所不同,但最基础的服务器资源指标,基本都支持,比如zabbix + ,Prometheus + Grafana。

本文只针对服务器资源的相关告警,总结常用的处理方案,其他业务性指标(尤其与业务系统相关),需要针对具体业务再分析,不过处理方案的思想是相通的。

CPU告警

通过 top 命令,查看所有进程运行情况,在结果界面,通过 shift + p 切换视图,按照CPU使用率倒序排列,找出CPU使用率最高的进程依次分析(查看 %CPU 列)

特别关注:top命令显示的 CPU 使用率是按照单核计算的,即100%代表使用了单核的满负荷,如果服务器为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+

根据不同进程的情况,可能会有以下现象

CPU持续告警,一般为计算型应用程序,如数据清洗、转换、计算等,即该应用运行时本就会使用更多CPU资源

偶然告警,只要告警不超过CPU总资源的70%,不引起系统卡顿,原则上可以暂时不用处理

偶然告警,但告警频率逐渐增高,可能由于应用程序bug、漏洞引起

特定时间段告警,一般跟业务关联性较高,比如流量高峰

常用处理方案

根据实际业务需要,可以限制单应用的运行性能(如集群部署时,可以适当降低单节点性能),则调整应用相关配置,限制线程数、并发量等

如果公共组件该版本有相关漏洞缺陷,则根据官方指示,修补漏洞,或者升级版本

解决业务流量高的问题,使流量更均衡,如集群部署,消息缓存,负载均衡,定时任务调整等

扩容服务器资源,如增加CPU资源,或者将应用服务迁移至资源性能更高的服务器

内存告警

通过 top 命令,查看所有进程运行情况,在结果界面,通过 shift + M 切换视图,按照 内存 使用量倒序排列,找出内存使用量最高的进程依次分析(查看 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+

常用处理方案

调整应用服务相关参数,限制内存占用、缓存空间大小、缓存队列长度、缓存保留时间、内存管理参数等

扩容服务器内存资源,或将应用服务迁移至高性能服务器

磁盘空间容量告警

通过 df -h 命令,查看磁盘各分区占用量(查看 Use% 和 Mounted on 列),然后使用 du -sh 命令逐级查找分区内磁盘使用量最高的目录

[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 目录,然后继续分析 /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日志管理经验总结(crontab+logrotate)

数据盘磁盘占用高(独立挂载磁盘的分区,如 /data),包括安装程序、数据文件等,则根据实际业务场景,调整相关参数,限制数据保存时间、数据压缩等

系统盘磁盘占用高(/ 根分区),则考虑将相关应用程序迁移至数据盘,如果应用程序支持,可以将安装目录整体迁移(如修改Docker镜像存储目录,减轻系统盘负担,即配置到数据盘后,将现有数据迁移到数据盘,重启服务),否则调整相关参数,可以将数据存储目录、日志目录迁移至数据盘

扩容服务器磁盘资源,而且只能扩容数据盘,或者增加独立挂载磁盘,然后将相关业务迁移至新磁盘

磁盘IO告警

使用 iotop 命令(Linux系统默认没有集成,需要单独安装,CentOS可以使用 yum,也可以官网下载安装包),查看磁盘IO最高的进程,其中 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告警场景类似,根据不同进程的情况,可能会有以下现象

磁盘IO持续告警,一般为存储型应用程序,如文件系统,数据库等,即该应用运行时本就会使用更多磁盘IO

偶然告警,只要告警不超过70%,不引起系统卡顿,原则上可以暂时不用处理qq

偶然告警,但告警频率逐渐增高,可能由于应用程序bug、漏洞引起

特定时间段告警,一般跟业务关联性较高,比如流量高峰

常用处理方案

根据实际业务需要,可以限制单应用的运行性能(如集群部署时,可以适当降低单节点性能),则调整应用相关配置,限制线程数、并发量、缓存参数等

如果公共组件该版本有相关漏洞缺陷,则根据官方指示,修补漏洞,或者升级版本

解决业务流量高的问题,使流量更均衡,如集群部署,消息缓存,负载均衡,定时任务调整等

提升服务器磁盘性能,如使用SSD磁盘,或者将应用服务迁移至资源性能更高的服务器

TCP连接告警

通过 netstat 命令,查看和统计不同状态的TCP连接数量,以及相应的应用程序。

TCP连接状态告警,一般只存在两种:ESTABLISHED(已连接状态)、TIME_WAIT(主动关闭端的最后状态,等待操作系统回收,其中,主动关闭可以是服务端,也可以是客户端),其他TCP连接的状态,几乎不会出现数量太多,本文将不考虑。

ESTABLISHED,不管是服务端应用程序还是客户端应用程序,该状态的TCP连接过多,说明该应用服务的业务量已经不是单体服务可以处理的,所以需要扩展应用服务

TIME_WAIT,服务端应用程序和客户端应用程序都可能会出现,而且这是TCP连接的最后一个状态,接下来只有等待操作系统回收(回收周期根据不同操作系统,可能为30秒 - 2分钟),但是,在被回收前,该连接仍然会占用操作系统一个套接字资源,如果短时间内出现过多TIME_WAIT,可能是因为高并发且持续的短连接业务场景,最终可能会逐步将操作系统套接字资源耗尽,从而无法再创建 TCP连接

常用解决方案

ESTABLISHED,服服务端的应用程序,可以考虑多节点部署,搭建集群或搭建负载均衡,或者将单服务拆分为多服务,分别部署到不同的服务器实现负载均衡

ESTABLISHED,客户端的应用程序,可以考虑使用连接池,避免所有请求都建立新的连接,也可以考虑多节点部署客户端,或者将客户端业务拆分为多个客户端,然后分别部署到不同的服务器

TIME_WAIT,可以考虑使用TCP长连接;如果是http服务端出现告警,可以考虑在客户端连接时将 connection 设置为 keep-alive,避免服务端主动断开连接;也可以从操作系统层调整相关参数,一方面开启套接字复用,一方面使操作系统更快的回收,调整方案如下

#vim /etc/sysctl.conf,增加或修改以下参数
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30


#调整后刷新生效
sysctl -p

附录:TCP相关统计命令

1.使用netstat 统计不同状态TCP连接数量

特别关注:脚本中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统计指定状态TCP连接不同进程数量

[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
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211089
  • 服务器
    +关注

    关注

    12

    文章

    9010

    浏览量

    85162
  • Docker
    +关注

    关注

    0

    文章

    454

    浏览量

    11807

原文标题:服务器资源监控告警处理方案总结

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    宝界科技WEB服务器立体防御解决方案

    宝界科技WEB服务器立体防御解决方案 关键字:网页防篡改、WEB应用防火墙、WEB加固、WEB保护、WEB防火墙、硬件   
    发表于 05-17 14:01

    宝界科技WEB服务器立体防御解决方案

    宝界科技WEB服务器立体防御解决方案 关键字:网页防篡改、WEB应用防火墙、WEB加固、WEB保护、WEB防火墙、硬件   
    发表于 08-19 11:02

    GPRS模块+服务器监控5W台设备服务器会不会塞死?

    大家好,我有个项目要做到服务器监听5万台GPRS模块,通过WEB发布给用户.监控的模块太多,GPRS要保证不掉线很难啊.服务器会不会塞死?用UDP会不会更好些呢?如果上传数据后,马上断掉网络来释放
    发表于 03-18 04:25

    基于最新DaVinci平台的视频监控服务器的设计与实现

    了整个网络视频监控系统的框架,包括视频服务器、网络传输链路及客户监控端。本设计采用 MPEG4视频编码标准,由DM355内部的MPEG/JPEG协处理器完成。实验表明,在带宽充足的条件
    发表于 07-19 06:19

    对Web服务器资源的建议有哪些

    对Web服务器资源的任何建议。我将负责处理它。PIC32和谐的CurCE。任何建议将不胜感激。
    发表于 05-08 09:45

    高防服务器的优势

    而设计的服务器。在网络攻击的情况下,可以迅速的调用服务器资源进行防护,保证服务器运转的稳定性。高防服务器在防护DDos攻击和CC攻击方面的效
    发表于 03-21 12:40

    基于异构多核处理器的媒体资源服务器

    随着彩铃、IVR等多媒体增值业务需求的增加,电信网络中媒体资源服务器的多媒体并发处理能力逐渐成为这些增值业务发展的主要制约瓶颈。该文在分析媒体资源
    发表于 11-27 14:18 5次下载

    Apache服务器的配置设置总结

    Apache服务器的配置设置总结(实用电源技术讲义)-该文档为Apache服务器的配置设置总结讲解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,,,,
    发表于 09-23 10:16 3次下载
    Apache<b class='flag-5'>服务器</b>的配置设置<b class='flag-5'>总结</b>

    什么是服务器监控系统?

    服务器监控系统用于了解服务器上的活动(无论是物理的还是虚拟的)的过程。服务器是一种用于存储和处理按需提供给其他设备、应用程序或用户的信息的设
    的头像 发表于 07-14 16:32 7052次阅读

    如何监控服务器性能?

    无论您的服务器是在Windows还是Unix上运行,这些关键性能领域都可以作为任何服务器监控策略的良好起点,跟踪这些性能指标作为性能瓶颈的指标非常重要。那么如何监控
    的头像 发表于 07-19 16:01 6218次阅读

    服务器运维过程收到磁盘空间告警怎么办

    服务器运维过程中,我们时常会遇到这样的情况,收到服务器磁盘空间告警
    的头像 发表于 11-03 10:30 1797次阅读

    服务器nova-compute down告警的问题处理

    某运营商Provider界面有服务器nova-compute down告警,如下图所示。
    的头像 发表于 09-20 11:02 1433次阅读
    <b class='flag-5'>服务器</b>nova-compute down<b class='flag-5'>告警</b>的问题<b class='flag-5'>处理</b>

    平安校园视频监控方案 YOLOv5

    平安校园视频监控方案部署一台SuiJi-AI100视频分析服务器,平安校园视频监控方案使用校园视频监控
    的头像 发表于 07-03 22:51 264次阅读
    平安校园视频<b class='flag-5'>监控</b><b class='flag-5'>方案</b> YOLOv5

    服务器的购买资源和扩容资源的区别和联系

    服务器的购买资源和扩容资源的区别和联系主要体现在操作流程、成本控制以及数据管理等方面。购买资源适合初始部署或大规模扩展,而扩容资源更适合对
    的头像 发表于 10-18 11:21 164次阅读

    使用zabbix监控服务器的方法

    1. 了解Zabbix Zabbix是一个企业级的开源监控解决方案,用于监控IT基础设施,包括硬件、软件和服务。它提供了数据收集、数据存储、数据处理
    的头像 发表于 11-08 10:47 156次阅读