性能监控1

 1、JVM监控

现实企业级 Java 开发中,有时候我们会碰到下面这些问题:OOM内存不足、内存泄露、线程死锁、锁争用(Lock Contention)
 Java 进程消耗 CPU 过高jvm 有着非常棒的小块内存虚拟化技术,这会让你产生一种拥有无限内存的错觉感,其实它的开销非常大。有时候jvm 需要找出此刻堆上数据是如何被使用的,并把剩余的空间扩大——这就是垃圾回收。产生这种情况的原因是,jvm 实际获得的物理内存是有限的,因此需要在不被使用时进行内存回收和复用。在一些时间敏感的应用中,比如交易系统和通信程序,这些暂停是不能容忍的。有很多 GC 调优方法可以避免这种暂停发生。貌似上面的讨论已经跑题了。让 GC 变少的方法当然是尽量减少分配内存。有时候,你希望找出在你的程序中哪些地方导致了内存分配的压力。引起这种压力的原因有很多种。最普通的一种情况可能是jvm需要经常GC,并且时间远超过你认为的合理值。这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),跟踪 Java 应用程序瓶颈来源一直以来都是很麻烦的。当应用程序性能受到损害时,我们必须要通过一些方法来定位问题的所在,剔除安全隐患,下面就介绍一些可以帮助我我们监控 Java 信息图形化工具。

Visual VM  JDK自带的,在性能压测中用的比较多。(JDK安装目录/bin目录下,双击jvisualvm.exe文件启动)

Jconsole   (JDK安装目录/bin目录下,双击jconsole.exe文件启动)

jmc.exe     (JDK安装目录/bin目录下,双击jmc.exe文件启动)

Tprofiler   可以看到JVM整个堆栈方法耗时信息。

 

 

1.1、VisualVm

1、简介

VisualVM 是 Netbeans 的 profile 子项目,自从JDK 6 Update 7以后已经作为JDK的一部分(java启动时不需要特定参数,监控工具为在${JAVA_HOME}/bin/jvisualvm),是一款免费的Java虚拟机监控和性能分析工具。能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。

jvisualvm 从界面上看还是比较简洁的,左边是树形结构,自动显示当前本机所运行的 Java 程序,还可以添加远程的 Java VM,其中括号里面的 PID 指的是进程 ID。OverView 界面显示 VM 启动参数以及该 VM 对应的一些属性。Monitor 界面则是监控 Java 堆大小,Permgen 大小,Classes 和线程数量。

 该工具提供了一个图形界面窗口,并且可以直观的了解Java应用程序的运行时信息。jvisualvm 集成了许多工具,比如像 jmp、jinfo、jstat、jstack、JConsole 等。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度。

2、安装插件并启动 Java VisualVM

配置好 JDK 环境变量,执行 jvisualvm 就可以打开软件了,在 VisualVM 插件中心安装插件安装步骤如下 :
从主菜单中选择“工具”>“插件”,在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”,逐步完成插件安装程序。这些插件都是 .nbm 文件,也可以提前下好,在已下载标签中点击“添加插件按钮”,选择已下载的插件文件 (.nbm) 并打开,逐步完成插件安装程序。

VisualVM1.png

安装好插件后,相应的功能就可以使用了。

3、通过 Java VisualVM 连接到服务器监控 Java 程序

监控本地进程,双击左侧本地下边的进程名字就可以查看监控信息了。

接下来就是远程监控 Java 程序了,默认是使用 Jstatd 连接到远程主机的,所以在远程主机上,必须要一直运行着 jstatd 守护程序,启动方法可以参考上一篇文章。

右键点击远程-添加远程主机-输入主机ip地址,确认提交后即可看到相应的远程主机和在上面运行的 Java 程序,连接成功后应该会显示 Jstatd 及其 PID。

VisualVM2.png

通过以上方式连接服务器发现一个问题,不能监控 CPU ,提示不受此 JVM 支持,所以我们还是要使用 JMX 方式来连接远程主机,如果远端服务开启了 JMX,只需在远程主机那里右键添加一个 JMX 连接就可以了。连接成功,现在我们可以远程监控服务器性能。

VisualVM3.png

VisualVM4.png

在上图中可以看到cpu利用率和垃圾回收活动(这个在分析tomcat性能时也很重要)。然后是堆栈使用情况。下面是类的使用情况,最后一个是线程活动情况。

点击线程标签可以看到:

VisualVM5.png

上图可以非常清晰的看到线程活动情况,那些线程正在执行,哪些线程正在等待中,以及执行完毕的线程等。JDK 1.7 中的这个工具线程监控页面功能减少了,只剩时间线了(Timeline),JDK 1.6 内置的工具,还表(tab)、详细信息(Details)功能,可以右键选择查看单个进程的详细的状态信息。部分监控页还可以 Dump 出来状态文件保存下来,然后分析,如将 Heap Dump 出的远程文件 *.hprof ,拷贝到本地导入后分析。

加载后的 Dump 分析:

VisualVM6.png

这可是一个性能分析利器哦!暂时就介绍这些功能。

 

 

1.2、JConsole

1、简介

JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行,从 Java 5 开始 引入了 JConsole。您可以轻松地使用 JConsole、来监控 Java 应用程序性能和跟踪 Java 中的代码。

使 JDK 在 PATH 上,运行 jconsole 即可。当分析工具弹出时(取决于正在运行的 Java 版本以及正在运行的 Java 程序数量),可能会出现一个对话框,要求输入一个进程的 URL 来连接,也可能列出许多不同的本地 Java 进程(有时包含 JConsole 进程本身)来连接。如图所示:

JConsle1.png

想分析哪个程序就双击哪个进程,然后选择”insercure“就会连接上了。

2、设置 JAVA 程序运行时可以被 JConsolse 连接分析

本地程序(相对于开启JConsole的计算机),无需设置任何参数就可以被本地开启的JConsole连接(Java SE 6开始无需设置,之前还是需要设置运行时参数 -Dcom.sun.management.jmxremote ,启动 JMX 服务)
无认证连接 (下面的设置表示:连接的端口为8099、无需认证就可以被连接)

1
2
3
4
5
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8099 \
-Dcom.sun.management.jmxremote.authenticate= false  \
-Dcom.sun.management.jmxremote.ssl= false  \
-Djava.rmi.server. hostname =IP

 JMX:Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。 JMX 可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用 。

-Dcom.sun.management.jmxremote 可以不加,默认值是 ture;

-Dcom.sun.management.jmxremote.port 是端口号,随便设置一个就可以了;

-Dcom.sun.management.jmxremote.ssl 是否启动 ssl 连接,默认值是 true,没有配置ssl证书就设置为 false 也可是访问;

-Dcom.sun.management.jmxremote.authenticate 是否启动身份验证,默认值是 true,默认的验证文件在 ${JAVA_HOME}/jre/lib/management/ 下,可以用 -Dcom.sun.management.jmxremote. access.file 与 -Dcom.sun.management.jmxremote. password.file 来指定配置用户访问权限文件与配置用户信息的文件位置(包括用户名和密码),如果不需要配置访问用户名及密码,设置为 false 就可以了,

jmxremote.access 、jmxremote.password 这个文件最小权限要设置为 600,组和其它用户没有任何权限,否则会禁止访问;

-Djava.rmi.server.hostname 该选项是设置访问地址的,必须设置,设置为本机 IP 或 主机名,如果设置为 127.0.0.1,那么远程主机就无法访问了。

详细的安全设置参数,请参考:http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gden

3、JConsole 如何连接远程机器的 JAVA 程序

1
2
3
4
5
6
7
8
9
10
用法: jconsole [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]
   -interval         将更新间隔设置为 n 秒 (默认值为 4 秒)
   -notile           初始不平铺窗口 (对于两个或多个连接)
   -pluginpath       指定 jconsole 用于查找插件的路径
   -version          输出程序版本
   connection = pid || host:port || JMX URL (service:jmx:<协议>: // ...)
   pid               目标进程的进程 ID
   host              远程主机名或 IP 地址
   port              远程连接的端口号
   -J                指定运行 jconsole 的 Java 虚拟机的输入参数

写一个简单的一直运行的 Java 程序,运行在某台机器上如 (172.16.100.253),也可用 Tomcat 测试

1
java - cp  . -Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.managent.jmxremote.authenticate= false  -Dcom.sun.management.jmxremote.ssl= false  -Djava.rmi.server. hostname =172.16.100.253 JConsoleTest

在另外一台机器上进行连接,也可以直接使用命令:

1
jconsole 172.16.100.253:8099

 也可以在已经打开的 JConsole 界面操作 连接->新建连接->选择远程进程->输入远程主机IP和端口号->点击“连接”,如图:

JConsle2.png

然后就会进入分析界面: 

(1)性能分析

下面说说如何分析,如何使用这六个标签

Overview(概述): Displays overview information about the Java VM and monitored values.
Memory(内存): 显示内存使用信息
Threads(线程): 显示线程使用信息
Classes(类): 显示类装载信息
VM Sumary(VM摘要):显示java VM信息
MBeans: 显示 MBeans.

(2)概述

JConsle3.png

概述中将各个时间资源使用情况绘制成图表显示,不过值得一提的是对着图点击右键可以保存数据到 CSV 文件,所有图都可以导成 CVS 文件,以后可以使用其他工具来分析这些数据,。

(3)内存

JConsle4.png

这个比较有价值,参看堆内存,非堆内存,内存池的状况总体内存的分配和使用情况以及不同的 GC 进行垃圾回收的次数和时间。可以手动进行 GC 查看内存变化。在分析 JAVA 内存问题进行调优时候非常有用,你要学习 JVM 内存模型,之后会发现这里的每个值都具有意义。   GC 的算法和参数对性能有显著的影响,注意垃圾回收次数、时间、以及 partial GC 和 full GC,调整你所使用的不同 GC 和以及各个 GC 下的参数,然后在这个视图下观察,以得到好的性能。
这里贴一下 Java HotSpot VM garbage collector 下generational GC 的各代的划分图:

GC.png

关于GC,可以参考:http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

(4)线程

JConsle5.png

左下角显示所有的活动线程(如果线程过多,可以在下面的过滤栏中输入字符串过滤出你想要观察的线程)。点击某个显示会显示这个线程的名称、状态、阻塞和等待的次数、堆栈的信息。
统计图显示的是线程数目的峰值(红色)和当前活动的线程(蓝色)。
另外下面有个按钮“检测到死锁”,有时候会有用处。

(5)类

JConsle6.png

这个没什么可解释的了。

(6)VM摘要

JConsle7.png

这里可以看到,操作系统,内存,线程等全部信息,方便我们调整系统资源的分配。

(7)MBean

JConsle8.png

这里可以有一些额外的操作,方便调试代码。

(8)插件

1
jconsole -pluginpath  /usr/local/jdk1 .7.0_79 /demo/management/JTop/JTop .jar

JConsle9.png

1
JTop 插件在 JDK 的 demo 包中,还有许多其它的样例,该插件的功能一目了然。

 

 

1.3、Jmc

1、简介

Oracle 发布了 Java 7 update 40,该修订版增加了一些重要的新特性,包括 JVM 监控工具、任务控制,Java applet 规则集、Web Start 应用程序以及大量的 bug 修复。新增的一个非常好用的工具,就是 Java Mission Control(JMC 任务控制工具) 。 JRockit Misson Control 用户应该会对 mission control 的很多功能十分熟悉,JRockit 也是一款很棒的工具。Java 任务控制(JMC)是一个产品时间工具套件,它的根源是 JRockit JVM 工具。该工具套件的目的是提供不张扬的 Java 监控和管理,适合在开发和产品环境中使用。JMC 与 Java Flight Recorder 一起工作,适用于 HotSpot JVM,用来记录核心数据和事件。它是一个调优工具,一旦出现问题,这些数据就可以用来分析。 

该工具套件由三个主要的组件组成:Java 进程浏览器、JMX 控制台和 Java Flight 记录器。
Java 进程浏览器:允许用户列出并连接到本地和远程运行的Java应用程序。它能够使用 Java发现协议(JDP)自动地发现本地和远程运行的 Java 进程。
JMX 控制台:能够通过 JMX 接口管理并监控 JDK。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息。
Java Flight 记录器:提供了一种从操作系统层、JVM 和 Java 应用程序层收集事件的方式。收集的事件包括线程延时事件,例如休眠(sleep)、等待(wait)、锁竞争、I/O、GC 和方法分析。Oracle 估计对大多数应用程序而言运行 Flight 记录器的性能开销大约在 2% 左右。

2、Jmc 使用方法

打开以后界面如下:

Jmc1.png

Jmc 既可以连接本地 Java 程序,也可以连接本地 Java 程序,远端要开启 jmxremote 访问。本地程序在左侧想查看的的程序名那里,右键点击启动 JMX 控制台就可以了。远程访问在左侧空白处右键点击新建连接,如图填写好主机和端口,这里的主机和端口就是我们前面在远程服务器配置的服务器 IP 和端口。

Jmc2.png

Jmc3.png

创建完成之后我们就能看到服务器的概要信息了。通过下面的选项卡就可以切换显示其它的详细的信息了。

概览:

Jmc4.png

MBean 浏览器:

Jmc5.png

触发器:

Jmc6.png

系统:

Jmc7.png

内存:

Jmc8.png

线程:

Jmc9.png

诊断命令:

Jmc10.png

Jmc 还可以安装一些插件,增加一些功能。所有的功能都可以点击右上角的 "? " ,会通过浏览器访问本地的帮助文件。

飞行记录器使用前,需要在 Java 程序启动前加 2 个参数“ -XX:+UnlockCommercialFeatures -XX:+FlightRecorder ”,如果没有添加,无法使用飞行记录器。飞行记录器启动后,可以记录服务器一段时间内的运行状况,还可导成文件备份,需要 Java 程序启动前在加一个参数“ -XX:FlightRecorderOptions=defaultrecording=true”才可以导出,方便随时分析,这个是查找服务器性能的利器。

Jmc11.png

飞行记录器记录成功之后可以看到下面的一些信息:

Jmc12.png

 

 

 

 

JMeter 性能监测插件

 

JMeter 插件网址:http://jmeter-plugins.org/ 

一、插件一

1、下载 
首先进入网址 http://jmeter-plugins.org/downloads/all/ 下载资源 
ServerAgent-2.2.1.zip 
JMeterPlugins-Standard-1.3.1.zip 
JMeterPlugins-Extras-1.3.1.zip

其中JMeterPlugins-Standard和JMeterPlugins-Extras是客户端的,ServerAgent是服务端的。

2、配置 
将 JMeterPlugins-Standard-1.3.1.zip 中 lib\ext 目录下的 JmeterPlugins-Standard.jar 文件都放到apache-jmeter-2.13\lib\ext目录中。 
将 JMeterPlugins-Extras-1.3.1.zip 中 lib\ext 目录下的 JMeterPlugins-Extras.jar 文件放到apache-jmeter-2.13\lib\ext目录中。 
将 ServerAgent-2.2.1 放到要监控的服务器中待使用。

3、监控 
1) apache-jmeter-2.12\bin\jmeter.bat 启动JMeter 
正常启动成功后截图如下: 
这里写图片描述

如果不能启动查看jdk版本或者jdk是否安装正确。

2) 查看插件是否正常加载,如图: 
这里写图片描述

其中jp@gc 开头的为加载插件后出现的。

3) 运行 ServerAgent-2.2.1\bin\startAgent.bat(Linux使用startAgent.sh) 
(默认端口为4444,也可以参数指定 –udp-port 4445 –tcp-port 4445) 
可以看到输出内容如下:

INFO    2016-02-23 21:21:37.209 [kg.apc.p] (): Binding UDP to 4444 INFO 2016-02-23 21:21:38.208 [kg.apc.p] (): Binding TCP to 4444 INFO 2016-02-23 21:21:38.210 [kg.apc.p] (): JP@GC Agent v2.2.0 started

4) 在JMeter 中的测试计划中,按上面的截图,添加监听器 “jp@gc - PerfMon Metrics Collector” 
这里写图片描述

点击上面的启动按钮后,查看ServerAgent日志出现:

INFO    2016-02-23 21:34:46.966 [kg.apc.p] (): Accepting new TCP connection INFO 2016-02-23 21:34:46.969 [kg.apc.p] (): Yep, we received the 'test' command INFO 2016-02-23 21:34:46.971 [kg.apc.p] (): Starting measures: cpu: INFO 2016-02-23 21:34:47.123 [kg.apc.p] (): Client disconnected

运行jmeter时,成功连接然后立刻断开了,并没有获取我们想要的数据。猜想需要一个时间控制的元器件,使其能够获取一段时间的数据。

解决方法:

添加线程组,设置循环次数为”永远”; 
为线程组任意添加一个Sampler(并不设置参数); 
添加一个PerfMon Metrics Collector监听器;点击运行。(上面如果已经添加过,可直接使用无需再添加) 
然后在 jp@gc - PerfMon Metrics Collector 界面,启动。

结果:成功获取chart图,点击stop,即结束监听数据,下面是截图。 
这里写图片描述 

你就可以得到系统运行时,你所需要的常用的性能值了。

 

 

 

二、增强型监控插件plugins-manager.jar

https://jmeter-plugins.org/中下载插件,下载后可以解压缩,将plugins-manager.jar放入jmeter安装目录lib/exe,然后重启jmeter即可。

可以通过点击下图圈出来的按钮检验是否成功安装:

 

无论是对服务器资源使用率还是测试数据报表生成,甚至TPS、TRT等的监听,该插件都提供了组件支持

 

 

 三、监控3

 

一、安装InfluxDB

下载路径:https://portal.influxdata.com/downloads,以windows安装为例,linux可网上搜索;

1、配置influxdb.conf文件

2、启动influxdb

打开cmd,切换到influxdb安装目录;启动命令:influxd -config influxdb.conf

启动成功后,通过http://localhost:8083/即可访问influxdb;创建jmeter数据库;

 

二、安装Grafana

下载路径:http://docs.grafana.org/installation/,以windows安装为例,linux可网上搜索;

1、通过bin目录下的grafana-server.exe启动grafana-server;

2、配置端口号(conf目录下的defaults.ini),如不想使用默认端口,可以拷贝一份sample.ini为custom.ini,并重新配置custom.ini的端口号;

3、通过http://localhost:8081访问grafana;(ps:默认端口是3000)

4、配置datasource,并测试连通性;

5、添加dashboard并配置相关查询条件等;

cpu
 
并发数
 
响应时间
 
tps

三、安装Telegraf

Telegraf用于监控服务器cpu、硬盘、内存等参数;

1、下载:

wgethttp://get.influxdb.org/telegraf/telegraf-0.11.1-1.x86_64.rpm

2、服务器上安装:

yum localinstall telegraf-0.11.1-1.x86_64.rpm -y

3、启动服务、添加开机启动

systemctl start  telegraf.service

service telegrafstart

systemctl enable  telegraf.service

4、配置文件位置:/etc/telegraf/telegraf.conf

修改telegraf配置文件添加监控项

vim /etc/telegraf/telegraf.conf

配置grafana datasources

5、telegraf安装步骤:

1、切换root权限,切换到telegraf-1.0.1.x86_64.rpm并安装

[@HWTVM-165058 ~]$sudo su -

[root@HWTVM-165058 ~]# cd ..

[root@HWTVM-165058 /]# ls

[root@HWTVM-165058 wanglei]# yum localinstall  telegraf-1.0.1.x86_64.rpm

2、切换到etc/telegraf/telegraf.conf目录,修改telegraf.conf文件的[[outputs.influxdb]]

[root@HWTVM-165058 telegraf]#vim telegraf.conf

3、切换root权限,启动服务

[root@HWTVM-165059 ~]#service telegraf start

Starting the process telegraf [ OK ]

telegraf process was started [ OK ]

杀进程:(比如某个jmeter脚本运行一直没有停止,可通过以下命令查找进程并杀掉)

[@HWTVM-138194 ~]$ps -ef|grep java

  26995 26915  5 17:14 pts/5    00:01:20 java -server -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -jar /home/wanglei/apache-jmeter-3.2/bin/ApacheJMeter.jar -n -t P2P-F0300001-fronteamst-184.jmx

27451 27312  0 17:39 pts/0    00:00:00 grep java

[@HWTVM-138194 ~]$kill 26995

[@HWTVM-138194 ~]$ps -ef|grep java

27457 27312  0 17:39 pts/0    00:00:00 grep java

四、Jmeter例子示范

1、添加Backend Listener监听器,配置graphiteHost;

 
Backend Listener
 
此处jmeter是表名

2、运行脚本,根据配置的查询条件监控测试报告;

性能测试监控图

五、InfluxDB常用语句

打开cmd,通过命令启用influx.exe:.\influx --host localhost --port 8083

select * from /.*/ limit 1---查询所有表,显示一条记录

show measurements---显示所有表

show databases     ---展示所有数据库

help                      ---帮助命令

 

 

nmon监控

一、检查安装环境

# uname –a (查看操作系统信息,所检查服务器为64位操作系统)

Linux iZ94pmb2p24Z 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

#  lsb_release –a  (查看linux发行商版本,所检查服务器linux版本为:CentOS6.5)

LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch

Distributor ID: CentOS

Description:    CentOS release 6.5 (Final)

Release:    6.5

Codename:   Final

二、下载软件

nmon:

版本:nmon_linux_14i.tar.gz (下载适合服务器的版本)

地址:https://osdn.jp/projects/sfnet_nmon/releases/ 

nmonanalyser

版本:nmon_analyser_v47.zip

地址:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser

三、安装

安装位置:/home/nmon (任意目录)

1、 在home 目录下创建nmon文件夹:#  mkdir nmon

2、 上传nmon_linux_14i.tar.gz 到nmon目录

3、 解压:#  tar –zxvf nmon_linux_14i.tar.gz

4、 赋权限:#  chmod –R 755 nmon

5、 启动nmon:#  ./nmon_x86_64_sles11(在nmon目录下执行命令)

安装成功显示以下界面:

 

四、实时监控

输入以下命令:

c         可显示CPU的信息

m       对应内存

n        对应网络

d        可以查看磁盘信息

t         可以查看系统的进程信息

 

五、配置环境变量

1、修改启动文件名称:

# mv nmon_x86_64_sles11 nmon

# ./nmon

2、 添加到环境变量中:

# vim /etc/profile (在profile中写入以下两行内容)

PATH=$PATH:/home/nmon/nmon ($PATH:后为命令的路径)

export PATH

3、 保存退出

4、 使配置文件立即生效

         # source /etc/profile

         # nmon (在任何目录下执行nmon命令启动nmon)

六、采集监控数据

在实际的性能测试中我们需要把一段时间之内的数据记录下来,如:

1、采集数据

# nmon -s1 -c60 -f -m /home/nmon

# ll /home/nmon/

total 15220

-rw-r--r-- 1 root root   23923 Oct 14 16:59  chen_151014_1659.nmon

 

参数说明:

-s1            每隔n秒抽样一次,这里为1秒

-c60         取出多少个抽样数量,这里为60,即监控=1*60/60=1分钟

-f               按标准格式输出文件名称:<hostname>_YYMMDD_HHMM.nmon

-m            指定监控文件的存放目录,-m后跟指定目录

 

七、生成图形化报表

1、将.nmon文件转化成.csv文件

# sort chen _151014_1659.nmon > chen _151014_1659.csv

# ll /home/nmon

total 15300

-rw-r--r-- 1 root root   51999 Oct 14 17:09 chen_151014_1659.csv

-rw-r--r-- 1 root root   51999 Oct 14 17:00 chen _151014_1659.nmon

2、将.csv文件下载到本地

3、打开nmon analyser工具

在本地解压nmon_analyser_v47.zip

双击打开:nmon analyser v47.xlsm

点击Analyse nmon data按钮,加载之前下载的chen_151014_1659.csv文件。

补充说明:本地安装的excle是2010版本

八、结果分析

九、结果nmon运行

nmon运行本身是会消耗系统资源,如需关闭nmon,直接kill掉

# ps -ef | grep nmon       (得到pid)

# kill -9 pid                           (安全kill)

 

 

 

zabbix

  Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于CS架构。可用于监视各种网络服务、服务器和网络机器等状态。使用MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 等数据库储存资料。Server 端基于C语言、Web 管理端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各种协定做死活监视。在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。

zabbix官网: https://www.zabbix.com

zabbix 主要由2部分构成 zabbix server和 zabbix agent

zabbix proxy是用来管理其他的agent,作为代理

 

zabbix监控范畴

  ²  硬件监控 :Zabbix IPMI Interface

  ²  系统监控 :Zabbix Agent Interface

  ²  Java 监控:ZabbixJMX Interface

  ²  网络设备监抟:Zabbix SNMP Interface

  ²  应用服务监控:Zabbix Agent UserParameter

  ²  MySQL 数据库监控:percona-monitoring-pldlgins

  ²  URL监控:Zabbix Web监控

 

说明:

操作系统:CentOS

IP地址:192.168.21.127

Web环境:Nginx+MySQL+PHP

zabbix版本:Zabbix 2.2 LTS

备注:Linux下安装zabbix需要有LAMP或者LNMP运行环境

准备篇:

一、Web环境:Nginx+MySQL+PHP

CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

http://www.osyunwei.com/archives/7891.html

二、zabbix软件包下载

zabbix-2.2.6

http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.6/zabbix-2.2.6.tar.gz

上传zabbix-2.2.6.tar.gz到服务器/usr/local/src目录下面

安装篇

一、创建、导入zabbix数据库

cd /usr/local/src #进入软件包下载目录

tar zxvf zabbix-2.2.6.tar.gz #解压

cd /usr/local/src/zabbix-2.2.6/database/mysql #进入mysql数据库创建脚本目录

ls #列出文件,可以看到有schema.sql、images.sql、data.sql这三个文件

 

mysql -u root -p #输入密码,进入MySQL控制台

create database zabbix character set utf8; #创建数据库zabbix,并且数据库编码使用utf8

insert into mysql.user(Host,User,Password) values('localhost','zabbix',password('123456')); #新建账户zabbix,密码123456

flush privileges; #刷新系统授权表

grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456' with grant option; #允许账户zabbix能从本机连接到数据库zabbix

flush privileges; #再次刷新系统授权表

use zabbix #进入数据库

source /usr/local/src/zabbix-2.2.6/database/mysql/schema.sql #导入脚本文件到zabbix数据库

source /usr/local/src/zabbix-2.2.6/database/mysql/images.sql #导入脚本文件到zabbix数据库

source /usr/local/src/zabbix-2.2.6/database/mysql/data.sql #导入脚本文件到zabbix数据库

注意:请按照以上顺序进行导入,否则会出错。

exit #退出

或者这样导入

mysql -uzabbix -p123456 -hlocalhost zabbix < /usr/local/src/zabbix-2.2.6/database/mysql/schema.sql

mysql -uzabbix -p123456 -hlocalhost zabbix < /usr/local/src/zabbix-2.2.6/database/mysql/images.sql

mysql -uzabbix -p123456 -hlocalhost zabbix < /usr/local/src/zabbix-2.2.6/database/mysql/data.sql

cd /usr/lib64/mysql #32位系统为/usr/lib/mysql,注意系统版本同,文件版本可能不一样,这里是16.0.0

ln -s libmysqlclient.so.16.0.0 libmysqlclient.so #添加软连接

ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so #添加软连接

二、安装zabbix

1、添加用户:

groupadd zabbix #创建用户组zabbix

useradd zabbix -g zabbix -s /bin/false #创建用户zabbix,并且把用户zabbix加入到用户组zabbix中

2、安装依赖包 #CentOS使用yum命令安装

yum install net-snmp-devel curl curl-devel mysql-devel

备注:以上软件包如果在安装Web环境LAMP或者LNMP时已经安装过,此步骤可忽略

3、安装zabbix

ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2 #添加软连接

/sbin/ldconfig #使配置立即生效

cd /usr/local/src/zabbix-2.2.6 #进入安装目录

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-net-snmp --with-libcurl --enable-proxy --with-mysql=/usr/bin/mysql_config #配置

make #编译

make install #安装

ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ #添加系统软连接

ln -s /usr/local/zabbix/bin/* /usr/local/bin/ #添加系统软连接

说明:find / -name mysql_config 查找位置,如果没有mysql_config,需要安装yum install mysql-devel

4、添加zabbix服务对应的端口

vi /etc/services #编辑,在最后添加以下代码

# Zabbix

zabbix-agent 10050/tcp # Zabbix Agent

zabbix-agent 10050/udp # Zabbix Agent

zabbix-trapper 10051/tcp # Zabbix Trapper

zabbix-trapper 10051/udp # Zabbix Trapper

:wq! #保存退出

5、修改zabbix配置文件

cd /usr/local/zabbix/etc

vi /usr/local/zabbix/etc/zabbix_server.conf

DBName=zabbix #数据库名称

DBUser=zabbix #数据库用户名

DBPassword=123456 #数据库密码

ListenIP=127.0.0.1 #数据库ip地址

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #zabbix运行脚本存放目录

:wq! #保存退出

vi /usr/local/zabbix/etc/zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

UnsafeUserParameters=1 #启用自定义key

:wq! #保存退出

6、添加开机启动脚本

cp /usr/local/src/zabbix-2.2.6/misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server #服务端

cp /usr/local/src/zabbix-2.2.6/misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd #客户端

chmod +x /etc/rc.d/init.d/zabbix_server #添加脚本执行权限

chmod +x /etc/rc.d/init.d/zabbix_agentd #添加脚本执行权限

chkconfig zabbix_server on #添加开机启动

chkconfig zabbix_agentd on #添加开机启动

7、修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

:wq! #保存退出

vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

:wq! #保存退出

三、配置web站点

cd /usr/local/src/zabbix-2.2.6

cp -r /usr/local/src/zabbix-2.2.6/frontends/php /usr/local/nginx/html/zabbix

chown www.www -R /usr/local/nginx/html/zabbix

备注:/usr/local/nginx/html为Nginx默认站点目录 www为Nginx运行账户

service zabbix_server start #启动zabbix服务端

service zabbix_agentd start #启动zabbix客户端

四、修改php配置文件参数

1、vi /etc/php.ini #编辑修改

post_max_size =16M

max_execution_time =300

max_input_time =300

:wq! #保存退出

2、vi /usr/local/php/etc/php-fpm.conf #编辑修改

request_terminate_timeout = 300

:wq! #保存退出

service php-fpm reload #重启php-fpm

五、安装web

在浏览器中打开:

http://192.168.21.127/zabbix/setup.php

 

Next

检查系统环境设置,必须全部都为ok,才能继续

Next

 

配置MySQL数据库信息

Database:MySQL

Database host:127.0.0.1

Database port:use default port

Database name:zabbix

User:zabbix

Password:123456

 

Test connection   #测试数据库连接是否正常,显示ok表示通过

Next  默认

 

Next

 

Finish  安装完成

六、更改zabbix默认语言为简体中文、替换监控图像上系统默认的中文字体

1、修改系统配置文件,让web页面支持简体中文显示

vi /usr/local/nginx/html/zabbix/include/locales.inc.php #编辑修改

'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => false),

修改为

'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => true),

:wq! #保存退出

2、替换监控图像上系统默认的字体 #默认字体不支持中文,如果不替换,图像上会显示乱码

在Windows系统中的C:\Windows\Fonts目录中复制出一个中文字体文件,例如msyh.ttf

把字体文件msyh.ttf上传到zabbix站点根目录下fonts文件夹中

例如:/usr/local/nginx/html/zabbix/fonts

备份默认的字体文件:DejaVusSans.ttf-bak

修改msyh.ttf名称为DejaVusSans.ttf

3、在浏览器中打开:

http://192.168.21.127/zabbix

 

账号:admin

密码:zabbix

Sign in 登录

如下图所示

 

 

点击Profile

如下图所示

 

Language:Chinese(zh_CN)  #简体中文

点Save 保存

退出站点,重新登录之后,如下图所示

默认界面已经是中文显示

 

至此,Zabbix安装图解教程完成。

 

转载于:https://www.cnblogs.com/tester-l/p/8205010.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值