• Zabbix之十----批量安装zabbix-agent及web监控


    实战一:实现批量安装zabbix-agent包

    环境准备:

    zabbox-server服务器:192.168.7.100

    zabbix-agent(node1):192.168.7.101

    zabbix-agent(node2):192.168.7.102

    mariadb数据库(node3):192.168.7.103

    zabbix-proxy-mysql(node4 主动proxy代理):192.168.7.104

    1、在指定的/usr/local/src目录下创建关键文件,打包做为安装zabbix-agent来用

    1、创建zabbix.repo阿里云仓库,存放在/usr/local/src目录下

    [root@localhost yum.repos.d]# cat zabbix.repo 
    [zabbix]
    name=Zabbix Official Repository - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
     
    [zabbix-non-supported]
    name=Zabbix Official Repository non-supported - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
    enabled=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
    gpgcheck=1
     
    [zabbix-debuginfo]
    name=Zabbix Official Repository debuginfo - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
    enabled=0
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
    gpgcheck=1

     2、创建一个nginx_status.sh状态页脚本

    [root@node1 src]# cat nginx_status.sh 
    #!/bin/bash 
    
    nginx_status_fun(){ #函数内容
    	NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
    	NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
    	nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
            }
    	nginx_reading(){ #获取nginx_reading状态的数量
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
           }
    	nginx_writing(){
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
           }
    	nginx_waiting(){
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
           }
    	nginx_accepts(){
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
           }
    	nginx_handled(){
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
           }
    	nginx_requests(){
            /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
           }
      	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;
    		esac 
    }
    
    main(){ #主函数内容
    	case $1 in #分支结构,用于判断用户的输入而进行响应的操作
    		nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数
    			nginx_status_fun $2 $3;
    			;;
    		*) #其他的输入打印帮助信息
    			echo $"Usage: $0 {nginx_status key}"
    	esac #分支结束符
    }
    
    main $1 $2 $3
    

    3、在/usr/local/src/目录下,创建一个调用nginx_status.sh脚本以conf结尾的配置文件:zabbix-linux.conf

    UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh  $1 $2 $3  # 调用nginx_status.sh脚本的键值
    

    4、在安装好zabbix-agent包的服务器中,配置/etc/zabbix/zabbix_agentd.conf文件,放到/usr/local/src目录下

    LogRemoteCommands=1  # 允许远程连接
    Server=192.168.7.100,192.168.7.104 # zabbix服务器的IP地址和proxy主动模式的IP地址
    ServerActive=192.168.7.104 # proxy服务器主动模式IP地址
    Hostname=  # 将Hostname命名空出来,使用sed -i 命令进行替换
    Timeout=30 # 超时时延改为30s
    UnsafeUserParameters=1  # 允许特殊字符传递:如管道符、单引号、双引号等。

     5、创建一个安装zabbix-agent脚本

    [root@node1 src]# cat zabbix-agent-install.sh 
    #!/bin/bash
    DIR="/usr/local/src" # 调用当前目录
    useradd -s /sbin/nologin  zabbix  # 创建zabbix用户
    cp $DIR/zabbix.repo  /etc/yum.repos.d/  #将zabbix.repo仓库复制到/etc/yum.repos.d/目录下
    yum install zabbix-agent -y  # 安装zabbix-agent包
    cp $DIR/zabbix-linux.conf  /etc/zabbix/zabbix_agentd.d/ # 复制调用nginx_status.sh脚本状态页的脚本到指定的目录下
    cp $DIR/nginx_status.sh /etc/zabbix/zabbix_agentd.d/  # 复制nginx_status.sh脚本到指定目录下
    cp $DIR/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf # 复制zabbix_agentd.conf配置文件到指定的目录下
    chmod +x /etc/zabbix/zabbix_agentd.d/*.sh  # 将此目录下的.sh后缀文件加上执行权限
    chown zabbix.zabbix /etc/zabbix -R  # 将/etc/zabbix权限进行修改
    IP=`ifconfig |grep -w inet | awk '{print $2}' | head -n1`  # 取出本机的IP地址
    sed -i 's/Hostname=/Hostname='$IP'/g' /etc/zabbix/zabbix_agentd.conf   # 将zabbix配置文件的Hostname=的IP地址进行替换
    systemctl start zabbix-agent && systemctl enable zabbix-agent  # 启动zabbix-agent服务,并设置为开机启动
    

    6、配置/etc/yum.repos.d目录下的epel.repo源仓库

    # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  # 安装阿里云自带的epel源仓库
    #  yum install nginx  -y  # 安装nginx服务
    

    7、配置nginx的状态页:/etc/nginx/nginx.conf

    location /nginx_status {  # 在server段进行配置
        stub_status;
    }
    

    8、启动nginx服务:nginx  

    9、在zabbix网页上创建主机

    10、关联nginx状态自定义模板

     11、查看nginx监控结果

     node1安装zabbix-agent脚本打包并传到node2主机

    1、将node1主机/usr/local/src目录下的相关文件打包,并传到node2主机/usr/local/src目录下

    [root@node1 src]# tar cvf linux-zabbix-agent-install.tar.gz ./*  打包/usr/local/src目录下的文件
    ./nginx_status.sh 
    ./zabbix_agentd.conf
    ./zabbix-agent-install.sh
    ./zabbix-linux.conf
    ./zabbix.repo
    [root@node1 src]# scp linux-zabbix-agent-install.tar.gz  192.168.7.102:/usr/local/src # 将node1主机打包的文件传到node2

    2、在node2主机/usr/local/src目录下解压打包的文件

    [root@node2 src]# tar xvf linux-zabbix-agent-install.tar.gz 
    

    3、在/usr/local/src目录下执行脚本,安装zabbix-agent包

    [root@node2 src]# bash zabbix-agent-install.sh 

    4、配置epel.repo源,安装nginx服务

    [root@node2 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    [root@node2 ~]# yum install nginx -y
    

    5、配置nginx状态页:/etc/nginx/nginx.conf

            location /nginx_status {
                stub_status;
            }
    

    6、启动nginx服务:nginx

    在zabbix网页上配置主机并关联模板

    1、创建node2主机

     2、关联自定义的nginx_status模板

     3、此时可以看到ZBX已经变绿了

     4、此时查看nginx的状态页:

     实战二:Zabbix监控web页面

    1、实现返回200状态码的web网页监控

    1、在node1主机上创建web场景

     2、配置web监测

     3、创建步骤,指定网站的URL,创建第一个web页面

     4、创建第二页监控 web页面,指定URL地址

     5、查看此时监控的web页面效果

     2、网页响应时间超时监控web网页

    Response time for step "网站首页" of scenario "网站首页": 在以上创建的web场景的基础上添加此触发器即可,选择响应超出的时间,来判断web网页是否宕机。

    Response code for step "网站首页" of scenario "网站首页":此触发器就是对web网页响应返回的状态码进行监控。

    1、在上面创建的web场景的主机基础上创建触发器,我们可以看到以下的web监测后面显示1,说明此主机进行了web网页监控,点击此主机

     2、在监控web网页的主机创建触发器,选择以响应超时时长的触发器

     3、配置详细的触发器,一般采用的是第一种配置,在最后一次网页超过5s未响应,说明网页挂掉了,第二种配置是在网页相对不稳定的情况下,可以多加几个判断。

    第一种配置:最后一次网页超过5s未响应,说明网页挂掉了

    {192.168.7.102:web.test.time[网站首页,网站首页,resp].last()}>5 
    

    第二种配置:最后一次网页超过5s未响应,倒数第二次以及倒数第三次网页超过5s未响应,说明网页都挂了。

    {192.168.7.102:web.test.time[网站首页,网站首页,resp].last(0)}>5 and {192.168.7.102:web.test.time[网站首页,网站首页,resp].last(1)}>5 and {192.168.7.102:web.test.time[网站首页,网站首页,resp].last(2)}>5
    

     

      

      

  • 相关阅读:
    javascript 之异常处理try catch finally--05
    javascript 之基本包装类型--04
    javascript 之基本数据类型、引用数据类型区别--02
    javascript 之数据类型--01
    CSS3 object-fit 图像裁剪
    jQuery.extend 使用函数
    ios 不支持iframe 解决方案
    python常用代码积累
    mysql日志类型
    python中列表 元组 字符串如何互相转换
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12365631.html
Copyright © 2020-2023  润新知