美文网首页linux运维工程师必会linux tools
四、批量部署zabbix agent以及web监控

四、批量部署zabbix agent以及web监控

作者: M36_tongwei | 来源:发表于2019-07-21 14:21 被阅读9次

    批量部署zabbix agent

    批量部署需要提前在一台设备上做实验,写好脚本和脚本部署过程中需要的文件提前准备好,将这些准备好的文件打包好,拷贝到需要部署zabbix-agent服务器上解压,执行脚本自动部署。

    [root@node5 ~]#cd /data/
    [root@node5 data]#ls
    linux36-zabbix-agent-install.tar.gz
    
    [root@node5 data]#tar xf linux36-zabbix-agent-install.tar.gz 
    [root@node5 data]#ls
    linux36.conf                         zabbix-4.0.10.tar.gz     zabbix-agent.service
    linux36-zabbix-agent-install.tar.gz  zabbix_agentd.conf
    nginx_status.sh                      zabbix-agent-install.sh
    

    自动部署脚本

    [root@node5 data]#cat zabbix-agent-install.sh
    #!/bin/bash
    #
    grep "Kernel" /etc/issue &> /dev/null
    if [ $? -eq 0 ]; then
        yum install  vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel zip unzip zlib-devel  net-tools lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel bc  systemd-devel bash-completion traceroute net-tools -y
    fi
    
    grep "Ubuntu" /etc/issue &> /dev/null
    if [ $? -eq 0 ]; then
        apt install -y gcc g++ make libpcre3-dev
    fi
    
    DIR=`pwd`
    
    useradd zabbix
    
    tar xf zabbix-4.0.10.tar.gz && cd zabbix-4.0.10 && ./configure --prefix=/apps/zabbix_agent --enable-agent && make && make install
    
    mkdir /apps/zabbix_agent/data
    
    \cp ${DIR}/zabbix_agentd.conf /apps/zabbix_agent/etc/zabbix_agentd.conf
    
    \cp ${DIR}/zabbix-agent.service  /usr/lib/systemd/system/zabbix-agent.service
    #注:如果是ubuntu系统\cp ${DIR}/zabbix-agent.service  /usr/lib/systemd/system/zabbix-agent.service
    \cp ${DIR}/nginx_status.sh /apps/zabbix_agent/etc/zabbix_agentd.conf.d/
    
    \cp ${DIR}/linux36.conf /apps/zabbix_agent/etc/zabbix_agentd.conf.d/
    
    IP=`ifconfig eth0 | grep -w inet | awk -F" " '{print $2}'`
    
    chmod +x /apps/zabbix_agent/etc/zabbix_agentd.conf.d/nginx_status.sh
    
    sed -i 's/^Hostname=/Hostname='${IP}'/g' /apps/zabbix_agent/etc/zabbix_agentd.conf
    
    chown zabbix.zabbix /apps/zabbix_agent/ -R
    
    systemctl daemon-reload
    
    systemctl start zabbix-agent && systemctl enable zabbix-agent
    
    
    [root@node5 data]#grep ^[a-Z] zabbix_agentd.conf 
    PidFile=/apps/zabbix_agent/data/zabbix_agentd.pid #pid存放地方,与启动脚本要一致
    LogType=file
    LogFile=/apps/zabbix_agent/data/zabbix_agentd.log  #定义的日志存放路径
    LogFileSize=0
    EnableRemoteCommands=1  #开启远程命令
    Server=192.168.18.111,192.168.18.115 注:zabbix-server ip和zabbix proxy主机ip
    ListenPort=10050
    ListenIP=0.0.0.0
    StartAgents=3
    ServerActive=192.168.18.115  #proxy主动模式,zabbix proxy主机ip
    Hostname=
    Timeout=30   #该时间延迟一定要改长点,30s够了
    Include=/apps/zabbix_agent/etc/zabbix_agentd.conf.d/*.conf   #配置文件包括zabbix_agentd.conf.d目录下的
    UnsafeUserParameters=1  #支持特殊字符
    
    

    自定义系统服务配置文件

    [root@node5 data]#cat zabbix-agent.service
    [Unit]
    Description=Zabbix Agent
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/apps/zabbix_agent/etc/zabbix_agentd.conf"
    EnvironmentFile=-/etc/default/zabbix-agent
    Type=forking
    Restart=on-failure
    PIDFile=/apps/zabbix_agent/data/zabbix_agentd.pid
    KillMode=control-group
    ExecStart=/apps/zabbix_agent/sbin/zabbix_agentd -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    

    需要监控项的脚本提前准备好

    [root@node5 data]#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
    
    

    单独定义的配置文件

    [root@node5 data]#cat linux36.conf
    UserParameter=nginx.status[*],/apps/zabbix_agent/etc/zabbix_agentd.conf.d/nginx_status.sh $1 $2 $3
    

    拷贝到需要部署的服务器之后,允许自动安装脚本,完成zabbix agent的编译安装

    [root@node5 data]#ss -tnl
    State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
    LISTEN     0      128                      *:22                                   *:*                  
    LISTEN     0      100              127.0.0.1:25                                   *:*                  
    LISTEN     0      128                     :::22                                  :::*                  
    LISTEN     0      100                    ::1:25                                  :::*
    
    [root@node5 data]#bash zabbix-agent-install.sh
    ....
    make[2]: Leaving directory `/data/zabbix-4.0.10'
    make[1]: Leaving directory `/data/zabbix-4.0.10'
    Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
    
    
    [root@node5 data]#ss -tnl
    State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
    LISTEN     0      128                      *:22                                   *:*                  
    LISTEN     0      100              127.0.0.1:25                                   *:*                  
    LISTEN     0      128                      *:10050                                *:*        
    注:10050端口,说明部署完成          
    LISTEN     0      128                     :::22                                  :::*                  
    LISTEN     0      100                    ::1:25                                  :::* 
    
    [root@node5 data]#yum -y install epel-release
    [root@node5 data]#yum -y install nginx
    [root@node5 data]#systemctl start nginx && systemctl enable nginx
    
    [root@node5 data]#ss -tnl
    State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
    LISTEN     0      511                      *:80                                   *:*                  
    LISTEN     0      128                      *:22                                   *:*                  
    LISTEN     0      100              127.0.0.1:25                                   *:*                  
    LISTEN     0      128                      *:10050                                *:*                  
    LISTEN     0      511                     :::80                                  :::*                  
    LISTEN     0      128                     :::22                                  :::*                  
    LISTEN     0      100                    ::1:25                                  :::*
    
    [root@node5 data]#vim /etc/nginx/nginx.conf
    ...
            location / {
            }
    
            location /nginx_status {   注:配置nginx状态页面配置
                stub_status;
            }
    
    
    ...
    [root@node5 data]#systemctl restart nginx
    
    
    image.png

    在zabbix server的web界面上添加被监控主机

    image.png
    image.png
    image.png
    image.png

    web监控

    存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的...
    可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相应处理。
    本实验的检查方法有一个缺点,是从zabbix server所在的网络环境的主机上进行检测,此种方法不可取,通常web网站监控采用第三方监控进行监控
    在上面的实验的基础上操作

    image.png
    image.png
    image.png image.png
    image.png
    image.png
    image.png

    相关文章

      网友评论

        本文标题:四、批量部署zabbix agent以及web监控

        本文链接:https://www.haomeiwen.com/subject/twwulctx.html