Zabbix-批量安装agent

Zabbix-批量安装agent


在运维工作中,经常会给一批服务器添加zabbix监控,添加监控的第一步就是为这些服务器安装zabbix agent。现在将批量安装zabbix agent的方法总结,用以分享给同样奋战在运维一线的道友们。

思路

1,编写服务器列表文件(agent_hosts.txt)
该文件分为三列,主机ip、主机密码、zabbix server或zabbix proxy的ip。
2,编写自动部署zabbix agent的脚本(install-zabbix-agent.sh)
用于实现单台服务器的自动部署。
3,编写批量安装脚本(auto_install.sh和install_agent.exp)
将自动部署zabbix agent脚本上传至每台被监控的服务器中,并将服务器信息作为参数,执行被监控服务器上的自动部署脚本,以实现批量安装的目的。

目录结构

[root@ys opt]# pwd
/opt
[root@ys opt]# tree -L 3 auto_install/
auto_install/
├── agent_hosts.txt
├── auto_install.sh
├── install_agent
│   ├── install-zabbix-agent.sh
│   ├── zabbix-2.4.5-1.el6.x86_64.rpm
│   └── zabbix-agent-2.4.5-1.el6.x86_64.rpm
└── install_agent.exp

1 directory, 6 files

实例

1,编写服务器列表文件

[root@ys auto_install]# pwd
/opt/auto_install
[root@ys auto_install]# cat agent_hosts.txt 
192.168.1.101 1qaz3edc 192.168.1.45
192.168.1.102 1qaz3edc 192.168.1.45

2,编写自动部署zabbix agent的脚本(install-zabbix-agent.sh)

[root@ys install_agent]# pwd
/opt/auto_install/install_agent
[root@ys install_agent]# cat install-zabbix-agent.sh 
#!/bin/bash
COMMAND_LINE="$0 $*" 
export SCRIPT_NAME="$0"

usage() {
   echo "Usage: $SCRIPT_NAME <hostip> <serverip>"
}

if [ $# -ne 2 ]
then
    usage ;
    exit ;
fi

if [ -x /usr/sbin/zabbix_agentd ]; then
    exit 5
fi

service zabbix-agent stop

rpm -ivh zabbix-2.4.5-1.el6.x86_64.rpm
rpm -ivh zabbix-agent-2.4.5-1.el6.x86_64.rpm

rm -f /etc/zabbix/zabbix_agentd.conf
rm -f /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

echo "PidFile=/var/log/zabbix/zabbix_agentd.pid" > /etc/zabbix/zabbix_agentd.conf
echo "LogFile=/var/log/zabbix/zabbix_agentd.log" >> /etc/zabbix/zabbix_agentd.conf
echo "LogFileSize=10" >> /etc/zabbix/zabbix_agentd.conf
echo "EnableRemoteCommands=1" >> /etc/zabbix/zabbix_agentd.conf
echo "LogRemoteCommands=1" >> /etc/zabbix/zabbix_agentd.conf
echo "Server=$2" >> /etc/zabbix/zabbix_agentd.conf
echo "ServerActive=$2" >> /etc/zabbix/zabbix_agentd.conf
echo "SourceIP=$1" >> /etc/zabbix/zabbix_agentd.conf
echo "Hostname=$1" >> /etc/zabbix/zabbix_agentd.conf
echo "Include=/etc/zabbix/zabbix_agentd.d/*.conf" >> /etc/zabbix/zabbix_agentd.conf

chmod 640 /etc/sudoers
sed -i 's/Defaults *requiretty/#Defaults        requiretty/g' /etc/sudoers
sed -i 's/zabbix ALL=(ALL) NOPASSWD: ALL//g' /etc/sudoers
echo "zabbix ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
chmod 440 /etc/sudoers

echo "#Get partition number" > /etc/zabbix/zabbix_agentd.d/userparameter.conf
echo "UserParameter=vfs.fs.partitionnum,sudo fdisk -l 2>&1 | grep '^Disk /dev/' | wc -l" >> /etc/zabbix/zabbix_agentd.d/userparameter.conf
echo "#Get size of a directory,Defaults to /tmp" >> /etc/zabbix/zabbix_agentd.d/userparameter.conf
echo "UserParameter=vfs.dir.size[*],dir=\"$1\"; du -s -B 1 \"${dir:-/tmp}\" | cut -f1" >> /etc/zabbix/zabbix_agentd.d/userparameter.conf

echo "#Total CPU utilisation by all processes with a given name." >> /etc/zabbix/zabbix_agentd.d/userparameter.conf
echo "#Returns empty value if no such processes are present, numeric items will turn unsupported." >> /etc/zabbix/zabbix_agentd.d/userparameter.conf
echo "#Defaults to zabbix_agentd." >> /etc/zabbix/zabbix_agentd.d/userparameter.conf
echo "UserParameter=proc.cpu[*],proc=\"$1\"; ps -o pcpu= -C \"${proc:-zabbix_agentd}\" | awk '{sum += $$1} END {print sum}'" >> /etc/zabbix/zabbix_agentd.d/userparameter.conf

chkconfig --level 2345 zabbix-agent on
service zabbix-agent start

3,编写批量安装脚本(auto_install.sh和install_agent.exp)

[root@ys auto_install]# pwd
/opt/auto_install
[root@ys auto_install]# cat auto_install.sh 
#!/bin/bash
work_dir=`pwd`
for i in `awk '{print $1}' ${work_dir}/agent_hosts.txt`
do
  j=`awk -v I=${i} '{if(I==$1) print $2}' ${work_dir}/agent_hosts.txt`
  k=`awk -v I=${i} '{if(I==$1) print $3}' ${work_dir}/agent_hosts.txt`
  expect ${work_dir}/install_agent.exp $i $j $k
done
[root@ys auto_install]# pwd
/opt/auto_install
[root@ys auto_install]# cat install_agent.exp 
#!/usr/bin/expect
set host_ip   [lindex $argv 0]
set host_pass [lindex $argv 1]
set serv_ip   [lindex $argv 2]

spawn scp -r /opt/auto_install/install_agent root@$host_ip:/opt
expect {
"yes/no" {send "yes\r";exp_continue}
"password" {send "$host_pass\r"}
}

spawn ssh root@$host_ip
expect {
"yes/no" {send "yes\r";exp_continue}
"password" {send "$host_pass\r"}
}
expect "*#"
send "cd /opt/install_agent\r"
expect "*#"
send "./install-zabbix-agent.sh $host_ip $serv_ip\r"
expect "]#"
send "exit\r"

expect eof

4,授权并执行

[root@ys auto_install]# pwd
/opt/auto_install
[root@ys auto_install]# chmod 775 auto_install.sh 
[root@ys auto_install]# chmod 775 install_agent.exp 
[root@ys auto_install]# chmod 775 install_agent/install-zabbix-agent.sh 
[root@ys auto_install]# ./auto_install.sh 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Ansible批量化部署Zabbix Agent,您可以按照以下步骤进行操作: 1. 安装Ansible:首先,在控制机上安装Ansible,确保您已经具备了运行Ansible的环境。 2. 创建Ansible Playbook:创建一个新的Playbook文件(例如`deploy_zabbix_agent.yml`),并在其中定义任务。 ```yaml --- - name: Deploy Zabbix Agent hosts: zabbix_agents become: true tasks: - name: Install Zabbix Agent package apt: name: zabbix-agent state: present - name: Configure Zabbix Agent template: src: zabbix_agent.conf.j2 dest: /etc/zabbix/zabbix_agentd.conf notify: - restart zabbix-agent - name: Start and enable Zabbix Agent service service: name: zabbix-agent state: started enabled: true handlers: - name: restart zabbix-agent service: name: zabbix-agent state: restarted ``` 在上面的示例中,Playbook定义了三个任务:安装Zabbix Agent软件包、配置Zabbix Agent和启动Zabbix Agent服务。 3. 创建Zabbix Agent配置模板:创建一个名为`zabbix_agent.conf.j2`的Jinja2模板文件,其中包含Zabbix Agent的配置信息。根据您的需求,可以在模板中设置主机名称、服务器地址等参数。 ```ini Server=<zabbix_server_ip> ServerActive=<zabbix_server_ip> Hostname={{ inventory_hostname }} ``` 4. 创建主机清单文件:创建一个名为`hosts`的主机清单文件,并在其中列出要部署Zabbix Agent的目标主机。 ```ini [zabbix_agents] host1 host2 host3 ``` 将目标主机的IP地址或主机名替换为实际的主机信息。 5. 运行Playbook:使用ansible-playbook命令运行Playbook,并指定主机清单文件。 ```bash ansible-playbook -i hosts deploy_zabbix_agent.yml ``` Ansible将自动连接到目标主机,并按照Playbook中定义的任务顺序执行操作。这将完成Zabbix Agent批量化部署。 请根据您的实际需求和环境对上述步骤进行适当修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值