zabbix agent 客户端(Linux)批量安装

引言:

zabbix-agent安装配置几台客户端是非常简单的操作,但如果遇到上百台的zabbix-agent客户端要安装及配置就显得相当费时间。目前自动化部署软件包、管理配置文件等开源的软件有许多,例如:SaltStack、Puppet、Ansible等,本教程就使用Ansible+shell脚本自动化部署zabbix-agent软件包和管理配置文件。


系统和软件版本:

[root@zabbix ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
[root@zabbix ~]# uname -r
3.10.0-862.el7.x86_64
[root@zabbix ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@zabbix ~]# ansible --version
ansible 2.9.13
[root@zabbix ~]# python -V
Python 2.7.5
[root@zabbix ~]# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.0.25
[root@zabbix ~]# zabbix_server -V
zabbix_server (Zabbix) 4.0.25
主机	                主机名称	           IP	                 安装软件
Zabbix Server(服务端)	zabbix	        10.10.10.10/24	    Linux + Zabbix Server + Apache + MySQL + Ansible
Zabbix Agent(客户端)	client01	10.10.10.11/24	    Linux + Zabbix Agent

Ansible简介:

Ansible是python中的一套模块,系统中的一套自动化工具,只需要配置SSH免密登陆即可用来管理系统、自动化执行命令等任务。Ansible已被红帽收购。

Ansible Playbook翻译是剧本的意思,Playbook是Ansible的配置、部署和编制语言。可以用于管理远程主机配置和部署,Playbook通常使用YAML语法格式编写,编写的文件格式建议使用yaml或yml。


提示:本教程就不讲解zabbix server安装部署

Ansible  官方网址:  https://www.ansible.com/ 
Zabbix   官方网址:  https://www.zabbix.com/ 



一、Shell脚本编写安装zabbix-agent及服务自启动脚本


1、zabbix-agent服务systemctl自启动脚本
[root@zabbix ~]# vim /data/zbxclient/centos7/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/etc/zabbix/conf/zabbix_agentd.conf"
EnvironmentFile=/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/bin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.targe

2、编写zabbix-agent脚本
[root@zabbix ~]# mkdir -p /data/zbxclient/centos7/

[root@zabbix ~]# vim /data/zbxclient/centos7/InstallZBXClient.sh
#!/bin/bash

zbxname=`hostname`
file01="/opt/zabbix_agent-4.0.21-linux-3.0-amd64-static.tar.gz"
file02="/opt/zabbix-agent.service"

if [ -f ${file01} ] && [ -f ${file02} ];then

mkdir -p /etc/zabbix
mkdir -p /etc/zabbix/zabbix_agentd.d
tar xf /opt/zabbix_agent-4.0.21-linux-3.0-amd64-static.tar.gz -C /etc/zabbix/

ln -s /etc/zabbix/sbin/zabbix_agentd /usr/bin/
ln -s /etc/zabbix/bin/zabbix_* /usr/bin/

useradd -M -s /sbin/nologin zabbix
chown -R zabbix:zabbix /etc/zabbix/*
chmod -R 755 /etc/zabbix/*

cat << EOF >> /etc/services
zabbix_agent      10050/tcp
zabbix_agent      10050/udp
EOF

mv /opt/zabbix-agent.service /usr/lib/systemd/system/

sed -i 's@# PidFile=/tmp/zabbix_agentd.pid@PidFile=/tmp/zabbix_agentd.pid@g' /etc/zabbix/conf/zabbix_agentd.conf
sed -i 's@# EnableRemoteCommands=0@EnableRemoteCommands=1@g' /etc/zabbix/conf/zabbix_agentd.conf
sed -i 's@# LogFileSize=1@LogFileSize=0@g' /etc/zabbix/conf/zabbix_agentd.conf
sed -i 's@Server=127.0.0.1@Server=10.10.10.10@g' /etc/zabbix/conf/zabbix_agentd.conf
sed -i 's@ServerActive=127.0.0.1@ServerActive=10.10.10.10@g' /etc/zabbix/conf/zabbix_agentd.conf
sed -i "s@Hostname=Zabbix server@Hostname=${zbxname}@g" /etc/zabbix/conf/zabbix_agentd.conf
sed -i "s@# Include=/usr/local/etc/zabbix_agentd.userparams.conf@Include=/etc/zabbix/zabbix_agentd.d/*.conf@g" /etc/zabbix/conf/zabbix_agentd.conf
sed -i 's@# UnsafeUserParameters=0@UnsafeUserParameters=1@g' /etc/zabbix/conf/zabbix_agentd.conf

systemctl daemon-reload
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
systemctl status zabbix-agent.service

elif [ -f ${file01} ];then
        echo "file ${file02} no exist!"
elif [ -f ${file02} ];then
        echo "file ${file01} no exist!"
else 
        echo "file ${file01} and ${file02} no exist!"
fi



二、安装配置Ansible

提示:ansible服务端与ansible客户端之间要把SSH免密,否则会提示错误。


1、配置阿里云yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

2、配置SSH免密登录
[root@zabbix ~]# ssh-keygen
[root@zabbix ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.11

3、安装Ansible

提示:yum安装Ansible软件会自动安装python

[root@zabbix ~]# yum -y install ansible
[root@zabbix ~]# rpm -qc ansible
/etc/ansible/ansible.cfg                 #==》Ansible配置文件
/etc/ansible/hosts                     #==》Ansible主机清单(重点)

4、配置Ansible主机组
[root@zabbix ~]# vim /etc/ansible/hosts
[zabbixagent]                        #==》自定义主机组名称
10.10.10.11                         #==》指定要执行的主机的IP地址

[zabbixagent_nossh]                  #==》自定义另一个主机组名称,该主机组可以不用配置SSH密钥认证,直接登录远程主机组
10.10.10.11 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

5、编写Ansible Playbook剧本
[root@zabbix ~]# mkdir -p /etc/ansible/playbook/
[root@zabbix ~]# vim /etc/ansible/playbook/zabbixagent.yml
- hosts: zabbixagent
  remote_user: root
  tasks:
  - name: copy zabbix-agent file
    copy:
      src: /data/zbxclient/centos7/
      dest: /opt/
  - name: shell scripts add root execute permission
    file:
      dest: /opt/InstallZBXClient.sh
      mode: u+x
  - name: zabbix-agent configure file add root execute permission
    file:
      dest: /opt/zabbix-agent.service
      mode: u+x
  - name: execute shell scripts install zabbix-agent
    command: "sh /opt/InstallZBXClient.sh"
  - name: delete file
    file:
      dest: "{{ item }}"
      state: absent
    with_items:
      - /opt/InstallZBXClient.sh
      - /opt/zabbix_agent-4.0.21-linux-3.0-amd64-static.tar.gz



三、执行Ansible Playbook剧本自动部署安装zabbix-agent

###检查剧本语法
[root@zabbix ~]# ansible-playbook --syntax-check /etc/ansible/playbook/zabbixagent.yml 

###模拟执行剧本
[root@zabbix ~]# ansible-playbook -C /etc/ansible/playbook/zabbixagent.yml

###执行剧本
[root@zabbix ~]# ansible-playbook /etc/ansible/playbook/zabbixagent.yml



四、检查zabbix-agent客户端

[root@client01 ~]# netstat -tlunp | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1788/zabbix_agentd

[root@client01 ~]# systemctl status zabbix-agent

[root@client01 ~]# egrep -v '^#|^$' /etc/zabbix/conf/zabbix_agentd.conf 
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
LogFileSize=0
EnableRemoteCommands=1
Server=10.10.10.10
ServerActive=10.10.10.10
Hostname=client01
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
posted @ 2020-11-04 15:11  邹龙彬  阅读(946)  评论(0编辑  收藏  举报