1. Nmon介绍
Nmon是一款计算机性能系统监控工具,因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统。
2. Nmon可监控的数据
内存使用情况
磁盘适配器
文件系统中的可用空间
CPU使用率
页面空间和页面速度
异步I/O,仅适用于AIX
网络文件系统(NFS)
磁盘I/O速度和读写比率
服务器详细信息和资源
内核统计信息
消耗资源最多的进程
运行队列信息
①、占用系统资源少(一般不到2%)
②、功能强大(监控数据类型全面)
③、结合grafana之类的仪表图,可以更直观的实时展示所监控的数据
④、移植性、兼容性较好
在安装之后,需要检查操作系统的信息和Linux的发行版,来确定对应的nmon版本
# 查看操作系统的信息
uname -a
#Linux查看版本当前操作系统发行版信息
cat /etc/issue 或 cat /etc/redhat-release
如下:
如图:我的系统为64位,Linux的版本为centos7.6
下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
根据我的操作系统,选择需要的内容进行下载:
下载好之后通过xftp上传到服务器。然后执行以下命令:
# 新建一个nmon文件夹
mkdir nmon
# 解压到指定目录
tar xvfz nmon16e_mpginc.tar.gz -C /root/nmon
# 给工具授权
chmod -x nmon 777
# 进入安装目录
cd nmon
cd nmon
#运行
./nmon
# c
查看CPU相关信息
# m
查看内存相关信息
# d
查看磁盘相关信息
# n
查看网络相关信息
# t
查看相关进程信息
# h
查看帮助相关信息
为了方便多场景批量监控,作者用golang写了个监控程序,可以通过web页面启动和停止nmon服务, 适配Loadrunner和jmeter进行性能测试,可以做到批量执行场景并生成监控报告
环境适配:该执行文件默认为CentOS(6.5-7.4)版本,Ubuntu和SUSE需要下载对应版本的nmon替换!
go的http框架采用gin:https://gin-gonic.github.io/gin/
图表插件:echarts:http://echarts.baidu.com/
见gitee:https://gitee.com/mzky/easyNmon
通过xftp上传到服务器,新建easynmon的文件夹
然后解压到指定目录
tar -zxvfeasyNmon.tar.gz -C /root/easynmon
进入文件夹
cd easynmon
cd easynmon
然后运行./easynmon
出现下面内容,则表示启动成功
通过访问服务器的ip+端口即可访问。
可以通过帮助信息里面的信息,访问web页面查看该工具的页面管理功能,如下图:
SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
架构:
下载:
地址:http://skywalking.apache.org/zh/downloads/
目前建议使用6.6的版本,可以完美兼容我们公司的系统
下载完成之后解压即用,无需安装
不需要修改配置文件,在bin目录下执行startup.bat(windows)或startup.sh(Linux)即可启动服务:
出现conllector和webapp表示成功
执行startup.bat之后会启动如下两个服务:
(1)Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息,Http默认端口 12800,gRPC默认端口 11800。
(2)Skywalking-Webapp:管理平台页面 默认端口 8080
在window环境下:
在tomcat的bin目录下的catalina.bat文件第一行增加如下语句:
set"CATALINA_OPTS=-javaagent:D:\apache-skywalking-apm-6.6.0-1\agent\skywalking-agent.jar"
这句话是说,启动tomcat的时候,使用javaagent探针,探针的位置在D:\apache-skywalking-apm-6.6.0-1\agent\skywalking-agent.jar
也就是说,D:\apache-skywalking-apm-6.6.0-1\agent\skywalking-agent.jar这个是你的skywalking的绝对路径
在Linux环境下:
在tomcat的bin目录下的catalina.sh文件的第一行增加
CATALINA_OPTS="$CATALINA_OPTS-javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar";exportCATALINA_OPTS
关键就是skywalking-agent.jar这个jar包。把路径指向它即可
如果无效,请先关掉tomcat和skywalking,然后添加Tomcat的监控,然后在启动tomcat,启动skywalking。
成功监控之后,访问服务器的ip+skywalking的端口(8080)即可
webapp的端口设置。
修改port的值,重启即可
应用名称修改:
修改完成之后的效果:
数据库的修改:
Skywalking使用h2作为自带的数据库。可以把它修改为mysql的数据库,或者是使用es(Elasticsearch)集群来存贮监控数据
需要在mysql中新建好库
完成以上之后,还需要一个mysql连接驱动的jar包。随意找一个mysql连接驱动的jar包,放在oap-libs文件夹下。
完成之后,重启服务,skywalking会自动建表。
cpm 每分钟请求数:
cpm 全称 callper minutes,是吞吐量(Throughput)指标。
SLA 服务等级协议:
SLA 全称Service-Level Agreement,直译为 “服务等级协议”,用来表示提供服务的水平。
在IT中,SLA可以衡量平台的可用性,下面是N个9的计算:
1年 = 365天= 8760小时
99 = 8760 * 1% => 3.65天
99.9 = 8760 * 0.1% =>8.76小时
99.99 = 8760 * 0.01% =>52.6分钟
99.999 = 8760 * 0.001% =>5.26分钟
因此,全年只要发生一次较大规模宕机事故,4个9肯定没戏,一般平台3个9差不多。
但2个9就基本不可用了,相当于全年有87.6小时不可用,每周(一个月按4周算)有1.825小时不可用。
Response Time 响应时间:
表示请求响应时间,对于人来说,响应时间最好不要超过2秒,超过就会觉得卡顿。对于系统接口交互来说,时间自然越短越好,500ms以内是比较好的。
Percent Response 百分位数统计:
表示采集样本中某些值的占比,Skywalking 有 “p50、p75、p90、p95、p99” 一些列值。
途中的 “p99:390” 表示 99%请求的响应时间在390ms以内。
而99%一般用于抛掉一些极端值,表示绝大多数请求。
Slow Endpoint 慢端点:
Endpoint 表示具体的服务,例如一个接口。下面是全局Top N的数据,通过这个可以观测平台性能情况。
监控视角:
Heatmap 热力图:
Heapmap 可译为热力图、热度图都可以,途中颜色越深,表示请求数越多,这和GitHub Contributions很像,commit越多,颜色越深。
横坐标是响应时间,鼠标放上去,可以看到具体的数量。
通过热力图,一方面可以直观感受平台的整体流量,另一方面也可以感受整体性能。
Topology 拓扑图:
拓扑图用来描述平台各服务之间的依赖关系,也可以理解为平台服务的整体结构。
下图是整体的依赖关系,正方体上面的小图标表示应用的类型,如:Spring MVC、H2、Kafka
JVM 信息:
实例中有JVM的堆、GC、CPU、CLR等信息,不过对于监控,Promethus 是个更好的选择。