zabbix模板化监控

zabbix模板化监控


1. 实验简述

在zabbix监控中,有很多组的概念,具体有以下几种:

1. 主机和主机组,相同类型/应用的主机,可以归属于同一个主机组
2. item和application,对于同一个application,可以有多个item对该application进行监控,同时获取这些值
3. template和application,对于不同的application,可以如果存在通用性,可以将这些application关联到template中

对于各个对象之间的映射关系,我觉得最简单的描述如下:

1. item表示一个监控对象
2. 一个host可以直接关联多个item
3. 一个host可以属于一个或多个host group
4. 一个hosts group可以关联一个或多个template
5. 一个template可以关联一个或多个application
6. 一个application可以关联一个或多个item

总之,这种对应关系很多, 可以根据不同的监控场景进行实施。

2. 实验内容

在本次实验中,计划将nginx的4个状态值都同时监控出来,通过模板化的方式来进行监控,同时以脚本的形式,来进行获取item的值。和之前的直接监控不一样了,这次是通过shell脚本的形式,通过传入参数,来对nginx的状态进行监控。

3.实验步骤

1. 环境准备

启用本地环境中的nginx服务器,然后通过curl方式,获取nginx的状态,主要是4个状态值,分别是active、reading、writing和waiting。至于其他的3个值,暂时不做考虑。获取值的方式如下:

    [[email protected] zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|head -n 1|awk ‘{print $NF}‘
    1
    [[email protected] zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|grep Reading|cut -d ‘ ‘ -f 2
    0
    [[email protected] zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|grep Writing|cut -d ‘ ‘ -f 4
    1
    [[email protected] zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status|grep Waiting|cut -d ‘ ‘ -f 6
    0
    [[email protected] zabbix_agentd.d]# curl -s http://127.0.0.1:8080/status
    Active connections: 1
    server accepts handled requests
     581067 581067 581077
    Reading: 0 Writing: 1 Waiting: 0 

通过命令获取到这些对象的值之后,下面就是开始编写shell脚本了,以脚本传参的方式,来获取这些值,在脚本中,我们主要使用两个参数,其他的都是通用的,只有ngxin的服务端口和相关nginx的状态这两个参数是可变的,所以接下来的脚本就是通过传入这两个参数,来获取对应的值。

2. 脚本准备

通过SHELL变成的方式,以case来进行编写,不同的case,对应不同的操作函数和方法。具体如下:

    #/bin/bash
    # monitor the nginx status ,get the item
    function nginx_state(){
        NGINX_PORT=$1
        NGINX_STATE=$2
        nginx_active(){
            /usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "Active connections"|awk ‘{print $NF}‘
        }
        nginx_reading(){
            /usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "Reading"|cut -d -f 2
        }
        nginx_writing(){
            /usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "writing"|cut -d -f 4
        }
        nginx_waiting(){
            /usr/bin/curl -s http://127.0.0.1:$NGINX_PORT/status|grep "waiting"|cut -d -f 6
        }
        case $NGINX_STATE in
        active)
            nginx_active;
            ;;
        reading)
            nginx_reading;
            ;;
        writing)
            nginx_writing;
            ;;
        waiting)
            nginx_waiting;
            ;;
        *)
            echo "Usage $0 [nginx_port] {active|reading|writing|waiting}"
        esac
    }

    main(){
        nginx_state $1 $2
    }
    main $1 $2

测试一下脚本的运行状态,是否可以获取到值。

    [[email protected] zabbix_agentd.d]# ./nginx_status.sh 8080 active
    1
    [[email protected] zabbix_agentd.d]# ./nginx_status.sh 8080 reading
    0
    [[email protected] zabbix_agentd.d]# ./nginx_status.sh 8080 writing
    1
    [[email protected] zabbix_agentd.d]# ./nginx_status.sh 8080 waiting
    0

能获取到对应的值之后,开始创建监控item

3. 修改zabbix agent的配置文件

默认的zabbix agent是直接获取zabbix_agentd.d目录下的所有文件,为了方便使用,建议也将脚本放置在该目录下,然后通过修改配置文件,只获取该目录下的conf文件作为item的监控对象,其他的文件类型不予获取,就可以了。

    Include=/etc/zabbix/zabbix_agentd.d/*.conf

编写一个item,名称为nginx_status,以数组的形式,对item传参,参数用与脚本的运行。

    UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1 $2

4. 本地获取item值

配置完成后,重启zabbix-agent,然后本地通过zabbix_get命令来获取item的值。

    [[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.64.131 -k nginx.status[8080,active]
    1
    [[email protected] zabbix_agentd.d]# zabbix_get -s 192.168.64.131 -k nginx.status[8080,reading]
    0
有了返回值之后,就可以在web页面上进行配置了。

5. web页面配置

  • 在web页面上,首先是创建一个模板,明明为nginx_status;
  • 然后在模板中,创建一个应用,名称为nginx,application;
  • 在该模板中,创建一个item,关联到nginx这个application中,然后输入监控item的key;
  • 克隆该item,生成其他的三个item;
  • 创建一个graph,关联该application下的所有item
  • 将主机,和新创建的nginx模板进行关联,然后通过monitor中的last data中查询该应用的所有item监控返回值,同时也就能通过graph进行查看图形。

4. 总结

通过以上实验的操作,可以简单的了解到zabbix通过模板化的监控思想,其实模板化、实例化的操作,是很多方法论的基础,通过一对一、一对多、多对多的关系组合,然后将同一个应用的不同监控对象,以参数化的形式总结归纳,将不同的监控对象,用同一个监控item、application、template来实现,在后续的很多生成中都能体现。

- tips

创建的模板是可以导出的,在生产中可以直接进行导入,修改相关的参数后,就能直接使用,所以模板是一个很实用的技术手段。

原文地址:https://www.cnblogs.com/bobo137950263/p/10662310.html

时间: 2024-11-06 07:09:20

zabbix模板化监控的相关文章

给zabbix添加percona监控模板

简单说明一下给zabbix添加的percona的监控模板. 在percona官方网站有说明怎么安装,这里记录下步骤.首先搭建好的zabbix环境. 监控插件连接 : 链接:https://pan.baidu.com/s/1xHbc_HhmN-XuGGiKrg7nPQ 提取码:i4ku yum安装percona的监控插件(安装在要监控的mysql服务器上) yum install -y percona-zabbix-templates-1.1.8-1.noarch.rpm 安装完成之后会生成如下四

zabbix模板的自动发现规则(ldd)实现被监控项自动发现

zabbix模板的自动发现规则(ldd)实现被监控项自动发现 自动发现规则(ldd)用途说明 在zabbix自带的linux模板的自动发现规则中,有一个Mounted filesystem discovery自动发现规则,可以根据每个服务器磁盘梳理不同,自动生成相应的磁盘监控数据. 这就是自动注册的用途,根据不同服务器上同一个监控项不同的数量,自动生成对应数量的监控 例如5个服务器都分别启动了tomcat多实例,但启动的tomcat数量不相同,端口也不同,我想要监控这些端口是否down掉: 用普

Zabbix 模板 Template 的 Screen 到底在哪里?

今天,在测试zabbix 模板的时候,发现个问题,有些基础模板自带有 Screen 视图功能,但是后面在连接了该模板的主机上,却找不到该 screen 的入口. 有的人说,会是在 Monitoring  → Screens 里面,要是真这样的话,我就不用专门写一篇文章来说了,,,,, 经过网上查找资料,和自己一番摸索,终于找到了可以查看模板视图(template screen)的方法. 有三种方法可以揪出来. 1.全局搜索主机,然后点击 screen 即可查看该screen 2.如果主机有监控项

Zabbix 的自动监控项目监控Nginx各hostname配置 - Low Level Discovery

Zabbix演示版本:2.4.4 涉及到的脚本语言:PHP low-level discovery的意思是"低层次的自动发现",检查lld. lld并不似因为功能简单或者不重要而被称为"低层次的",而是因为相对于服务器的自动发现,low-level discovery是针对服务器上设备的自动发现. Zabbix 原生支持针对三种(文件系统.网卡.SNMP OIDs)自动发现来配套自动添加Items.Triggers 和 Graphs等.在lld中它们被称为Item原

Zabbix 3.0 监控MySQL

Mysql监控  zabbix自带了一个监控mysql的模板,但是真正监控mysql的并不是zabbix自带的模板.而是percona公司的一个监控mysql模板  percona官网: www.percona.com Percona组成介绍 1.php脚本    用来数据采集 2.shell脚本  用来调用采集信息 3.zabbix配置文件 4.zabbix模板文件 安装文档:https://www.percona.com/doc/percona-monitoring-plugins/LATE

利用Zabbix ODBC monitoring监控SQL Server

利用Zabbix ODBC monitoring监控SQL Server 1. 创建群组ODBC Templates 2. 创建Template SQL Server和Template MySQL 3. 在Zabbbix上安装unixODBC shell> yum -y install unixODBC unixODBC-devel 4. 在Zabbix上安装对应数据库的unixODBC驱动 unixODBC有一个支持的数据库和驱动列表: http://www.unixodbc.org/driv

Zabbix CPU utilization监控参数

工作中查看Zabbix linux 监控项的时候对linux 监控的cpu使用的各个参数没怎么明白,特意查看了下资料 Zabbix linux模板下的CPU utilization是自带的监控Linux CPU各个参数的监控项,其实就是Linux下top命令显示的cpu信息. Zabbix下的监控信息,有时候直观的看图会一脸懵逼,各个值分别是什么意思呢? 官方解释,Cpu(s)表示的是cpu信息. us: user cpu time (or) % CPU time spent in user s

zabbix 3.0 监控windows 部署

下载客户端 http://www.zabbix.com/downloads/3.0.4/zabbix_agents_3.0.4.win.zip 在c盘里创建一个zabbix文件夹,便于后面的管理.把下载的zabbix压缩包解压到zabbix文件夹里. 有两个文件 bin   conf. bin目录里有32位和64位两个文件夹.根据自己的系统选择版本(这里是64位系统).里面的三个文件复制到zabbix文件夹中 将conf里面的文件复制到C盘下,重命名为zabbix_agentd.conf 修改z

利用Zabbix ODBC monitoring监控MySQL

利用Zabbix ODBC monitoring监控MySQL 1. 创建群组ODBC Templates 2. 创建Template SQL Server和Template MySQL 3. 在Zabbbix上安装unixODBC shell> yum -y install unixODBC unixODBC-devel 4. 在Zabbix上安装对应数据库的unixODBC驱动 unixODBC有一个支持的数据库和驱动列表: http://www.unixodbc.org/drivers.h