zabbix 配置监控 websocket URL状态及响应速度

时间:2024-03-29 12:12:59

                                 配置zabbix监控url状态响应速度

例:

1、点击配置主机在一台主机上选择web监测

zabbix 配置监控 websocket URL状态及响应速度

2、点击web监测进入后点击右上角的创建web场景,名称随便起易记即可,应用集可创建一个单独存放web监测的,客户端选择浏览器,然后点击步骤添加,名称和上一层一样即可,url填写需要监测的url,超时是连接这个url多久连不上报超时,状态码填写访问此url返回的状态码,当返回的值不是此状态码的情况下会出发告警。

zabbix 配置监控 websocket URL状态及响应速度

zabbix 配置监控 websocket URL状态及响应速度

3、添加完成之后可在主页选择监测中,web监测中查看

zabbix 配置监控 websocket URL状态及响应速度

                                    配置zabbix监控websocket连接状态

 

例:(websocket需安装node服务)

  1. 在需要监测的agent端编写监测脚本,监测脚本所实现的功能尝试连接五次wss,求这五次的平均值,如果五次其中有一次连接失败则增加200s的时间。(脚本内容如下)

 

WSNAME="$1/"

MONFILE=/data/source/t.js

#cd  /data/source

NODEBIN=`which node`

OUTLOG=/tmp/websocket.log

times=0

time=0

T=0

hour=`date "+%Y%m%d"`

start=`date +"%s"`

if [ -n "$NODEBIN" ] ;then

        for(( i=1;i<=5;i++ ));

        do

        start=`date +"%s"`

       $NODEBIN  $MONFILE  $WSNAME >  $OUTLOG 2>&1

 

        if [ $? -eq 0 ];then

        :

        else

        mv $OUTLOG ${OUTLOG}-${hour}_$$

 

        time=200

        let T=T+time

        fi

        end=`date +"%s"`

        let times=$end-$start

        let T=T+times

 

        done

else

        echo " node is not install "

 

fi

   avg=`echo "scale=2;$T/5" | bc`

R=`echo $avg|awk -F"." '{if( $1=="" ){print "0."$2}else {print $1"."$2}}'`

echo $R

end=`date +"%s"`

 2.如上脚本存放位置(/data/app/zabbix/alertscripts)实际根据zabbix的安装目录而定

zabbix 配置监控 websocket URL状态及响应速度

  1. 编写node.js脚本用于测试连接wss

(脚本内容如下注意此脚本的名称和存放路径要和监测脚本中的MONFILE变量值一致

var argv = process.argv.splice(2);

var WebSocket = require('ws');

if(argv && argv[0]){

    console.log('开始尝试连接'+argv[0]);

    var ws = new WebSocket(argv[0]);

    ws.onopen = function()

    {

        // Web Socket 已连接上,使用 send() 方法发送数据

        ws.send("发送数据");

        console.log("成功连接数据发送中...");

    };

 

    ws.onmessage = function (evt)

    {

        var received_msg = evt.data;

        console.log("数据已接收...");

    };

 

    ws.onclose = function()

    {

        // 关闭 websocket

        console.log("连接已关闭...");

    };

}else{

    console.log('请输入链接');

}

4.修改zabbix-agent配置文件在最后添加自定义key值,将脚本获取到连接wss的时间赋值给key(配置如下所示)

zabbix 配置监控 websocket URL状态及响应速度

5.在zabbix页面配置自定义监控,创建监控项,监控项名称可随意,键值填写zabbix-agent中配置的key

zabbix 配置监控 websocket URL状态及响应速度

 

zabbix 配置监控 websocket URL状态及响应速度

6.配置触发器,点击触发器,创建触发器,名称随意,表达式选择当最新的T值大于某数时告警;配置图形点击图形直接新建然后添加多个监控项即可

zabbix 配置监控 websocket URL状态及响应速度

7.如果有多个图形可配置聚合图形,点击主页聚合图形新建即可

zabbix 配置监控 websocket URL状态及响应速度

                               配置zabbix监控TCP连接状态

  1. 编写脚本,用于检测TCP连接数

(脚本内容如下)

#!/bin/bash

metric=$1

tmp_file=/tmp/tcp_status.txt

/usr/sbin/ss  -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}' > $tmp_file

  

case $metric in

   established)

          output=$(awk '/ESTAB/{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

        ;;

   finwait1)

          output=$(awk '/FIN-WAIT-1/{print $2}' $tmp_file)

          if [ "$output" == "" ];then

             echo 0

          else

             echo $output

          fi

        ;;

   finwait2)

          output=$(awk '/FIN-WAIT-2/{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

        ;;

   unconn)

          output=$(awk '/UNCONN/{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

         ;;

   listen)

          output=$(awk '/LISTEN/{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

         ;;

         *)

          echo -e "\e[033mUsage: sh  $0 [established|synrecv|synsent|finwait1|finwait2|timewait|unconn|closewait|lastack|listen|cl

osing]\e[0m"

    

esac

2.配置zabbix-agent配置文件执行脚本传参数,赋值给key,在web页面配置的时候键值填写tcp.status[参数

zabbix 配置监控 websocket URL状态及响应速度

3.如果机器比价多的情况下可以创建一个模板,在模板上创建监控项及触发器和图形,将模板链接给所有机器即可;模板创建点击创建模板填写名称即可。

4.配置监控项,点击模板监控项,创建监控项

zabbix 配置监控 websocket URL状态及响应速度

5.TCP的连接监测总共有十一项,创建十一个监控项即可,注意key值得传参,参数不同监控内容就不同;可传的参数如下:

 

ESTABLISHED:socket已经建立连接  

CLOSED:socket没有被使用,无连接  

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

CLOSE_WAIT:等待关闭连接  

TIME_WAIT:表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态  

LAST_ACK:远端关闭,当前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.

zabbix 配置监控 websocket URL状态及响应速度

创建完成即可