2017-4-18 Zabbix server的安裝以及ansible批量部署zabbix agent的工作筆記


 

 

 

 


一、准備LAMP環境
[root@zabbix ~]# yum install mariadb-devel mariadb-server -y
[root@zabbix ~]# systemctl enable mariadb.service ##注意啟動的時候是service而不是server
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix ~]# systemctl start mariadb.service
[root@zabbix ]# mysql
MariaDB [(none)]> create database zabbix default character set utf8;
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'192.168.%.%' identified by 'zabbix'; ##在授權的同時創建了該用戶
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix'; ##使用socket連接,因為數據庫也在同一台機器上
MariaDB [(none)]> flush privileges;
[root@zabbix ~]# mysql -uzabbix -pzabbix ##測試zabbix用戶登錄

[root@zabbix mariadb]# yum install httpd httpd-devel httpd-manual php -y
[root@zabbix httpd]# cat /var/www/html/index.html
<h1>
this is Zabbix Server,and IP is 192.168.0.24
</h1>

# systemctl stop firewalld
# setenforce 0
[root@zabbix ~]# vim /etc/php.ini ##
date.timezone =Asia/Shanghai
[root@zabbix httpd]# service httpd start
[root@zabbix ~]# curl -I http://localhost
[root@zabbix ~]# systemctl enable httpd

二、安裝zabbix-server
[root@zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm ##安裝zabbix的yum倉庫
[root@zabbix ~]# ll /etc/yum.repos.d/zabbix.repo
-rw-r--r--. 1 root root 410 Sep 14 2016 /etc/yum.repos.d/zabbix.repo
[root@zabbix yum.repos.d]# yum list|grep zabbix
[root@zabbix yum.repos.d]# yum install zabbix-server zabbix-server-mysql zabbix-get zabbix zabbix-web zabbix-web-mysql zabbix-agent zabbix-sender -y
[root@zabbix doc]# rpm -ql zabbix-server-mysql
[root@zabbix ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.4/
[root@zabbix ~]# gunzip create.sql.gz
[root@zabbix ~]# mysql zabbix <create.sql ##默認root密碼為空
[root@zabbix zabbix-server-mysql-3.2.3]# mysql
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
## DBHost=zabbix ##如果指定為localhost的意思是,數據庫也在本機上,那么我們是不需要修改接下來的DBsocket的
DBPassword=zabbix
[root@zabbix ~]# service zabbix-server start
[root@zabbix ~]# systemctl enable zabbix-server
[root@zabbix ~]# netstat -tunlp ##並沒有察覺到10051端口處於監聽狀態
[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
[root@zabbix ~]# service httpd restart

三、配置zabbix web界面,zabbix server本身安裝zabbix-agnet,監控自己。
http://[zabbix-ip]/zabbix 填入數據庫的密碼是zabbix,zabbix服務登錄的用戶名是admin,密碼是zabbix

[root@zabbix ~]# yum install zabbix-agent zabiix-sender -y ##centos7.2中不需要安裝zabbix公共組件
[root@zabbix ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
ServerActive=192.168. 1.63 ##申明zabbix服務監控端的IP地址或者域名,也可以是127.0.0.1
Hostname=Zabbix Server ##申明被監控端的主機名,必須唯一
[root@zabbix ~]# service zabbix-agent start
[root@zabbix ~]# systemctl enable zabbix-agent
[root@zabbix ~]# netstat -tnulp|grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3166/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 3166/zabbix_agentd
而后,登錄web界面,在[configuration]-[host]右側創建主機[create host],填入相關信息

/////////////////////////////
批量部署源碼包zabbix-agent的腳本,因為其他節點是訪問不了外網的。這個腳本不適用,不用添加了!
#!/bin/bash

read -p "請輸入zabbix-agent所在的IP地址: " Host
read -s -p "請輸入zabbix-agent的root用戶密碼: " Password
echo
ep=`rpm -qa | grep expect`
if [ -z $ep ] ; then
echo "檢測到你的系統,沒有安裝expect模塊,准備執行安裝"
yum install -y expect --quiet
if [ $? -eq 0 ];then
echo "\033[32m 成功安裝expect模塊,開始執行ssh文件同步! \033[0m"
fi
else
echo -e "\033[32m 你已經安裝過了expect模塊,開始執行ssh文件同步! \033[0m"
fi

#spawn ssh-copy-id -i .ssh/id_rsa.pub $Host
spawn ssh root@$Host
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$Password\r" ;exp_continue }
}
//////////////////////////

四、ansbile批量部署zabbix-agent rpm包。 參考文檔:http://yangfannie.com/1120.html http://www.cnblogs.com/wsl222000/p/5724938.html


[root@zabbix ~]# yum install -y epel-release
[root@zabbix ~]# yum install ansible -y
[root@zabbix ansible]# tree
├── ansible.cfg
├── hosts
├── install_zabbix_agent.yml
└── roles
└── install_zabbix_agent
├── files
│?? ├── zabbix-agent-3.2.4-2.el7.x86_64.rpm
│?? └── zabbix-sender-3.2.4-1.el7.x86_64.rpm
├── tasks
│?? └── main.yml
├── templates
│?? └── zabbix-agentd.conf
└── vars
└── main.yml

[root@zabbix ansible]# vim /etc/ansible/hosts ##添加agent的IP地址
[Zabbix-Agent]
172.16.1.8
10.20.0.3
10.20.0.4
10.20.0.5
# 192.168.1.25 ansible_ssh_user=root ansible_ssh_pass=openstack

[root@zabbix ]# ansible Zabbix-Agent -a 'cat /etc/redhat-release' --ask-pass ##測試的第一步,也可以不加ask-pass,像上面的配置那樣,手動加密碼
[root@zabbix ]# cd /etc/ansible && vim install_zabbix_agent.yml
- hosts: Zabbix-Agent
roles:
- install_zabbix_agent
[root@zabbix ansible]# vim ansible.cfg
host_key_checking = False ##取消注釋,否則會報錯

[root@zabbix ]# mkdir -p /etc/ansible/roles/install_zabbix_agent/{files,tasks,templates,vars}
[root@zabbix files]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-agent-3.2.4-2.el7.x86_64.rpm ##放置files目錄下
[root@zabbix files]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-sender-3.2.4-1.el7.x86_64.rpm


[root@zabbix tasks]# cat main.yml ##如果對方已經安裝過了zabbix-agent,是會報錯的,需要進行判斷
==============================================
- name: scp zabbix agent rpm
copy:
src=zabbix-agent-3.2.4-2.el7.x86_64.rpm dest=/tmp
- name: scp zabbix sender rpm ##經測試,一次不能傳輸多個文件
copy:
src=zabbix-sender-3.2.4-1.el7.x86_64.rpm dest=/tmp

- name: install software
shell: cd /tmp && rpm -ivh zabbix-* ##不知道為什么不能用command模塊,應該是"/"這個符號的影響

- name: change zabbix agent conf
template: src={{ item }} dest=/etc/zabbix/zabbix_agentd.conf
with_items:
- zabbix_agentd.conf

- name: start zabbix service
service: name=zabbix-agent state=started enabled=yes
=============================================================


[root@zabbix templates]# cat zabbix-agentd.conf !!這一步還是不要這么做,在zabbix server上拷貝一份完整的zabbix agent為好
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server={{ ZabbixServerIP }}
ServerActive={{ ZabbixServerIP }} ##變量名不能有”-“符號,例如Zabbix-Server-IP的形式
Hostname=Zabbix-Agent ##我暫時沒想到如何收集不同客戶端的信息,然后發過去,這個Hostname跟web界面不一樣的話,會出現問題
Include=/etc/zabbix/zabbix_agentd.d/*.conf

[root@agent vars]# ansible Zabbix-Agent -m setup ##收集變量信息
[root@zabbix ansible]# cat roles/install_zabbix_agent/vars/main.yml
ZabbixServerIP: 192.168.1.63


五、playbook任務執行。
[root@zabbix ansible]# cd /etc/ansible
[root@zabbix ansible]# ansible-playbook install_zabbix_agent.yml --limit=Zabbix-Agent --ask-pass

剩下的就是zabbix web配置了!

 

六、zabbix配置的過程中出現的錯誤。
1、Zabbix agent on agent-172.16.1.8 is unreachable for 5 minutes
分析:[root@zabbix ~]# zabbix_get -s 172.16.1.8 -p 10050 -k agent.ping
zabbix_get [20097]: Get value error: cannot connect to [[172.16.1.8]:10050]: [113] No route to host
單獨手工命令去Ping 172.16.1.8是通的,但是用zabbix檢測就不行。
[root@zabbix ~]# zabbix_get -s 10.20.0.3 -p 10050 -k agent.ping 於是再使用zabbix get另一台agent,同樣報錯,說明是server端問題了。
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -p 10050 -k agent.ping ##zabbix_get自己可以成功
1
[root@compute2 ~]# tail /var/log/zabbix/zabbix_agentd.log
1354:20170419:161933.716 active check configuration update from [192.168.1.63:10051] started to fail (cannot connect to [[192.168.1.63]:10051]: [4] Interrupted system call)
解決:防火牆問題,這個問題實在又忘了!
[root@controller1 ~]# iptables -I INPUT -p tcp -m tcp --dport 10050 -m comment --comment "zabbix_agentd listen " -j ACCEPT
[root@controller1 ~]# yum install iptables-services
[root@controller1 ~]# service iptables save


2、[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k agent.ping ##這是雲主機才出現的問題,其他服務器正常
zabbix_get [21468]: Check access restrictions in Zabbix agent configuration
[root@vm2 ~]# tail /var/log/zabbix/zabbix_agentd.log
686:20170419:180136.315 failed to accept an incoming connection: connection from "172.16.1.6" rejected, allowed hosts: "192.168.1.63"
解決:# vim /etc/zabbix/zabbix_agentd.conf
把Server=浮動IP改為zabbix server的虛擬網絡的私有IP地址,同時改動的還有ServerActive,這個問題可害苦我了,明明都是能通的


3、no active checks on server [192.168.3.108:10051]: host [192.168.3.108] not found
解決:zabbix agent.conf配置文件的Hostname要與Zabbix web界面的主機名要相同,否則客戶端無法進行主動報告數據。


ansible模塊知識:http://www.itshuji.com/technical-article/1818.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM