使用zabbix监控TCP连接状态, Zabbix之监控虚拟主机EXSI

http://john88wang.blog.51cto.com/2165294/1586234  

http://www.kasonme.com/2014/10/zabbix-tcp-connections/ 

一 监控原理

$ /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}'

TIME_WAIT 3464

FIN_WAIT1 31

FIN_WAIT2 3

ESTABLISHED 12

SYN_RECV 6

CLOSING 8

LISTEN 7


可以使用man netstat查看TCP的各种状态信息描述

ESTABLISHED       socket已经建立连接

CLOSED            socket没有被使用,无连接

CLOSING           服务器端和客户端都同时关闭连接

CLOSE_WAIT        等待关闭连接

TIME_WAIT         The socket is waiting after close to handle packets still in the network. 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态

LAST_ACK          The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文

LISTEN            监听状态

SYN_RECV          接收到SYN报文

SYN_SENT          已经发送SYN报文

FIN_WAIT1         The socket is closed, and the connection is shutting down

FIN_WAIT2          Connection is closed, and the socket is waiting for a shutdown from the remote end.


2.监控脚本编写

tcp_connection_status.sh

#!/bin/bash
#this script is used to get tcp and udp connetion status
#tcp status
metric=$1
tmp_file=/tmp/tcp_status.txt
/bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' > $tmp_file
 
case $metric in
   closed)
          output=$(awk '/CLOSED/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   listen)
          output=$(awk '/LISTEN/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   synrecv)
          output=$(awk '/SYN_RECV/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   synsent)
          output=$(awk '/SYN_SENT/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   established)
          output=$(awk '/ESTABLISHED/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   timewait)
          output=$(awk '/TIME_WAIT/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   closing)
          output=$(awk '/CLOSING/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   closewait)
          output=$(awk '/CLOSE_WAIT/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   lastack)
          output=$(awk '/LAST_ACK/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
         ;;
   finwait1)
          output=$(awk '/FIN_WAIT1/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
         ;;
   finwait2)
          output=$(awk '/FIN_WAIT2/{print $2}' $tmp_file)
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
         ;;
         *)
          echo -e "\e[033mUsage: sh  $0 [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]\e[0m"
   
esac

3.添加zabbix配置文件

tcp_status.conf

UserParameter=tcp.status[*],/usr/local/zabbix/bin/tcp_connection_status.sh $1

service zabbix-agent restart

4.在master或proxy端使用zabbix_get测试

/usr/local/zabbix/bin/zabbix_get -s 192.168.1.179 -p 10055 -k tcp.status[timewait]


5.添加zabbix监控模板

模板下载:http://yunpan.cn/cVhtM6CMBM97D    访问密码 9289

wKioL1U7RQHS5g9yAASDFoJupJI839.jpg

wKiom1U7Q6-RrECMAAQlhHo7mwM045.jpg




Zabbix之监控虚拟主机EXSI


Zabbix2.2.0版本开始支持监控VMware 虚拟机的可用性。

Zabbix 可以使用low-level discovery 规则去自动发现 VMware hypervisors and virtual machines 之后创建主机并监控他们基于之前定义的主机规则

Zabbix默认数据集提供了几个现成的模板或ESX hypervisor监测VMware vCenter

小要求VMware vCentervSphere的版本是4.1


虚拟机监控是两个步骤:

第一个数据是由VMware收集器Zabbix集过程。这些过程中获取必要的信息从VMwareWeb服务的SOAP协议,预处理并存储到Zabbix服务器共享内存。然后,数据用Zabbix简单检查VMware键对检索。 

数据收集从一个单一的Vmware服务通过一个单一的采集进程不能共享到多个数据收集进程。然而,个收集器可以处理多个虚拟机服务。因为推荐使用ESX hypervisor直接整个vCenter服务监控

 

配置

Zabbix server 编译时候添加以下参数:

--with-libxml2

--with-libcurl

安装完成后,在zabbix_server.conf配置文件需要指定‘StartVMwareCollectors’参数,否则启动zabbix_server是不会启动vmware相关的进程

vi /data/zabbix/etc/zabbix_server.conf

StartVMwareCollectors=5

VMwareFrequency=60

VMwareCacheSize=8M

下面这些参数可用于虚拟机的监控:

选项

描述

区间

默认

StartVMwareCollectors 

0-250 

Number of pre-forked vmware collector instances. 

VMwareCacheSize 

256K-2G 

8M 

Shared memory size for storing VMware data.
A VMware internal check zabbix[vmware,buffer,…] can be used to monitor the VMware cache usage (see Internal checks).
Note that shared memory is not allocated if there are no vmware collector instances configured to start. 

VMwareFrequency 

10-86400 

60 

Delay in seconds between data gathering from a single VMware service.
This delay should be set to the least delay period of an VMware monitoring item. 

 


Zabbix可以使用low-level 发现规则去自动发现VMware hypervisors and virtual machines. 

wKiom1VlbF_TsoxFAAGwTnJJAq0202.jpg

在上面的截图中发现规则的键值是 vmware.hv.discovery[{$URL}]

主机原型

主机原型可以与低层次的发现的规则。当虚拟机被发现后,这些原型成为真正主机。原型,在被发现前,不能有自己的项目和触发器,其他链接模板。发现主机将属于一个现有的主机,将现有的主机的IP的主机配置。

wKiom1VlbMDSGv0bAAFW9ZEUmd0649.jpg

在主机原型配置,LLD宏用于主机名称,可见的名称和主机组原型领域。主机状态,现有的主机组和模板连锁等都是不错的选择,可以设置。

wKiom1VlbyODwP9SAAF5vJdqAtU228.jpg

发现主机的前缀,创造了他们发现规则的名称,在主机列表。发现主机可以手动删除。发现主机也会被自动删除,以保持失去资源期(天)发现规则的价值。大多数的配置选项是只读的,除了启用/禁用主机和主机库存。发现主机不能有自己的主机的原型。

 

开始使用模板

Zabbix默认数据集提供了几个现成的模板,用于监测VMware vCenter或直接ESX hypervisor

这些模板包含预配置的LLD规则以及监测虚拟设备的一些内置的检查。

请注意

“模板为VMware”模板可以用于VMware vCenterESX hypervisor监测。

“模板为VMware虚拟机管理程序”和“模板为VMware客”模板被发现,通常不应该手动连接到主机。

 

主机配置

在使用简单检查前需要先定义一下宏命令:

{$URL} - VMware service (vCenter or ESX hypervisor) SDK URL (https://servername/sdk).

{$USERNAME} - VMware service user name

{$PASSWORD} - VMware service {$USERNAME} user password

Example

下面的例子讲述的是如何对VMware主机进行监控

编译zabbix server 必须有一下参数  --with-libxml2 and --with-libcurl

在zabbix server设置StartVMwareCollectors 值为1 或更大

新建主机

设置为VMware认证所需的主机的宏:

wKiom1Vlb1zDLY1qAAEAAqfmB3s376.jpg

关联模板

wKiom1Vlb4qDvluuAADNExzQBkQ827.jpg

稍等就会自动出现在主机里了

wKiom1Vlb6jR2z8aAABBO9uYEhU974.jpg

http://oceanszf.blog.51cto.com/6268931/1540114

http://xuqiangqiang.blog.51cto.com/8290140/1335321   



你可能感兴趣的:(zabbix)