zoukankan      html  css  js  c++  java
  • 使用ansible结合FTP部署zabbix_agent

    想要达到的效果:一条命令,快速对多台主机部署zabbix_agent

    实现思路:从源码编译编译出zabbix_agentd,准备好安装脚本,将安装脚本和编译出的agent一起上传到FTP服务器,在ansible机器上面执行下载脚本并且执行。agent安装完成检查一下端口是否起来(主动模式就检查一下进程有没有拉起来)

    提示:选择主动模式启动agent的时候,也需要有对应的模版

    最后的效果:

    1、在ansible机器上面一条命令实现对客户端的安装

    2、脚本实现修改配置文件,不同主机不同的Hostname

    3、添加了zabbix_agentd服务,并且将zabbix_agentd设置为开机自启

    4、对于active模式,配置了自动注册的参数

    环境准备:

    1)       系统版本:Linux Red Hat 6.5

    2)       server和agent最好YUM源搭建OK

    3)       FTP服务器IP:172.16.255.22     路径: /var/ftp

    4)       Zabbix源码包

    5)       客户端默认防火墙关闭(/etc/init.d/itpables stop)

    如果防火墙开启,参考命令:

    主被是相对agent而言

    被动模式:服务器打开10051端口,客户端10050端口;(端口由配置文件决定,这里不做更改)

    主动模式:服务器打开10051端口(纯主动模式)。

    主被混合模式:server打开10051端口,agent打开10050端口

    vim /etc/sysconfig/iptables    #增加一行

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT    #agent    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT    #server
    ####最后修改完配置文件,别忘记reload一下,或者重启防火墙生效

    6)       客户端默认selinux设置为禁用

    没禁用,参考命令:

    sed –I ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux
    setenforce 0        #设置disabled,马上生效
    getenforce            #检查

    IP地址准备,批量建立信任关系

     #如果某一台主机存在多个IP地址,就是用下面的命令,对主机获取单个IP

    扫描网段脚本地址

    #在这之前,已经对19端扫描过了,得到host_19的这个文件
    ansible -i /opt/shell/lizuofang/beleve/19/hosts_19 dev -m shell -a "source /etc/profile ;ip addr|egrep 'eth.$' | tr '/' ' '|grep -v 'secondary' "|grep 'inet' |awk '{print $2}' |sort -n -t. -k4 |uniq > /tmp/zabbix19 cat /tmp/zabbix19 |awk '{print $2}' |sort -n -t. -k4 |uniq|wc -l      #对IP进行排序,方便查看

    ———————————————————安装libselinux-python

    #ansible拷贝文件的时候,必须安装这个,不然报错
    ansible -i h19 h19 -m shell -a 'yum install libselinux-python -y' -K --become ansible -i t ht -m shell -a 'wget ftp://192.168.20.25/rhe65.repo;mv rhe65.repo /etc/yum.repos.d/' -K --become

    Agentd客户端编译压缩上传

    从源码编译zabbix_agentd

    [root@zabbix zabbix] tar xvf zabbix-3.2.7.tar.gz
    
    [root@zabbix zabbix] cd zabbix-3.2.7 #进入源码所在的目录
    
    [root@zabbix zabbix-3.2.7]# ./configure --prefix=/usr/local/zabbix_agent --enable-agent
    
    [root@zabbix zabbix-3.2.7]# make && make install
    
    ##这个时候会在/usr/local/目录下会生成一个zabbix_agentd的目录

    修改zabbix_agentd服务脚本

    #给脚本执行权限

    [root@zabbix zabbix-3.2.7]# chmod 755 misc/init.d/tru64/zabbix_agentd
    
    #修改zabbix_agentd服务启动脚本,使zabbix_agentd服务支持开启自启
    
    [root@zabbix zabbix-3.2.7]# sed -i '/bin/sh/a #
    # chkconfig: 35 90 10
    # description:  Starts and stops Zabbix Agent using chkconfig' misc/init.d/tru64/zabbix_agentd
    
    [root@zabbix zabbix-3.2.7]# sed -i 's/DAEMON=/usr/local/sbin/zabbix_agentd
    
    / DAEMON=/usr/local/zabbix_agent/sbin/zabbix_agentd
    
    /g' misc/init.d/tru64/zabbix_agentd

    将编译后生成的目录以服务启动脚本拷贝在一起,并且压缩

    [root@zabbix zabbix-3.2.7] mkdir  /opt/zabbix_agent
    
    [root@zabbix zabbix-3.2.7] cp misc/init.d/tru64/zabbix_agentd /opt/zabbix_agent
    
    [root@zabbix zabbix-3.2.7] cd /opt/zabbix_agent
    
    [root@zabbix zabbix_agent] cp -rf  /usr/local/zabbix_agent .
    
    [root@zabbix zabbix_agent] zip -r zabbix_agent.zip *

    将压缩文件上传到FTP服务器

     [root@zabbix opt] scp zabbix_agent.zip watson@172.16.255.22:/tmp     

    ###登录到FTP服务器,将/tmp/路径下面的压缩包,转移到ftp服务器跟路径中,便于其他机器下载,路径为/var/ftp/zabbix/zabbix_agentd.zi

    zabbix_agent安装脚步

    在ftp服务器上,

    路径为/var/ftp/zabbix

    被动模式的安装脚本

    vim /var/ftp/zabbix/install_agent_passive.sh

    #!/bin/bash
    # install_agent_passive.sh
    PAHT="/usr/local/sbin:/usr/sbin:/sbin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin";
    FTP_Server="172.16.255.22"
    PKT_PATH="zabbix/zabbix_agent.zip"
    source /etc/profile;
    cd /tmp
    wget ftp://$FTP_Server/$PKT_PATH
    unzip zabbix_agent.zip
    mv zabbix_agent/zabbix_agent /usr/local/
    mv zabbix_agentd/zabbix_agentd /etc/init.d/
    useradd zabbix
    ##增加zabbix用户到wheel数组
    egrep wheel /etc/group > /dev/null
    if [ $? -eq 0 ]
    then
            usermod -G  wheel zabbix
    fi
    egrep ficommon /etc/group > /dev/null
    if [ $? -eq 0 ]
    then
            usermod -G  ficommon zabbix
    fi
    echo zabbix:zabbix@123 |chpasswd
    chmod 755 /etc/init.d/zabbix_agentd
    #cp /usr/local/zabbix_agent/sbin/zabbix_agentd /usr/local/sbin/
    service zabbix_agentd start
    #设置开机自启
    sed -i ‘/bin/sh/a# chkconfig: 2345 80 30’ /etc/init.d/zabbix_agentd
    chkconfig zabbix_agentd on
    #echo "/etc/init.d/zabbix_agentd start"  >> /etc/rc.local
    rm -rf /tmp/zabbix_agent.zip

    主动模式的安装脚本

     vim /var/ftp/zabbix/install_agent_active.sh

    #!/bin/bash
    PAHT="/usr/local/sbin:/usr/sbin:/sbin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin";
    FTP_Server="192.168.20.25"
    PKT_PATH="zabbix/zabbix_agent.zip"
    #自动注册参数
    AOTU_Resgister="aotu_resgister32"
    source /etc/profile;
    cd /tmp
    wget ftp://$FTP_Server/$PKT_PATH
    unzip zabbix_agent.zip
    mv zabbix_agent/zabbix_agent /usr/local/
    mv zabbix_agentd/zabbix_agentd /etc/init.d/
    useradd zabbix
    chmod 755 /etc/init.d/zabbix_agentd
    #cp /usr/local/zabbix_agent/sbin/zabbix_agentd /usr/local/sbin/
    Server_IP=192.168.19.222
    if [[ `ip addr|egrep 'eth.$' | grep -v 'secondary'|tr '/' ' ' |awk '{print $2}'|wc -l` == '1' ]]
    then
      ListenIP=$(ip addr|egrep 'eth.$'|grep -v 'secondary' | tr '/' ' ' |awk '{print $2}')
      #替换被动模式的ListenIP
      sed -i 's/# ListenIP=0.0.0.0/ListenIP='$ListenIP'/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      #替换Hostname
      sed -i 's/Hostname=192.168.19.203/Hostname='$ListenIP'/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      #添加zabbix服务主机
      sed -i 's/ServerActive=127.0.0.1/ServerActive='$Server_IP'/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      #取消RefreshActiveChecks注释,设置被监控端到服务器获取监控项的周期,默认120S
      sed -i 's/# RefreshActiveChecks=120/RefreshActiveChecks=120/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      # 取消BufferSize注释,设置被监控端存储监控信息的空间大小
      sed -i 's/# BufferSize=100/BufferSize=200 /g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      # 取消Timeout注释,设置被监控端超时时间
      sed -i 's/# Timeout=3/Timeout=3/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      # 取消StartAgents注释,关闭被动模式
      sed -i 's/# StartAgents=3/StartAgents=0/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      #注释掉这行Server,设置纯主动模式
      sed -i 's/Server=192.168.19.222/# Server=192.168.19.222/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      ############# 取消BufferSize注释,设置被监控端存储监控信息的空间大小
      sed -i 's/# HostMetadataItem=/HostMetadataItem='$AOTU_Resgister'/g' /usr/local/zabbix_agent/etc/zabbix_agentd.conf
      fi
    #启动服务
    service zabbix_agentd start
    rm -rf /tmp/zabbix_agent.zip
    sed -i ‘/bin/sh/a# chkconfig: 2345 80 30’ /etc/init.d/zabbix_agentd
    chkconfig zabbix_agentd on

    ansible机器执行命令

    ———————————————————ansible机器

    ansible -i h6 h6-m shell -a 'wget
    #主动
    ftp://172.16.255.22/zabbix/install_agent_active.sh ;bash install_agent_active.sh' -K -become
    #被动
    ftp://172.16.255.22/zabbix/install_agent_active.sh ;bash install_agent_passive.sh' -K -become
    #验证1
    ansible -i h6 h6 -m shell -a 'source /etc/profile;/bin/ps -ef |grep zabbix' -K -become
  • 相关阅读:
    k8s中文网
    python range用法
    python 日志滚动 分文件
    python 语法
    flask 中文编码解码
    python的杨辉三角
    mysql8.0.4以后修改密码方式变更
    flask学习视频
    oralce的lag和lead函数
    JNI 各类数据类型处理
  • 原文地址:https://www.cnblogs.com/losbyday/p/7867777.html
Copyright © 2011-2022 走看看