zabbix监控自动化
1、自动化监控(网络发现与自动注册只能用其一)
1.1 ansible安装zabbix agent
新采购100台服务器:
1、安装操作系统
2、初始化操作系统
3、安装zabbix agent
1.手动部暑
2.脚本部暑(shell expect)
3.ansible
4、纳入监控
1.A机房,B机房
2.模板
3.主机
1.1.1 ansible安装zabbix agent
# cat hosts
[webservers]
192.168.0.16
# cat zabbix_agent.yml
---
- hosts: webservers
vars:
- zabbix_server: 192.168.0.13
tasks:
- name: Install zabbix agent - CentOS6
yum: name=https://repo.zabbix.com/zabbix/4.0/rhel/6/x86_64/zabbix-agent-4.0.0-2.el6.x86_64.rpm state=present
when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "6"
- name: Install zabbix agent - CentOS7
yum: name=https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm state=present
when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"
- name: Copy zabbix agent configuration file
template: src=zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf
- name: Start zabbix agent
service: name=zabbix-agent state=started enabled=true
# cat zabbix_agentd.conf.j2
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
DebugLevel=3
Server={{ zabbix_server }}
ListenPort=10050
ListenIP={{ ansible_default_ipv4.address }}
ServerActive={{ zabbix_server }}
Hostname={{ ansible_default_ipv4.address }}
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#监控tcp连接
UserParameter=tcp.status[*],ss -antp |awk '{a[$$1]++}END{print a["$1"]}'
#异常IP登录
UserParameter=check.ssh, who | grep -v 192.168.5.101 | wc -l
#异常用户登录
UserParameter=check.user, who | grep -v root | wc -l
#密码尝试失败次数
UserParameter=check.fail, grep "Failed password" /var/log/secure | wc -l
#检查用户数量
UserParameter=get_user_num,wc -l /etc/passwd | awk '{print $1}'
#可以登陆的用户
UserParameter=get_login_users,awk -F":" '$7=="/bin/bash"{j++}END{print j}' /etc/passwd
#不可以登陆的用户
UserParameter=get_nologin_users,awk -F":" '$7!="/bin/bash"{i++}END{print i}' /etc/passwd
# ansible-playbook -i hosts zabbix_agent.yml -k
1.2 网络发现
# ntpdate time.windows.com #同步一下时间
动作:
1.3 自动注册
ServerActive=192.168.0.13 #zabbix agent配置文件
HostMetadataItem=system.uname
2、zabbix agentd一键部暑脚本
#!/bin/bash
# author: old driver
# date: 2019-04-01
# 安装依赖包
yum install -y libxml2-devel libcurl-devel libevent-devel net-snmp-devel gcc gcc-c++
# 安装zabbix agentd
groupadd zabbix
useradd -g zabbix zabbix -s /sbin/nologin
cd /opt && tar -xzf zabbix-4.0.0.tar.gz
cd zabbix-4.0.0
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
# 修改配置文件
rm -rf /usr/local/zabbix/etc/zabbix_agentd.conf
# zabbix agentd主动模式
cat > /usr/local/zabbix/etc/zabbix_agentd.conf < <EOF< span> </EOF<>
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
DebugLevel=3
ListenPort=10050
ListenIP=172.23.101.101
StartAgents=0
ServerActive=172.23.101.207 #zabbix server
Hostname=172.23.101.101
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
#UserParameter
EOF
# 开机启动
cp /opt/zabbix-4.0.0/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
mkdir -p /var/log/zabbix
mkdir -p /var/run/zabbix
chown zabbix:zabbix /var/log/zabbix
chown zabbix:zabbix /var/run/zabbix
ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/
cp /opt/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/init.d/zabbix_agentd
#启动zabbix_agentd
/etc/init.d/zabbix_agentd start
/etc/init.d/zabbix_agentd stop
systemctl start zabbix_agentd
ps -ef |grep zabbix
3、ansible安装zabbix agent
方法一:
# cat zabbix_agent.yaml
---
- hosts: all
vars:
- zabbix_server: 10.213.94.202
tasks:
- name: Add zabbix repo
yum_repository:
name: zabbix
description: zabbix repo
baseurl: http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
gpgcheck: no
enabled: 1
- name: Install zabbix agent
yum: name=zabbix-agent state=present
- name: Copy zabbix agent configuration file
template: src=zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf
- name: Start zabbix agent
service: name=zabbix-agent state=started enabled=true
# cat zabbix_agentd.conf.j2
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
DebugLevel=3
Server={{ zabbix_server }}
ListenPort=10050
ListenIP={{ ansible_default_ipv4.address }}
ServerActive={{ zabbix_server }}
Hostname={{ ansible_default_ipv4.address }}
Include=/etc/zabbix/zabbix_agentd.d/*.conf
# UserParameter=
安装:
# ansible-playbook zabbix_agent.yaml
方法二:
# cat zabbix_agent.yaml
- hosts: zabbix_agent
remote_user: root
tasks:
- name: install zabbix_agent packages
yum: name={{ item }} state=latest
with_items:
- curl-devel
- name: copy install_shell to clien
copy: src=/etc/ansible/zabbix_agent.sh dest=/usr/local/src/zabbix_agent.sh
- name: sent tar
copy: src=/usr/local/src/zabbix-4.2.6.tar.gz dest=/usr/local/src/zabbix-4.2.6.tar.gz
notify: install shell
handlers:
- name: install shell
shell: /bin/bash /usr/local/src/zabbix_agent.sh
# cat zabbix_agent.sh
#!/bin/bash
useradd zabbix -s /sbin/nologin
cd /usr/local/src
tar -xf zabbix-4.2.6.tar.gz
cd zabbix-4.2.6
./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix
make && make install
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
chmod 700 /etc/init.d/zabbix_agentd
sed -i 's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd\g' /etc/init.d/zabbix_agentd
sed -i 's\Server=127.0.0.1\Server=192.168.15.11\g' /usr/local/zabbix/etc/zabbix_agentd.conf
/etc/init.d/zabbix_agentd start
chkconfig zabbix_agentd on
安装:
# ansible-playbook zabbix_agent.yaml