Zabbix-proxy的搭建和配置全過程


Zabbix-proxy的用途和構建圖

Zabbix-server是建立在金山雲的,現在需要監控阿里雲的redis,但是阿里雲跟金山雲之間通信是無法走內網的,如果直接讓zabbix-server與redis直接聯繫,一旦公網的信息被截獲的話,整個金山區的zabbix可能都會遭殃,那麼既然有這種“遠程監控+當監控的位置通信不便”的需求,就搭建一個zabbix-proxy來解決問題。


Zabbix-proxy是一個監控代理服務器,它收集監控到的數據,先存放在緩衝區,保存的時間可以通過配置文件設定,然後再傳送到zabbix-server,這樣也大大減緩了zabbix-server的壓力,注意!監控代理需要一個單獨的數據庫,因爲它的數據庫表名與zabbix-server的數據庫表名是一樣的,如果不單獨分開,後果就是數據錯亂。


有人看到這裏可能問了,說來說去你的zabbix-proxy跟阿里的redis依舊是走公網的啊!雖然這樣也是走公網,我現在只需要配置一個防火牆規則來讓他倆保證通信即可,通過防火牆來提升安全係數。架構如圖:


1.png


安裝Mysql 5.5

Zabbix-proxy機器情況:金山雲centos 6.5,安裝zabbix版本:3.0.8

[root@js-online-cjhmq-002 opt]yum list installed | grep mysql    #列出已經安裝過的mysql情況
[root@js-online-cjhmq-002 opt]yum -y remove mysql-libs.x86_64      #把之前的mysql連根拔起
[root@js-online-cjhmq-002 opt]# rpm -ivh http://repo.mysql.com/yum/mysql-5.5-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm
Retrieving http://repo.mysql.com/yum/mysql-5.5-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm
Preparing...                ########################################### [100%]
   1:mysql-community-release########################################### [100%]
[root@js-online-cjhmq-002 opt]groupadd zabbix                       #新建用戶組zabbix
[root@js-online-cjhmq-002 opt]useradd -g zabbix -u 808 -m zabbix
#-g:指定用戶所屬的羣組;
#-u:指定用戶id。
#-m:自動建立用戶的登入目錄;


現在要修改一下 /etc/yum.repos.d/mysql-community.repo 這個文件,將5.5的enabled改爲1,5.6的enabled改爲0:

# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/6/$basearch/
enabled=1    #這裏改成1
gpgcheck=1

gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=0    #這裏改成0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql


然後執行#yum install mysql-community-client mysql-community-devel mysql-community-server php-mysql , 安裝服務端和客戶端,安裝完畢之後可以#mysql -h127.0.0.1 看一下。

1.png


安裝完畢之後,修改一下/etc/my.cnf,如圖:

innodb_buffer_pool_size = 512M        #這個根據服務器性能填寫,這個機器是2核2G的,所以我拿出半個G給mysql
innodb_file_per_table=1               #這個是新增的字段,設置InnoDB爲獨立表空間模式,每個數據庫的每個表都會生成一個數據目錄


mysql安裝完畢之後,我們還要導表進去,如圖:

service mysqld start
mysqladmin -uroot password '123456'
mysql -uroot -p123456 -e 'create database zabbix_proxy character set utf8;'
mysql -uroot -p123456 -e "grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';"
mysql -uroot -p123456 -e "flush privileges;"
mysql -uzabbix -pzabbix zabbix_proxy </解壓路徑/zabbix-3.0.8/database/mysql/schema.sql

至此,mysql部分已經全部搞定。


安裝Zabbix-proxy

先去https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.8/ 下載zabbix-3.0.8.tar.gz,上傳到proxy服務器裏。

tar -zxvf zabbix-3.0.8.tar.gz
./configure --prefix=/usr/local/zabbix-3.0.8  --sysconfdir=/etc/zabbix  --enable-proxy  --enable-agent  --enable-ipv6  --with-mysql=/usr/bin/mysql_config  --with-net-snmp  --with-libcurl  --with-openipmi  --with-unixodbc  --with-ldap  --with-ssh2  --enable-java


如果出現了“configure: error: Invalid LDAP directory - unable to find ldap.h”,如圖:

image.png


解決方法就是:

yum -y install openldap*


Zabbix-proxy的配置

打開/etc/zabbix/zabbix_proxy.conf,需要修改幾個地方:

ProxyMode=0                                   #0是主動模式,1是被動模式
Server=A.B.C.D                #這裏填寫zabbix-server的內網IP
Hostname=J.Q.K.A              #這裏要與/etc/hosts下的名字一模一樣
LogFile=/tmp/zabbix_proxy.log
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
ConfigFrequency=120              #主動去server端去拉去配置更新的頻率120秒一次
DataSenderFrequency=60              #發送採集的監控數據到服務器端,默認是1秒,我們一分鐘發送一次
#ProxyLocalBuffer=0                #ProxyLocalBuffer表示數據傳遞給server之後還要在proxy裏保存多久(單位爲小時)。如果註釋就是代表不刪除。
#ProxyOfflineBuffer=1               #ProxyOfflineBuffer表示數據沒有傳遞給server的話還要在proxy裏保存多久(單位爲小時)。如果註釋就是代表不刪除。


然後就是啓動proxy: 

# /usr/local/zabbix_proxy/sbin/zabbix_proxy


用netstat查看一下端口和進程是否都OK:

image.png


Zabbix-server端的配置

登入zabbix-server的網頁,如圖添加proxy:

1.png


點擊“create proxy”之後,就對應填寫資料吧:

image.png


image.png


這裏對上面的幾個選項多說幾句:

Connections to proxy:服務器如何連接到被動代理:無加密(默認),使用PSK(預共享密鑰)或證書。
Connections from proxy:從活動代理中選擇允許的連接類型。 可以同時選擇幾種連接類型(用於測試和切換到其他連接類型)。 默認爲“無加密”。
#點擊Certificate之後又兩個參數:
Issuer:允許頒發證書。 證書首先通過CA(認證機構)驗證。 如果CA有效,則由CA簽名,則可以使用Issuer字段來進一步限制允許的CA。 該字段是可選的,如果您的Zabbix安裝使用多個CA的證書,則使用該字段。
Subject:允許的證書。 證書首先通過CA驗證。 如果它有效,由CA簽名,則主題字段可用於僅允許Subject字符串的一個值。 如果此字段爲空,則接受由配置的CA簽名的任何有效證書。
#點擊PSK之後又兩個參數:
PSK identity:預共享密鑰身份字符串。
PSK : 預共享密鑰(hex-string)。 如果Zabbix使用mbed TLS(PolarSSL)庫,Zabbix將使用GnuTLS或OpenSSL庫,64位十六進制(32字節PSK),最大長度爲512位十六進制數(256字節PSK)。 示例:1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952


保存之後,就在zabbix-server用zabbix-get 去ping一下proxy,看看返回值是否是1,如果是“zabbix_get [18290]: Check access restrictions in Zabbix agent configuration”,就檢查一下剛纔的hostname等值是否正確。

1.png


被監控機器的配置

在被監控的阿里雲redis裏安裝zabbix-agent,在agentd.conf裏把hostname寫成自己在/etc/hosts裏的hostname,Server地址和ServerActive的地址都要寫成proxy的外網IP地址。保存之後啓動agent進程,這個時候在proxy端是可以通過zabbix_get得到這臺被監控機器的值,如圖:

1.png


在Zabbix-Server的WEB界面裏,爲阿里雲的redis新建一個host,“Agent interface" 那裏填寫被監控的機器IP,端口是10050,“Monitored by proxy”的地方要寫成剛剛添加的proxy。如圖:

1.png


上面已經提到過,用proxy模式並且zabbix的客戶端也是主動模式提交數據,這樣能大大提高採集效率,降低zabbix服務器端和proxy端的壓力。現在我們希望添加的還是使用zabbix_agent的方式,新加到zabbix_proxy裏面的主機使用zabbix_agent(active)的方式。注意在模板的克隆要選擇“full clone”,不要選“clone”,那樣的話就僅僅是把iterm的名字克隆過去而已,如圖:

1.png


然後在items選擇具體的類型,根據需要,想改那個改哪個,如圖,注意!我圖裏寫的是Zabbix agent,但是type這裏選擇Zabbix agent (active)

image.png


改完之後,保存一下,就會看到type都是zabbix agent(active)了。

image.png


最後在host裏把這個機器添加到proxy的模板裏,如圖:

image.png


在Administration的Proxies也看到效果了,如果server與proxy沒有正確連接的話,last seen的地方會是“--”,如果連接的話就會顯示具體時間,如圖:image.png


返回到hosts裏,查看那個被監控的redis機器也成功被監控到了,"ZBX"已經變綠。如圖: 

1.png

因爲我們線上環境基本都是用的zabbix_proxy方式是active方式,然後客戶端也是active方式,既然都是active方式,那麼zabbix_agent的Hostname就很重要,打個比方如果再zabbix_server端把一個主機的Hostname改了,然後客戶端那邊也改了,服務端和客戶端的Hostname是統一的,但是proxy那裏還記錄的是舊Hostname,然後就會在proxy日誌裏面看到下面一條:

cannot send list of active checks to "proxy內網IP地址": host [virt_proxy內網IP地址] not found


proxy主動模式下,ConfigFrequency默認的是3600秒一小時,顯然有點大了,可以適當的調低一下,如10分鐘或者幾分鐘什麼的。然後出現問題多看看zabbix服務端和proxy的日誌,對症下藥。



參考資料:http://www.51niux.com/?id=156 

參考資料:http://www.cnblogs.com/wangxiaoqiangs/p/5336630.html 



最後的最後,如果您覺得本文對您升職加薪有幫助,那麼請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章