想要达到的效果:一条命令,快速对多台主机部署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  -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 #设置disabled,马上生效
getenforce #检查

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

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

扫描网段脚本地址

#在这之前,已经对19端扫描过了,得到host_19的这个文件
ansible -i /opt/shell/lizuofang/beleve//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..tar.gz

[root@zabbix zabbix] cd zabbix-3.2. #进入源码所在的目录

[root@zabbix zabbix-3.2.]# ./configure --prefix=/usr/local/zabbix_agent --enable-agent

[root@zabbix zabbix-3.2.]# make && make install

##这个时候会在/usr/local/目录下会生成一个zabbix_agentd的目录

修改zabbix_agentd服务脚本

#给脚本执行权限

[root@zabbix zabbix-3.2.]# chmod  misc/init.d/tru64/zabbix_agentd

#修改zabbix_agentd服务启动脚本,使zabbix_agentd服务支持开启自启

[root@zabbix zabbix-3.2.]# sed -i '/bin\/sh/a #\n# chkconfig: 35 90 10\n# description:  Starts and stops Zabbix Agent using chkconfig' misc/init.d/tru64/zabbix_agentd

[root@zabbix zabbix-3.2.]# 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.] mkdir  /opt/zabbix_agent

[root@zabbix zabbix-3.2.] cp misc/init.d/tru64/zabbix_agentd /opt/zabbix_agent

[root@zabbix zabbix-3.2.] 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 ]
then
usermod -G wheel zabbix
fi
egrep ficommon /etc/group > /dev/null
if [ $? -eq ]
then
usermod -G ficommon zabbix
fi
echo zabbix:zabbix@ |chpasswd
chmod /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: ’ /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 /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` == '' ]]
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: ’ /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

使用ansible结合FTP部署zabbix_agent的更多相关文章

  1. 使用git代替FTP部署代码到服务器的例子

    这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量.节省时间,需要的朋友可以参考下 本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和 ...

  2. Jenkins +svn +maven +tomcat+ ansible 自动化批量部署

    Jenkins +svn +maven +tomcat+ ansible 自动化批量部署 一.部署svn yum install subversion 先创建目录 mkdir /home/svn 创建 ...

  3. ftp部署及使用

    常用软件安装及使用目录 http://www.jb51.net/article/106604.htm   ftp部署 本篇文章主要介绍了CentOS7.0下安装FTP服务的方法,小编觉得挺不错的,现在 ...

  4. FTP ftp部署遇到问题

    FTP  ftp部署遇到问题 一. 二.

  5. Linux上FTP部署:基于mariadb管理虚拟用户

    FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/ ...

  6. Jenkins Ansible GitLab 自动化部署

    Jenkins Ansible GitLab 自动化部署 DevOps https://www.cnblogs.com/yangjianbo/articles/10393765.html https: ...

  7. Ansible 系统概述与部署

    Ansible 系统概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet但是有一个不同和优点是我们不需要在节点中安装 ...

  8. Jenkins+Ansible+Gitlab自动化部署三剑客-Ansible本地搭建

    可以通过git bash连接linux 关闭防火墙,禁用防火墙开机启动,并更爱selinux文件,重启 重新登录并检查禁用 getenforce 安装git yum -y install git ns ...

  9. ansible的安装部署及简单应用

    Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平台由 Mi ...

随机推荐

  1. Effective前端2---加快页面打开速度

    1.避免head标签JS阻塞 所有放在head标签里的JS和CSS都会阻塞页面渲染.如果这些CSS和JS需要记在时间比较久,中间页面会存在一个空白期,严重影响到用户体验. 例如以下代码:在head标签 ...

  2. Fruit HDU - 2152 -上下界生成函数

    HDU - 2152 思路 :有上下界的生成函数 .生成函数即母函数,是组合数学中尤其是计数方面的一个重要理论和工具.生成函数有普通型生成函数和指数型生成函数两种, 其中普通型用的比较多.形式上说,普 ...

  3. C# 的Chart

    Axis Label 横纵坐标的文字 (比如 0 20 40 ....) Axis Title 横纵坐标的代表什么(比如 Y Axis Title) Chart Area 图标所在位置 Chart P ...

  4. BZOJ.1805.[IOI2007]sail船帆(贪心 线段树)

    BZOJ 洛谷 首先旗杆的顺序没有影响,答案之和在某一高度帆的总数有关.所以先把旗杆按高度排序. 设高度为\(i\)的帆有\(s_i\)个,那么答案是\(\sum\frac{s_i(s_i-1)}{2 ...

  5. HNOI 2017

    题目链接 我还是按bzoj AC数量排序做的 4827 这个其实如果推一下(求每个值)式子会发现是个卷积,然后FFT就好了 4826 记不太清了,可以求出每个点左右第一个比他的的点的位置,将点对看成平 ...

  6. [CF528D]Fuzzy Seach

    Description: 有两个基因串S和T,他们只包含AGCT四种字符.现在你要找出T在S中出现了几次. 有一个门限值k≥0.T在S的第i(1≤i≤|S|-|T|+1)个位置中出现的条件如下:把T的 ...

  7. python学习—几个简单小程序

    1. 输出1到100的偶数 #!/usr/bin/env python # -*- coding:utf-8 -*- #定义初始值 start=1 while True: #判断start的值若其为5 ...

  8. Android AsyncTask将讲解

    原型:AsyncTask<Params, Progress, Result> Params 表示传入参数类型 Progress表示处理参数类型 Result表示返回类型 new Async ...

  9. Java第一课

    1.引入Java虚拟机原因?过程:源文件--编译器(使用javac命令)-----二进制的字节码文件(平台无关)--解释器(使用Java命令)-----可执行文件结论:Java中的跨平台是通过[JVM ...

  10. JS_高程6.面向对象的程序设计(2)创建对象_3 构造函数存在的问题

    # 上次讲到用构造函数的模式来创建对象,相对于工厂模式,解决可对象识别的问题. function Person(name,age,job){ this.name=name; this.age=age; ...