Linux下系统如何监控服务器硬件、操作系统、应用服务和业务
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* @author Alan
* @Email no008@foxmail.com
1.Linux监控概述
Linux服务器要保证系统的高可用性,需要实时了解到服务器的硬件、操作系统、应用服务等的运行状况,各项性能指标是否正常,需要使用各种LINUX命令。做到自动化运维就需要,将上述各项监控指标在同一个软件中展显出来,图形化监控,消息报警机制,日志检看,资产管理等等
2.Linux监控的对象
2.1 硬件监控
(1)服务器:如电源,风扇,磁盘,CPU等,可以使用IPMI监控,在LINUX下安装IPMITOOL
不同的服务器厂商都在服务器上配有远程控制卡BMC: 如DELL(iDRAC) ,IBM (IMM) ,HP(ILO)
LINUX下只需安装:#yum install -y OpenIPMI ipmitool 这二个工具就可以
IPMI命令可以在服务器本地运行,也可以通过网络远程调用,IPMI在服务器上可以配置单独的IP地址和访问密码
(2)网络设备:交换机,防火墙,路由器等,使用SNMP进行监控
在被监控的设备上开启SNMP代理,到时可以通过工具进行获取数据,如ZABBIX
1.LINUX上安装
#yum list |grep snmp
#yum install -y net-snmp net-snmp-utils
安装好后要配置snmpd.conf文件
rocommunity snmptest 172.16.20.89 #172.16.20.89表示仅这IP地址才可以来访问snmp信息
#systemctl start snmpd 启动SNMP ,netstat -nulp ,netstat -ntlp 查看snmp启来的端口udp=161 ,TCP=199
#关于SNMP trap和OID,参见:https://blog.csdn.net/openbox2008/article/details/79958092
通过SNMP命令可以获取监控信息:
#snmpget -v2c -c snmptest 172.16.20.89 1.3.6.1.2.1.1.3.0 #1.3.6.1.2.1.1.3.0为OID
2.交换机上开启
snmp-server community public ro
(3)定期机房巡检,查看设备运行情况
2.2 操作系统监控
安装sysstat工具,包括了iostat、vmstat、sar、mpstat、nfsiostat、pidstat (yum install -y sysstat #rpm -ql sysstat)
(1)CPU (CPU调度上下文切换 ,运行队列 负载,CPU使用率)
确定服务类型:IO密集型(如:数据库),CPU密集型(如:WEB)
1.cpu利用率内核态: 30%和用户态:70%
2.cpu运行队列:1~3线程 1CPU=4核 队列不超过12个
3.上下文切换:尽量少,结合cpu利用率
4.#top命令 (显示CPU和内存信息,M按内存使用率排序,P按CPU使用率排序,Q退出)
CPU百分比各项指标: us:用户态 sy:内核态 ni:进程间优先级更换 id:空闲 wa:IO等待 hi:硬中断 si:软件中 st:虚拟
5.CPU监控的各种命令:top ,vmstat , mpstat, uptime ,ps cpu进程情况,pstree 以树形结构显示进程之间的关系
(2)内存
1. free -m :显示内存信息
2.vmstat :来监控虚拟内存 #vmstat 1 10 每隔1秒共10次获取监控信息
(3)磁盘
1.iostat:命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。
2.iotop:需要yum另外安装,yum install -y iotop
(4)网络
0.ping :测试网络
1.netstat: -ntlp 、-nulp、-na 等显示了网络相关的信息
2.iftop -n:显示网络信息的类似top的程序. #yum install -y iftop
3.tcpdump:网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络
4.Wireshark:windows网络抓工具
(5)整体性能(CPU和内存、磁盘)
1.top:实时显示CPU和内存、磁盘信息
2.mpstat:实时系统监控工具,多CPUs系统里,其不但能查看所有CPU的平均状况信息
3.vmstat :来监控虚拟内存 #vmstat 1 10 每隔1秒共10次获取监控信息
4.sar:可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情
(6)nmon:性能报表,IBM开源工具,二进制直接下载使用,配合EXECL表可以图形分析
1.nmon下载:http://nmon.sourceforge.net/pmwiki.php
2.nmon analyser下载:https://sourceforge.net/projects/jnmonanalyser/
3.nmon analyser—生成 AIX 性能报告参见:
https://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/
2.3 应用服务监控
(1)Ngin监控
首先安装nginx编译相关 :#yum install -y gcc glibc gcc-c++ pcre-devel opensshl-level
下载nginx源码安装,编译时加上监控参数:
#./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
#make && make install
#测试启动:#/usr/local/nginx/sbin/nginx -t 配置文件没有问题就可以启动了
配置nginx.conf文件,增加在server段内
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.2.0/24;
deny all;
}
打开浏览器访问:192.168.2.1/nginx-status
2.4 生产业务监控
3.使用SHELL脚本监控
这里找到四个脚本(performance.sh 性能监控,process.sh 进程监控,network.sh 流量监控,tongji.sh流量分析统计),并使用crontab定时执行脚本进行监控数据的记录,形成每天的监控日志放在如下相应的文件夹,并且超过自己设定的告警值后发邮件通知,那些有免费短信通知功能的邮箱如腾讯企业邮箱,163邮箱可以尝试一下,收到邮件告警后很快就能收到短信了,很方便。
(1)性能监控脚本 performance.sh
#!/bin/bash
#---------------------------------------------------------------------------------
# 说明,Linux服务器--性能监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
# 主要监控: 01.监控cpu系统负载 02. 监控cpu使用率 03. 监控交换分区 04. 监控磁盘空间
# 生成的性能监控日志 $path/performance_%Y%m%d.log
# 2017.06.25 djp
#---------------------------------------------------------------------------------
path='/tmp/monitor/performance'
#01.监控cpu系统负载
{ #{{{
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
cpu_num=`grep -c 'model name' /proc/cpuinfo`
count_uptime=`uptime |wc -w`
load_15=`uptime | awk '{print
average_load=`echo "scale=2;a=
average_int=`echo
then
echo "
fi
} #}}}
#02. 监控cpu使用率
{ #{{{
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print
then
echo "
echo "
fi
} #}}}
#03. 监控交换分区
{ #{{{
swap_total=`free -m | grep Swap | awk '{print
then
swap_per=0`echo "scale=2;
swap_warn=0.20
swap_now=`expr
if [
else
echo "
fi
else
echo "
fi
} #}}}
#04. 监控磁盘空间
{ #{{{
disk_sda1=`df -h | grep /dev/sda1 | awk '{print
then
echo "
then
echo "
echo "
fi
###############################################################################
} #}}}
(2) 进程监控脚本 process.sh
#!/bin/bash
#!/bin/bash#---------------------------------------------------------------------------------
# 说明,Linux服务器--进程监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
# 主要监控:
# 生成的进程监控日志
# 2017.06.25 djp
#---------------------------------------------------------------------------------
path='/tmp/monitor/process'
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
#tomcat_dir="/opt/apache-tomcat-7.0.8"
#mysql_dir="/usr/local/mysql/bin/mysqld_safe"
#vsftp_dir="/usr/sbin/vsftpd"
tomcat_dir=""
mysql_dir=""
vsftp_dir=""
ssh_dir="/usr/sbin/sshd"
#进程监控
{ #{{{
for dir in
do
process_count=
for service in tomcat mysql vsftp ssh
do
echo "
if [
then
echo "
echo "
else
echo "
fi
else
continue
fi
done
done
} #}}}
(3) 流量监控脚本 network.sh
#!/bin/bash
#---------------------------------------------------------------------------------
# 说明,Linux服务器--流量监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
# 主要监控: 流量监控
# 生成的流量监控日志
# 2017.06.25 djp
#---------------------------------------------------------------------------------
path='/tmp/monitor/network'
mkdir -p
RKBPS=`expr
(4) 流量分析统计脚本 tongji.sh
#!/bin/bash
#---------------------------------------------------------------------------------
# 说明,Linux服务器--流量分析脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
# 主要监控: 流量分析
# 生成的流量分析日志
# 2017.06.25 djp
#---------------------------------------------------------------------------------
path='/tmp/monitor/network'
mkdir -p
then
TX=
fi
fi
b=`echo
then
RX=
fi
fi
done <
echo "最高上传速度为
###############################################################################
4.使用Zabbix监控
Zabbix将以上监控都集中在一起,可以实时数据,图形展显,详见Zabbix监控
---------------------
作者:openbox2008
来源:CSDN
原文:https://blog.csdn.net/openbox2008/article/details/79957081
版权声明:本文为博主原创文章,转载请附上博文链接!
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?