配置zabbix监控url状态及响应速度
例:
1、点击配置主机在一台主机上选择web监测
2、点击web监测进入后点击右上角的创建web场景,名称随便起易记即可,应用集可创建一个单独存放web监测的,客户端选择浏览器,然后点击步骤添加,名称和上一层一样即可,url填写需要监测的url,超时是连接这个url多久连不上报超时,状态码填写访问此url返回的状态码,当返回的值不是此状态码的情况下会出发告警。
3、添加完成之后可在主页选择监测中,web监测中查看
配置zabbix监控websocket连接状态
例:(websocket需安装node服务)
- 在需要监测的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的安装目录而定
- 编写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(配置如下所示)
5.在zabbix页面配置自定义监控,创建监控项,监控项名称可随意,键值填写zabbix-agent中配置的key
6.配置触发器,点击触发器,创建触发器,名称随意,表达式选择当最新的T值大于某数时告警;配置图形点击图形直接新建然后添加多个监控项即可
7.如果有多个图形可配置聚合图形,点击主页聚合图形新建即可
配置zabbix监控TCP连接状态
- 编写脚本,用于检测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[参数
3.如果机器比价多的情况下可以创建一个模板,在模板上创建监控项及触发器和图形,将模板链接给所有机器即可;模板创建点击创建模板填写名称即可。
4.配置监控项,点击模板监控项,创建监控项
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.
创建完成即可