Zabbix--04 自定义模版、web监控

目录

  • 一、自定义模版

    • 1.创建模版
    • 2.导出模版
    • 3.监控TCP11种状态
    • 3.2.重启zabbix-agent
    • 3.3.测试监控项
    • 4.导入模版文件
    • 5.主机关联模版文件
    • 6.查看最新数据
    • 7.查看图形
  • 二、自定义模版监控nginx状态
    • 1.开启监控页面并访问测试
    • 2.准备nginx监控状态脚本
    • 3.编写zabbix监控配置文件
    • 4.使用zabbix_get取值
    • 5.导入模版
    • 6.链接模版
    • 7.查看数据
  • 三、自定义模版监控php状态
    • 1.开启监控页面
    • 2.访问测试
    • 3.准备访问脚本
    • 4.准备zabbix配置文件
    • 4.使用zabbix_get取值
    • 5.导入模版
  • 四、WEB监控
  • 五、故障记录总结
    • 故障1
    • 故障2
    • 故障3

一、自定义模版

1.创建模版

1.1克隆出三台

1.2直接创建好触发器

1.3创建图形

模版创建好,再次创建主机就可直接选择用

修改模版,可全部生效

例如:把时间修改成30天

2.导出模版

3.监控TCP11种状态

编写zabbix配置文件

[[email protected] /etc/zabbix/zabbix_agentd.d]# cat zbx_tcp.conf
UserParameter=ESTABLISHED,netstat -ant|grep  -c 'ESTABLISHED'
UserParameter=SYN_SENT,netstat -ant|grep  -c 'SYN_SENT'
UserParameter=SYN_RECV,netstat -ant|grep  -c 'SYN_RECV'
UserParameter=FIN_WAIT1,netstat -ant|grep  -c 'FIN_WAIT1'
UserParameter=FIN_WAIT2,netstat -ant|grep  -c 'FIN_WAIT2'
UserParameter=TIME_WAIT,netstat -ant|grep  -c 'TIME_WAIT'
UserParameter=CLOSE,netstat -ant|grep  -c 'CLOSE'
UserParameter=CLOSE_WAIT,netstat -ant|grep  -c 'CLOSE_WAIT'
UserParameter=LAST_ACK,netstat -ant|grep  -c 'LAST_ACK'
UserParameter=LISTEN,netstat -ant|grep  -c 'LISTEN'
UserParameter=CLOSING,netstat -ant|grep  -c 'CLOSING'

3.2.重启zabbix-agent

[[email protected] ~]# systemctl restart zabbix-agent.service 

3.3.测试监控项

使用zabbix-get命令测试

[[email protected] ~]# yum install zabbix-get.x86_64 -y
[[email protected] ~]# zabbix_get -s 10.0.1.7 -k ESTABLISHED
2
[[email protected] ~]# zabbix_get -s 10.0.1.7 -k LISTEN
12

4.导入模版文件

5.主机关联模版文件

6.查看最新数据

7.查看图形

二、自定义模版监控nginx状态

1.开启监控页面并访问测试

[[email protected] ~]# cat /etc/nginx/conf.d/status.conf
server {
   listen 80;
   server_name localhost;
   location /nginx_status {
       stub_status on;
       access_log off;
   }
}

[[email protected] ~]# curl 127.0.0.1/nginx_status/
Active connections: 1
server accepts handled requests
 6 6 6
Reading: 0 Writing: 1 Waiting: 0 

2.准备nginx监控状态脚本

[[email protected] /etc/zabbix/zabbix_agentd.d]# cat nginx_monitor.sh
#!/bin/bash
NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
if [ ! -f $CACHEFILE  ];then
   $CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`

if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
    rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE  ];then
   $CMD >$CACHEFILE 2>/dev/null
fi

nginx_active(){
         grep 'Active' $CACHEFILE| awk '{print $NF}'
         exit 0;
}
nginx_reading(){
         grep 'Reading' $CACHEFILE| awk '{print $2}'
         exit 0;
}
nginx_writing(){
         grep 'Writing' $CACHEFILE | awk '{print $4}'
         exit 0;
}
nginx_waiting(){
         grep 'Waiting' $CACHEFILE| awk '{print $6}'
         exit 0;
}
nginx_accepts(){
         awk NR==3 $CACHEFILE| awk '{print $1}'
         exit 0;
}
nginx_handled(){
         awk NR==3 $CACHEFILE| awk '{print $2}'
         exit 0;
}
nginx_requests(){
         awk NR==3 $CACHEFILE| awk '{print $3}'
         exit 0;
}

case $NGINX_COMMAND in
    active)
        nginx_active;
        ;;
    reading)
        nginx_reading;
        ;;
    writing)
        nginx_writing;
        ;;
    waiting)
        nginx_waiting;
        ;;
    accepts)
        nginx_accepts;
        ;;
    handled)
        nginx_handled;
        ;;
    requests)
        nginx_requests;
        ;;
    *)
echo 'Invalid credentials';
exit 2;
esac

3.编写zabbix监控配置文件

[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1

[[email protected] ~]# systemctl restart zabbix-agent.service

4.使用zabbix_get取值

[[email protected] ~]# zabbix_get -s 10.0.1.7 -k nginx_status[accepts]
7

5.导入模版

6.链接模版

7.查看数据

三、自定义模版监控php状态

1.开启监控页面

[[email protected] ~]# tail -1 /etc/php-fpm.d/www.conf
pm.status_path = /php_status

[[email protected] ~]# cat /etc/nginx/conf.d/status.conf
server {
   listen 80;
   server_name localhost;
   location /nginx_status {
       stub_status on;
       access_log off;
   }

   location /php_status {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
       include fastcgi_params;
   }
}

[[email protected] ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[[email protected] ~]# systemctl restart nginx.service php-fpm.service

2.访问测试

[[email protected] ~]# curl 127.0.0.1/php_status
pool:                 www
process manager:      dynamic
start time:           08/Aug/2019:22:31:27 +0800
start since:          37
accepted conn:        1
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       4
active processes:     1
total processes:      5
max active processes: 1
max children reached: 0
slow requests:        0

3.准备访问脚本

[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.sh
#!/bin/bash
##################################
# Zabbix monitoring script
#
# php-fpm:
#  - anything available via FPM status page
#
##################################
# Contact:
#  [email protected]
##################################
# ChangeLog:
#  20100922     VV      initial creation
##################################

# Zabbix requested parameter
ZBX_REQ_DATA="$1"
ZBX_REQ_DATA_URL="$2"

# Nginx defaults
NGINX_STATUS_DEFAULT_URL="http://localhost/fpm/status"
WGET_BIN="/usr/bin/wget"

#
# Error handling:
#  - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
#  - items need to be of type "float" (allow negative + float)
#
ERROR_NO_ACCESS_FILE="-0.91"
ERROR_NO_ACCESS="-0.92"
ERROR_WRONG_PARAM="-0.93"
ERROR_DATA="-0.94" # either can not connect /   bad host / bad port

# Handle host and port if non-default
if [ ! -z "$ZBX_REQ_DATA_URL" ]; then
  URL="$ZBX_REQ_DATA_URL"
else
  URL="$NGINX_STATUS_DEFAULT_URL"
fi

# save the nginx stats in a variable for future parsing
NGINX_STATS=$($WGET_BIN -q $URL -O - 2>/dev/null)

# error during retrieve
if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then
  echo $ERROR_DATA
  exit 1
fi

#
# Extract data from nginx stats
#
#RESULT=$(echo "$NGINX_STATS" | awk 'print $0;match($0, "^'"$ZBX_REQ_DATA"':[[:space:]]+(.*)", a) { print a[1] }')
#RESULT=$(echo "$NGINX_STATS" | grep "$ZBX_REQ_DATA" | awk -F : '{print $2}')
RESULT=$(echo "$NGINX_STATS" | awk -F : "{if(\$1==\"$ZBX_REQ_DATA\") print \$2}")
if [ $? -ne 0 -o -z "$RESULT" ]; then
    echo $ERROR_WRONG_PARAM
    exit 1
fi

echo $RESULT

exit 0

[[email protected] ~]# bash /etc/zabbix/zabbix_agentd.d/fpm.sh "total processes" http://127.0.0.1/php_status
5

4.准备zabbix配置文件

[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.conf
UserParameter=php-fpm[*],/etc/zabbix/zabbix_agentd.d/fpm.sh "$1" "$2"
[[email protected] ~]# systemctl restart zabbix-agent.service

4.使用zabbix_get取值

[[email protected] ~]# zabbix_get -s 10.0.1.7 -k php-fpm["total processes",http://127.0.0.1/php_status]
5

5.导入模版

导入之后需要修改一下模版里的宏配置

四、WEB监控

需求,监控页面状态码

创建触发器

停掉服务时

启动服务

五、故障记录总结

故障1

故障现象:
提示zabbix-server is not running

报错日志:

 34983:20190807:202215.171 database is down: reconnecting in 10 seconds
 34983:20190807:202225.172 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)

故障原因:
zabbix-server的配置文件里配有配置数据库密码
故障解决:
添加正确的数据库账号密码信息

[[email protected] ~]# grep "^DB" /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

故障2

故障现象:微信报警失败
报错日志:

[[email protected] ~]# tail -f /var/log/zabbix/zabbix_server.log
Problem name: TIME_WAIT过多
Host: web01
Severity: Average

Original problem ID: 51
'": Traceback (most recent call last):
  File "/usr/lib/zabbix/alertscripts/weixin.py", line 7, in <module>
    import requests
ImportError: No module named requests

问题原因:
缺少模块 requests

问题解决:
安装缺失的依赖包

[[email protected] ~]# yum install python-pip
[[email protected] ~]# pip install --upgrade pip
[[email protected] ~]# pip install requests

故障3

故障现象:
在server端使用zabbix_get命令测试键值命令时提示警告

[[email protected] ~]# zabbix_get -s 10.0.1.7 -k ESTABLISHED
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
2

问题原因:
zabbix_agent是以普通用户zabbix运行的,而普通用户执行netstat -antp时会有警告,网上查找发现只要不是用p参数就可以以普通用户运行
解决方案:
监控脚本里的命令修改为netstat -ant

原文地址:https://www.cnblogs.com/gongjingyun123--/p/12063691.html

时间: 2024-11-10 14:21:22

Zabbix--04 自定义模版、web监控的相关文章

Zabbix 3.0 配置web监控

一.客户端配置 1.安装nginx [[email protected] ~]# yum install nginx 2.启动服务 [[email protected] ~]# systemctl start nginx [[email protected] ~]# systemctl status nginx ● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/sy

原创:用zabbix api批量添加web监控

代码如下,进攻大家参考,转载的话说明来源 前面5个变量自行补齐, #!/usr/local/python3.51/bin/python3 # Author:         [email protected] # Mail:           [email protected] from pyzabbix import ZabbixAPI import sys from re import compile,IGNORECASE ZABBIX_SERVER = "" USER = &q

zabbix snmp自定义OID nginx监控实例(55)

为什么要自定义OID? 前面的文章我们已经讲过zabbix如何使用snmp监控服务器,但是他有一个很明显的局限性:只能监控定义好的OID项目,假如我们想知道nginx进程是否在运行?在没有zabbix agent的情况下,我们该怎么做呢?接下来就用这个实力来讲解自定义OID 确认SNMP OID是否存在 首先我们需要找一个oid是否被系统暂用,比如.1.3.6.1.4.1.2021.5000 # snmpwalk -v 2c -c public www.ttlsa.com .1.3.6.1.4.

Zabbix基于Proxy分布式部署实现Web监控

前言 在日常运维工作中,难免会遇到这样或那样的故障,如何能在第一时间发现故障,并及时定位故障原因,保证业务不受影响,我想这应该是做好一个运维必须要掌握的技能.但人力不可能实时掌控系统的变化,于是监控系统应运而生,监控便是运维的眼睛,把监控和性能管理做好后,运维就是一件很轻松的事情.目前比较流行的开源监控工具有Cacti.Nagios(Icinga).Zabbix等.本文带来的是Zabbix基于Proxy分布式部署实现Web监控. Zabbix 简介 Zabbix是一个基于Web界面提供分布式系统

Zabbix+shell两种方式监控任意web并及时报警

最近有朋友问我怎么监控公司网站:目的是网站不能访问及时报警. 当然一些云服务器肯定是自带功能,可是物理服务器可没有那么智能,但是开源是强大的,这里就分享一下个人监控网站的两种方式. 一.zabbix自带的web检测: 1.1)配置>主机(需联网)>web场景>创建web场景 添加你所需要检测网站的url 1.2)创建触发器(邮件报警,短信报警,微信报警提前配置其一即可) 1.3)监测中>Web检测 1.4)触发 二.shell+nc+namp等工具+crontab #!/bin/b

zabbix通过api批量添加web监控

zabbix 添加web监控始终是大问题,不能自动发现只能手动添加 写了个py脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- import json import urllib2 import sys class zabbixtools:     def __init__(self):         self.url = "Zabbixserver"         self.header = {"Content-Type&

深入浅出Zabbix 3.0 -- 第十章 Web 监控

第十章 Web 监控 Web monitoring是用来监控Web站点多方面的可用性,可以监控Web站点的下载速度.返回码和响应时间.Zabbix能够检测HTML中包含的预先定义的字符串,也可以模拟登录网站和鼠标的动作,对特定的结果进行比较,例如特定字符串.返回码等,从而判断站点服务的可用性.Zabbix支持HTTP和HTTPS协议,并在完成每一步模拟访问时会对cookie进行保存. 在Zabbix中设置Web监控时,需要先定义web scenarios(场景),一个webscenarios是由

Zabbix之web监控

Zabbix 之web 监控 1.首先可以在主机模板中先定义一个application 2.找一个关联着这个模板的主机[Configuration  -- Hosts ],然后选择这台主机[Web],点击Create scenario Save 3.查看监控状态[Monitoring  -- Web] 更多信息请移驾官网:https://www.zabbix.com/documentation/2.4/manual/web_monitoring Zabbix之web监控

zabbix上的Web监控

Zabbix还可以进行web站点的可用性检测,创建web监控需要先定义一个web方案(scenarios) web方案包括一个或多个HTTP请求或"步骤(step)" 步骤(step)的执行过程按照预先定义的顺序进行执行 通过web监控可实现获取如下信息: 整个web方案中所有的步骤的平均下载速度 失败的步骤号 失败的报错信息 在web方案的具体步骤中,可以按需使用如下信息 该步骤的下载速度 回应时间 回应状态码 Zabbix可以检测获取到的HTML页面中是否包含预设的字符串,也可以实