ansible 批量安装zabbix-agent
服务器初始化(这是在建立在新的服务器基础上做的初始化)关闭防火墙、selinux,添加epel常用源,安装常用工具、添加普通用户并禁止root
1、服务器批量初始化
[root@fwd ansible]# cat init.yml 系统初始化脚本
---
- hosts: all
tasks:
- name: disable selinux、firewalls,replace ali sources
shell: |
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable firewalld
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- name: ensure a list of packages installed
yum:
name: "{{ packages }}"
vars:
packages:
- wget
- vim
- sysstat
- lrzsz
- lsof
- name: Add the user centos
user:
name: centos
group: wheel
- name: disabled root remote login
replace:
path: /etc/ssh/sshd_config
regexp: '\#PermitRootLogin yes'
replace: 'PermitRootLogin no'
backup: yes
- name: modify ssh port
shell: sed -i '/^\#Port/a\Port 22201' /etc/ssh/sshd_config
- name: restart ssh
service:
name: sshd
state: restarted
- name: Add epel and reboot server
shell: |
reboot
2、检测语法
[root@fwd ansible]# ansible-playbook -C init.yml PLAY [all] ******************************************************************************************************************************************************************************************************************************************************************* TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************************************************* ok: [192.168.9.22] ok: [192.168.9.14] ok: [192.168.9.132] TASK [disable selinux、firewalls,replace ali sources] ************************************************************************************************************************************************************************************************************************* skipping: [192.168.9.132] skipping: [192.168.9.14] skipping: [192.168.9.22] TASK [ensure a list of packages installed] *********************************************************************************************************************************************************************************************************************************** changed: [192.168.9.22] changed: [192.168.9.14] changed: [192.168.9.132] TASK [Add the user centos] *************************************************************************************************************************************************************************************************************************************************** changed: [192.168.9.22] changed: [192.168.9.132] changed: [192.168.9.14] TASK [disabled root remote login] ******************************************************************************************************************************************************************************************************************************************** changed: [192.168.9.132] changed: [192.168.9.22] changed: [192.168.9.14] TASK [modify ssh port] ******************************************************************************************************************************************************************************************************************************************************* skipping: [192.168.9.22] skipping: [192.168.9.132] skipping: [192.168.9.14] TASK [restart ssh] *********************************************************************************************************************************************************************************************************************************************************** changed: [192.168.9.22] changed: [192.168.9.132] changed: [192.168.9.14] TASK [Add epel and reboot server] ******************************************************************************************************************************************************************************************************************************************** skipping: [192.168.9.22] skipping: [192.168.9.132] skipping: [192.168.9.14] PLAY RECAP ******************************************************************************************************************************************************************************************************************************************************************* 192.168.9.132 : ok=5 changed=4 unreachable=0 failed=0 192.168.9.14 : ok=5 changed=4 unreachable=0 failed=0 192.168.9.22 : ok=5 changed=4 unreachable=0 failed=0
3、mysql 安装,并创建zabbix 需要数据库
[root@fwd ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@fwd ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
[root@fwd ~]# yum install mysql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
mysql-connectors-community | 2.5 kB 00:00:00
mysql-tools-community | 2.5 kB 00:00:00
mysql56-community | 2.5 kB 00:00:00
(1/3): mysql-connectors-community/x86_64/primary_db | 41 kB 00:00:00
(2/3): mysql-tools-community/x86_64/primary_db | 58 kB 00:00:00
(3/3): mysql56-community/x86_64/primary_db | 226 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package Percona-Server-server-56.x86_64 0:5.6.43-rel84.3.el7 will be installed
--> Processing Dependency: Percona-Server-client-56 for package: Percona-Server-server-56-5.6.43-rel84.3.el7.x86_64
--> Processing Dependency: Percona-Server-shared-56 for package: Percona-Server-server-56-5.6.43-rel84.3.el7.x86_64
--> Running transaction check
---> Package Percona-Server-client-56.x86_64 0:5.6.43-rel84.3.el7 will be installed
---> Package Percona-Server-shared-56.x86_64 0:5.6.43-rel84.3.el7 will be obsoleting
---> Package mariadb-libs.x86_64 1:5.5.60-1.el7_5 will be obsoleted
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================
Installing:
Percona-Server-server-56 x86_64 5.6.43-rel84.3.el7 percona-release-x86_64 18 M
Percona-Server-shared-56 x86_64 5.6.43-rel84.3.el7 percona-release-x86_64 619 k
replacing mariadb-libs.x86_64 1:5.5.60-1.el7_5
Installing for dependencies:
Percona-Server-client-56 x86_64 5.6.43-rel84.3.el7 percona-release-x86_64 5.5 M
Transaction Summary
====================================================================================================================================
Install 2 Packages (+1 Dependent package)
Total size: 24 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/percona-release-x86_64/packages/Percona-Server-client-56-5.6.43-rel84.3.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Percona
The GPG keys listed for the "Percona-Release YUM repository - x86_64" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
Failing package is: Percona-Server-client-56-5.6.43-rel84.3.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Percon
报错Percona-Release YUM存储库 - x86_64”存储库列出的GPG密钥已经安装!
解决办法如下:
[root@fwd ~]# yum update percona-release
[root@fwd ~]# systemctl start mysqld
3.1、修改mysql 密码 授权zabbix用户
[root@fwd ~]# mysql_secure_installatio [root@fwd ~]# mysqladmin -u root password "123456"; 2中方法随意 [root@fwd ~]# mysql -uroot -p Enter password: mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '123456'; mysql> quit;
3.2、安装zabbix 4.0 server 添加zabbix 4.0 存储库, 并使用mysql 支持zabbix前端
[root@fwd ~]# yum install -y https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@fwd ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get
3.3、导入表结构
[root@fwd ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
3.4、修改配置文件
编辑 /etc/httpd/conf.d/zabbix.conf php_value date.timezone Europe/Riga 修改为 php_value date.timezone Asia/Shanghai 编辑 /etc/zabbix/zabbix_server.conf DBPassword=123456
3.5、开启服务,并设置开机自启
[root@fwd ~]# systemctl restart zabbix-server zabbix-agent httpd [root@fwd ~]# systemctl enable zabbix-server zabbix-agent httpd
4、批量部署zabbix-agent 客户端
[root@fwd ansible]# pwd
/etc/ansible
[root@fwd ansible]# tree . ├── ansible.cfg ├── comon_site.retry ├── comon_site.yml ├── hosts ├── init.retry ├── init.yml ├── roles │ ├── common │ │ ├── defaults │ │ │ └── main.yml │ │ ├── files │ │ │ ├── common_id_rsa.pub │ │ │ ├── common_sshd_config │ │ │ └── common_sysctl.conf │ │ ├── handlers │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ ├── templates │ │ │ ├── common_motd │ │ │ └── common_sshd_config │ │ └── vars │ │ └── main.yml │ └── zabbix_agent │ ├── files │ │ └── zabbix-agent-4.0.2-1.el7.x86_64.rpm │ ├── tasks │ │ └── main.yml │ └── templates │ └── zabbix_agentd.conf.j2
4.1、查看hosts 文件
[root@fwd ansible]# cat hosts [james] 192.168.9.22 192.168.9.132 192.168.9.14
[root@fwd ansible]# cat zabbix_agent.yml
- hosts: all
user: root
vars:
zabbix_serverip: 192.168.9.129 # zabbix 服务器IP
zabbix_activeip: 192.168.9.129 # zabbix 服务器IP
agent_hostname: '{{ ansible_hostname }}' # 客户端hostname
agent_ip: '{{ ansible_ens33.ipv4.address }}' # 客户端IP 根据实际情况修改自己的网卡名字ens33 改成自己服务器
roles:
- zabbix_agent
4.2、在/etc/ansible/roles/zabbix_agent/ 创建tasks 目录 添加 main.yml 文件
[root@fwd tasks]# cat main.yml # 这里写的是zabbix-agent 安装剧本 - name: copy zabbix_agentd copy: src=/etc/ansible/roles/zabbix_agent/files/zabbix-agent-4.0.2-1.el7.x86_64.rpm dest=/usr/local/src/zabbix-agent-4.0.2-1.el7.x86_64.rpm - name: install zabbix-agend shell: rpm -ivh /usr/local/src/zabbix-agent-4.0.2-1.el7.x86_64.rpm # 安装zabbix agentd - name: up zabbix-agent file client # 上传配置文件 template: src=zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf - name: enabled service zabbix-agent # 打开zabbix-agent 开机启动 service: name=zabbix-agent enabled=yes - name: start service zabbix-agent # 启动zabbix-agent service: name=zabbix-agent state=started
4.3、在/etc/ansible/roles/zabbix_agent/ 下创建 templates 文件,定义zabbix_agent.conf .js模板文件
[root@fwd templates]# cat zabbix_agentd.conf.j2
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
EnableRemoteCommands=1 #远程执行命令的选项
Server={{zabbix_serverip}} #自定义server IP 变量
ListenPort=10050
ServerActive={{zabbix_activeip}}
Hostname={{ansible_hostname}} #自定义主机名变量
AllowRoot=1
UnsafeUserParameters=1 #设置为1 表示允许用户自定义key值
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/*.confgather_facts: false
5、执行批量安装
[root@fwd ansible]# ansible-playbook zabbix_agent.yml PLAY [all] ************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************* ok: [192.168.9.22] ok: [192.168.9.14] ok: [192.168.9.132] TASK [zabbix_agent : copy zabbix_agentd] ******************************************************************************************* changed: [192.168.9.132] changed: [192.168.9.22] changed: [192.168.9.14] TASK [zabbix_agent : install zabbix-agend] ***************************************************************************************** changed: [192.168.9.132] changed: [192.168.9.22] changed: [192.168.9.14] TASK [zabbix_agent : up zabbix-agent file client] ********************************************************************************** changed: [192.168.9.22] changed: [192.168.9.132] changed: [192.168.9.14] TASK [zabbix_agent : enabled service zabbix-agent] ********************************************************************************* changed: [192.168.9.132] changed: [192.168.9.22] changed: [192.168.9.14] TASK [zabbix_agent : start service zabbix-agent] ********************************************************************************** changed: [192.168.9.132] changed: [192.168.9.22] changed: [192.168.9.14] PLAY RECAP ************************************************************************************************************************* 192.168.9.132 : ok=6 changed=5 unreachable=0 failed=0 192.168.9.14 : ok=6 changed=5 unreachable=0 failed=0 192.168.9.22 : ok=6 changed=5 unreachable=0 failed=0
检查客户端zabbix_agent服务是否启动
[root@fwd ansible]# ansible james -m shell -a "ps -ef | grep zabbix_agent" 192.168.9.132 | CHANGED | rc=0 >> root 9512 1 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf root 9513 9512 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] root 9514 9512 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] root 9515 9512 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] root 9516 9512 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] root 9517 9512 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 9566 9565 0 13:26 pts/0 00:00:00 /bin/sh -c ps -ef | grep zabbix_agent root 9568 9566 0 13:26 pts/0 00:00:00 grep zabbix_agent 192.168.9.14 | CHANGED | rc=0 >> root 8847 1 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf root 8848 8847 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] root 8849 8847 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] root 8850 8847 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] root 8851 8847 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] root 8852 8847 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 8902 8901 0 13:26 pts/1 00:00:00 /bin/sh -c ps -ef | grep zabbix_agent root 8904 8902 0 13:26 pts/1 00:00:00 grep zabbix_agent 192.168.9.22 | CHANGED | rc=0 >> root 8982 1 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf root 8983 8982 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] root 8984 8982 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] root 8985 8982 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] root 8986 8982 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] root 8987 8982 0 13:26 ? 00:00:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 9037 9036 0 13:26 pts/1 00:00:00 /bin/sh -c ps -ef | grep zabbix_agent root 9039 9037 0 13:26 pts/1 00:00:00 grep zabbix_agent [root@fwd ansible]# ansible james -m shell -a "netstat -plunt" 192.168.9.22 | CHANGED | rc=0 >> Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 6769/httpd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7343/sshd tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 8982/zabbix_agentd tcp6 0 0 :::22 :::* LISTEN 7343/sshd tcp6 0 0 :::10050 :::* LISTEN 8982/zabbix_agentd 192.168.9.132 | CHANGED | rc=0 >> Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 6865/httpd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7826/sshd tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9512/zabbix_agentd tcp6 0 0 :::873 :::* LISTEN 6869/xinetd tcp6 0 0 :::22 :::* LISTEN 7826/sshd tcp6 0 0 :::10050 :::* LISTEN 9512/zabbix_agentd udp 0 0 0.0.0.0:68 0.0.0.0:* 7643/dhclient 192.168.9.14 | CHANGED | rc=0 >> Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7245/sshd tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 8847/zabbix_agentd tcp6 0 0 :::22 :::* LISTEN 7245/sshd tcp6 0 0 :::10050 :::* LISTEN 8847/zabbix_agentd
5.1、这里介绍下忘记zabbix 登录密码怎么办,因为我经常忘记 查看md5秘钥
[root@fwd templates]# mysql -uroot -p -e "select * from zabbix.users\G"
Enter password:
*************************** 1. row ***************************
userid: 1
alias: Admin
name: Zabbix
surname: Administrator
passwd: 5fce1b3e34b520afeffb37ce08c7cd66
url:
autologin: 1
autologout: 0
lang: en_GB
refresh: 30s
type: 3
theme: default
attempt_failed: 0
attempt_ip:
attempt_clock: 0
rows_per_page: 50
*************************** 2. row ***************************
userid: 2
alias: guest
name:
surname:
passwd: d41d8cd98f00b204e9800998ecf8427e
url:
autologin: 0
autologout: 15m
lang: en_GB
refresh: 30s
type: 1
theme: default
attempt_failed: 0
attempt_ip:
attempt_clock: 0
rows_per_page: 50
[root@fwd templates]# mysql -uroot -p
Enter password:
mysql>use zabbix ; 进入到zabbix数据库
mysql>update users set passwd='5fce1b3e34b520afeffb37ce08c7cd66' where userid='1';
因为5fce1b3e34b520afeffb37ce08c7cd66 = zabbix 你现在就可以用 Admin zabbix 登录了~
6、zabbix自动发现,自动添加(我们批量安装zabbix_agent的目的就是因为以后服务器越来越多,面对越来越多的服务器,我们一台一台添加明显有点不现实!所以就要用到zabbix的自动发现登录zabbix http://localhost/zabbix)
6.1、配置自动发现规则

6.2、配置-动作-触发器-创建动作


6.3、配置完毕,几分钟后zabbix--监控中--自动发现

6.4、自动注册 配置-动作-自动注册


更新过后,刷新就会发现发现的主机已经自动添加了

报错主机无法被监控是因为我客户端防火墙开启了,没对外开放10050端口,给防火墙添加条规则就可以
[root@proxy-01 network-scripts]# cat /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 10050 -j ACCEPT 添加规则 对外开放10050端口
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@proxy-01 network-scripts]# systemctl restart iptables.service
[root@proxy-01 network-scripts]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
30 1980 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10050
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 16 packets, 1552 bytes)
pkts bytes target prot opt in out source destination
作者:james
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
posted on 2019-05-26 20:19 james的运维之路 阅读(965) 评论(0) 收藏 举报
浙公网安备 33010602011771号