监控和告警


FIT2CLOUD的监控包括: 虚机监控、监控面板、站点监控、自定义监控和告警设置。

一、查看单台虚机的监控数据

FIT2CLOUD所管理的机器中安装了FIT2CLOUD Agent,这个agent会每分钟上报监控数据,包括默认监控数据和自定义监控。用户进入虚机列表页面后,选中一台机器,选择"操作"->“监控数据"即可以查看这个机器的监控数据,如下图所示。

alt

1. 默认的监控数据包括

CPU使用率(CPU Usage)
计算方法为: CPU使用率(CPU Usage) = CPU用户使用率(User Usage) + CPU系统使用率(System Usage)
Load Average
CPU运行队列平均长度,目前显示的是1分钟的
内存使用率
计算方法为: 

使用命令 free -m

内存使用率(Mem Usage) = (Used - Buffers - Cached) / 内存总量(MemTotal)
最高磁盘使用率
使用命令 df -TH 获取各个磁盘的 Use%

计算方法为: 最高磁盘使用率 = Max(Disk 1..n Usage)
网络速率
为每秒钟进出的流量,单位为Mb/s

每秒钟流入流量计算方法为: 当前分钟收到数据量 - 前一分钟收到的数据量 / 60

每秒钟流出流量计算方法为: 当前分钟发出数据量 - 前一分钟发出的数据量 / 60
I/O使用率
使用命令 iostat -d -x 1 1 获取%util

2. 用户可以选择的时间范围包括

  • 最近30分钟
  • 最近1小时
  • 最近3小时
  • 最近6小时
  • 最近12小时
  • 最近1天
  • 最近7天
  • 最近30天
  • 最近1年

二、查看集群级别、虚机组级别的监控数据

FIT2CLOUD不仅支持单台监控数据的查看,而且支持集群级别、虚机组级别的监控数据的查看,具体的步骤是:

1.监控告警 -> 监控面板

alt

集群CPU使用率平均值(CPU Usage)
监控间隔: 1分钟

每个时间点的数据计算方法为: 

集群CPU使用率最大值(CPU Max Usage) = Max(Host 1..n CPU Usage)

集群CPU使用率平均值(CPU Average Usage) = Sum(Host 1..n CPU Usage) / n

集群CPU使用率最小值(CPU Min Usage) = Min(Host 1..n CPU Usage)
Load Average平均值
监控间隔: 1分钟

每个时间点的监控数值计算方法为:

Load Average平均值 = 各个主机的load average之和 / 主机数量
内存使用率平均值
监控间隔: 1分钟

每个时间点的监控数值计算方法为:

内存使用率平均值 = 各个主机的内存使用率之和 / 主机数量

每个时间点的单个主机的内存使用率计算方法为: 内存使用率(Mem Usage) = (内存使用量 - Buffered - Cached) / 内存总量(Total)
最高磁盘使用率平均值
监控间隔: 1分钟

每个时间点的监控值计算方法为: 

最高磁盘使用率 = Max(Disk1 Usage, Disk2 Usage, Disk3 Usage)
网络每秒流出流量总和
监控间隔: 1分钟

每个时间点的监控值计算方法为: 

网络每秒流出流量总和 = 为各个主机过去1分钟流出的流量的和 / 60,单位为Mb/s
网络每秒流入流量总和
监控间隔: 1分钟

每个时间点的监控值计算方法为: 

网络每秒流入流量总和 = 为各个主机过去1分钟流入的流量的和 / 60,单位为Mb/s

2. 选择某个集群或者虚机组

alt

三、自定义监控

FIT2CLOUD 提供用户自定义虚机监控功能,通过编写自定义监控脚本,设定监控规则,可以在页面上方便的查看监控数据,支持多个自定义监控规则,并且支持查看多时间窗口的监控数据。

与FIT2CLOUD默认监控的不同在于,自定义监控更加灵活,高度可控,结合具体业务需求,定制属于用户自己监控规则。

1. 设置自定义监控脚本

1) 进入自定义监控项列表页面

监控告警 -> 自定义监控

alt

自定义监控项列表页面

alt

2) 如果要设定的自定义监控项不存在,则新建自定义监控

  • 第一步: 自定义监控项列表页面,点击"新建”
  • 第二步: 创建自定义监控项:填写自定义监控项名称, Shell脚本,单位,描述

alt

3) 把自定义监控项应用到指定集群的虚机组

  • 第一步: 选择自定义监控项
  • 第二步: 点击自定义监控项所在行的"添加监控"按钮,进入虚机组查询选择页面
  • 第三步: 在虚机组查询/选择页面,查询
  • 第四步: 选择要应用的虚机组(可多选)
  • 第五步: 点击"添加监控按钮"

alt

2. 监控脚本举例

  • 获取进程总数:ps -ef | wc -l
  • 获取java进程数:ps axu | grep java | grep -v “grep” | wc -l
  • 端口是否存在: netstat -ntpl | grep 8080 | wc -l
  • 获取文件句柄总数: lsof | wc -l
  • 获取MySQL连接数: mysqladmin -uroot -pPassword extended-status | grep Threads_connected | awk ’{ print $4}’
  • 获取TCP ESTABLISHED连接数信息: netstat -an|awk ’/^tcp/’ | grep ESTABLISHED | wc -l
  • 获取TCP LISTEN连接数信息: netstat -an|awk ’/^tcp/’ | grep LISTEN | wc -l

3. 查看自定义监控数据

一旦设置好自定义监控规则,FIT2CLOUD系统就会自动地在相应的虚机上执行指定命令,每隔1分钟同步一次执行结果,在虚机列表页面也可以 方便地查看自定义监控结果。

alt

自定义监控和系统默认监控指标在同一个窗口中呈现,下拉菜单可以选择不同的自定义监控指标:

alt

4. 自定义监控FAQ

1) 自定义监控是否有任何限制?

目前,自定义监控脚本以Root权限执行,即可以在虚机上操作任何资源,请按照具体业务需求编写。 同时,请注意监控名称全局唯一,并且不能占用系统保留名称。 系统保留名称包括: network-io, disk-io-util, memory-usage, loadaverage-one, disk-fullest, cpu-usage等。

2) 自定义监控脚本有什么范例?

首要一定确保自定义监控脚本返回数值型变量,否则无效。前面文档中有一些例子,下面是一些常用的供Copy:

示例:Weblogic 性能监控

Weblogic 做个一个JVM 容器,相比其他开源产品在性能优化调优方面非常有优势,对weblogic监控,不能局限于进程PID,端口监听等,有时候由于各种原因weblogic已经锁死或者卡住了,但是进程和端口 都还在,这就需要我们更深入的监控 weblogic 性能。

Weblogic 自带了命令行接口,我们可以调用这些接口采集监控数据。(注意填写正确的用户名密码和weblogic.jar 包位置)

**JDBC 最高连接数**
java -cp /bea/wlserver_10.3/server/lib/weblogic.jar weblogic.Admin -url localhost:7001 -username <YOUR_NAME> -password <YOUR_PASSWORD> GET -pretty -mbean “base_domain:ServerRuntime=AdminServer,Name=sispDS,Type=JDBCConnectionPoolRuntime,Location=AdminServer” | awk ‘/ActiveConnectionsHighCount/{print $2}**Server Threads 状态**
java -cp /bea/wlserver_10.3/server/lib/weblogic.jar weblogic.Admin -url localhost:7001 -username <YOUR_NAME> -password <YOUR_PASSWORD> GET -pretty -type ServerRuntime | grep HealthState | grep HEALTH_OK | wc -l

**JVM 堆空闲百分比**
java -cp /bea/wlserver_10.3/server/lib/weblogic.jar weblogic.Admin -url localhost:7001 -username <YOUR_NAME> -password <YOUR_PASSWORD> GET -pretty -type JVMRuntime | awk ‘/HeapFreePercent/{print $2}**Sockets 连接数量**
java -cp /bea/wlserver_10.3/server/lib/weblogic.jar weblogic.Admin -url localhost:7001 -username <YOUR_NAME> -password <YOUR_PASSWORD> GET -pretty -type ServerRuntime |  awk ‘/OpenSocketsCurrentCount/{print $2}
示例:查看当前网络链接数
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq | wc -l 
示例:查看log文件大小
ls -l  /var/log/*.log /var/log/*.out /var/log/*.swp 2>/dev/null | awk '{sum+=$5} END {print sum}' 
示例:查看http的并发请求数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' | grep ESTABLISHED | awk '{print $2}' 
示例:查看某磁盘设备的瞬时读写速率
iostat输出:
[root@iZ94sgwbrtaZ ~]# iostat -x -k
Linux 2.6.32-431.23.3.el6.x86_64 (iZ94sgwbrtaZ)     06/07/2015  _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.78    0.00    0.47    0.34    0.00   98.40

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.04     8.45    2.69    4.84    34.85    53.19    23.39     0.13   17.58   0.60   0.45
查看磁盘xvda设备的瞬时读速率
iostat -x -k | grep xvda | awk '{print $6}'
查看磁盘xvda设备的瞬时写速率
iostat -x -k | grep xvda | awk '{print $7}'

四、告警设置

虚机组页面, 找到需要设置的虚机组,并点击这个虚机组的所在行最右边一列的 “操作”, 在操作的下来菜单中点击 “告警设置” 进入告警设置页面;

alt

4. 在告警设置设置页面, 点击"新建"进入"新增告警设置"页面

  • 告警项目选择"CPU使用率"
  • 持续时长选择"15分钟"
  • 统计方式选择"平均值"
  • 比较方式选择"大于"
  • 警告界限填写 “70”
  • 错误界限填写 “90”

alt

5. 在告警设置页面, 点击 “保存”

当页面提示成功保存告警设置后,可以看到在告警设置列表里列出了刚刚添加的告警设置

alt

五、站点监控

1. 首先在页面最上方一行的"监控告警" 栏里选择 “站点列表”;

alt

2. 点击"新建",在弹出的对话框中填写站点监控的相关配置信息并保存;

alt

3. 进行完前两步的操作后,就可以在站点列表页面点击“详细记录”来查看站点的运行情况了;

alt