8-zabbix批量安装

熊 1 阅读 监控平台

1.编译安装脚本

#!/bin/bash
#Date:2016/08/20
#Author: Zhangshijie
​
grep "Ubuntu" /etc/issue &> /dev/null
if [ $? -eq 0 ];then
  apt update
  apt-get  -y install iproute2  ntpdate  tcpdump telnet traceroute nfs-kernel-server nfs-common  lrzsz tree  openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute  gcc openssh-server lrzsz tree  openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip make
    fi
​
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 -y
fi
​
DIR=`pwd`
ZBX_Version="4.0.18"
cd ${DIR} && tar xvf  zabbix-${ZBX_Version}.tar.gz && cd zabbix-${ZBX_Version} && ./configure --prefix=/apps/zabbix_agent --enable-agent && make && make install
​
useradd zabbix 
mkdir /apps/zabbix_agent/run
mkdir /apps/zabbix_agent/logs
​
cd ${DIR}
\cp zabbix-agent.service  /lib/systemd/system/zabbix-agent.service
\cp zabbix_agentd.conf /apps/zabbix_agent/etc/zabbix_agentd.conf
\cp zabbix_agentd.d/* /apps/zabbix_agent/etc/zabbix_agentd.conf.d/
​
HOST_IP=`ifconfig  eth0 | grep -w inet  | awk '{print $2}'`
sed -i "s/Hostname=/Hostname=${HOST_IP}/g" /apps/zabbix_agent/etc/zabbix_agentd.conf
chown zabbix.zabbix -R /apps/zabbix_agent/
​
systemctl daemon-reload && systemctl enable zabbix-agent && systemctl stop zabbix-agent  && systemctl start zabbix-agent

该脚本需要注意两个点:

  1. 需要提前准备好zabbix-agent.service、zabbix_agentd.conf以及所有提前需要准备脚本文件, 并将该文件放置在与脚本同一级目录的安装包里面

  2. 提前准备好zabbix二进制安装包

2. yum批量安装

  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服务, 然后配置zabbix页面即可


参考链接

Zabbix之十----批量安装zabbix-agent及web监控 - 一叶知秋~~ - 博客园 (cnblogs.com)