前文咱們瞭解了zabbix 使用snmp和jmx信道採集數據的相關使用配置,回顧請參考http://www.javashuo.com/article/p-qcajurev-nx.html;今天咱們來講zabbix proxy;html
一、zabbix proxy是什麼?爲何要使用zabbix proxy?node
簡單講zabbix proxy就是zabbix server的代理服務,它能幫助zabbix server採集數據,而後再統一的發送給zabbix server ;它的功能和zabbix server 很相似,zabbix server 能作到它幾乎都能作;主要做用就是代理zabbix server ;咱們知道監控一個主機或者服務,一般監控項有不少,每一個監控項的數據採集工做都會消耗zabbix server 一個socket;這樣一來監控一個主機少則十幾個socket鏈接,多則幾十個上百個;咱們試想一個場景,咱們要監控一個集羣,這個集羣有100臺物理主機,每一個物理主機都要監控cpu,內存,磁盤等等,一臺服務器平均監控項爲20個,那麼100臺服務器就要2000個socket鏈接;這意味着zabbix server要有2000個socket鏈接須要維持;這樣一來無疑對zabbix server性能有很大的影響;爲了下降zabbix server鏈接socket數量過大而帶來的性能消耗,此時zabbix server就應該委託其餘主機來代理收集數據;這個代理就是zabbix proxy;除了以上場景,好比跨機房的場景咱們也須要用zabbix proxy,每一個zabbix proxy只負責採集本地同一機房裏的主機的數據,而後統一發送給zabbix server;這樣一來能夠減小zabbix server的socket鏈接數量,從而下降zabbix server的壓力;mysql
二、zabbix proxy內部組件web
zabbix proxy主要由zabbix proxy和數據庫組成;它這個數據庫不是永久存儲採集數據的,它能夠將採集的數據臨時存放在數據庫中,當它把對應的數據發送給zabbix server之後,本地臨時存儲的數據就會清除;除了緩存採集的數據意外,它還能夠用來存儲在zabbix server上拉取的監控配置信息;sql
三、zabbix proxy 部署數據庫
準備yum倉庫文件緩存
[root@node03 ~]# scp /etc/yum.repos.d/zabbix.repo node06:/etc/yum.repos.d/ zabbix.repo 100% 242 164.4KB/s 00:00 [root@node03 ~]# scp /etc/yum.repos.d/mariadb.repo node06:/etc/yum.repos.d/ mariadb.repo 100% 129 116.6KB/s 00:00 [root@node03 ~]#
安裝MariaDB-serverbash
[root@node06 ~]# yum install -y MariaDB-server
配置數據庫服務器
[root@node06 ~]# cat /etc/my.cnf.d/zabbix_proxy.cnf [mysqld] bind-address = 0.0.0.0 default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8 skip_name_resolve [root@node06 ~]#
啓動mariadbapp
[root@node06 ~]# /etc/init.d/mysql start Starting MariaDB.201125 22:12:03 mysqld_safe Logging to '/var/lib/mysql/node06.test.org.err'. 201125 22:12:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql SUCCESS! [root@node06 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:3306 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* [root@node06 ~]#
設置root密碼
[root@node06 ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! [root
建立數據庫和用戶受權
[root@node06 ~]# mysql -uroot -padmin123.com Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.0.38-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all privileges on zabbix.* to zabbix_proxy@'192.168.%.%' identified by 'admin123.com'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]>
安裝zabbix proxy
[root@node06 ~]# yum install -y zabbix-proxy-mysql
查看zabbix proxy 安裝的文件
[root@node06 ~]# rpm -ql zabbix-proxy-mysql /etc/logrotate.d/zabbix-proxy /etc/zabbix/zabbix_proxy.conf /usr/lib/systemd/system/zabbix-proxy.service /usr/lib/tmpfiles.d/zabbix-proxy.conf /usr/lib/zabbix/externalscripts /usr/sbin/zabbix_proxy_mysql /usr/share/doc/zabbix-proxy-mysql-4.0.26 /usr/share/doc/zabbix-proxy-mysql-4.0.26/AUTHORS /usr/share/doc/zabbix-proxy-mysql-4.0.26/COPYING /usr/share/doc/zabbix-proxy-mysql-4.0.26/ChangeLog /usr/share/doc/zabbix-proxy-mysql-4.0.26/NEWS /usr/share/doc/zabbix-proxy-mysql-4.0.26/README /usr/share/doc/zabbix-proxy-mysql-4.0.26/schema.sql.gz /usr/share/man/man8/zabbix_proxy.8.gz /var/log/zabbix /var/run/zabbix [root@node06 ~]#
導入表
[root@node06 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.26/schema.sql.gz |mysql -uzabbix_proxy -padmin123.com -h192.168.0.46 zabbix [root@node06 ~]#
驗證:查看對應數據庫是否有表生成?
[root@node06 ~]# mysql -uzabbix_proxy -padmin123.com -h192.168.0.46 zabbix -e 'show tables;' |wc -l 145 [root@node06 ~]#
提示:可以統計到對應表的數量,說明咱們導入表的操做沒有問題;
配置zabbix proxy
[root@node06 ~]# grep -Ei "^[a-z]" /etc/zabbix/zabbix_proxy.conf ProxyMode=0 Server=192.168.0.43 ServerPort=10051 HostnameItem=system.hostname ListenPort=10051 LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=0 DebugLevel=3 PidFile=/var/run/zabbix/zabbix_proxy.pid SocketDir=/var/run/zabbix DBHost=192.168.0.46 DBName=zabbix DBUser=zabbix_proxy DBPassword=admin123.com HeartbeatFrequency=60 ConfigFrequency=60 DataSenderFrequency=1 StartPollers=5 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 [root@node06 ~]#
提示:主要配置zabbix server的地址以及zabbix proxy的hostname和數據庫相關的幾個選項以及後面的心跳頻率和配置文件更新頻率以及數據發送頻率;其餘保持默認便可;這裏須要提醒下,默認狀況zabbix proxy 工做爲主動模式,所謂主動模式是指zabbix proxy主動到zabbix server上獲取監控配置和推送採集的數據;若是須要配置爲被動,這須要將ProxyMode更改成1便可;Server是配置zabbix server的地址,意思是告訴proxy到到哪裏獲取配置以及將採集的數據推送到哪裏;後面的HeartbeatFrequency是用來指定多長時間發送一次心跳信息給zabbix server,默認是60秒;ConfigFrequency是用來指定更新監控配置信息的頻率,意思是多久去zabbix server 上同步一下監控配置;默認是3600;這個能夠根據實際狀況更改;DataSenderFrequency是用於指定多長時間發一次數據給zabbix server,默認爲1秒;
啓動zabbix proxy
[root@node06 ~]# systemctl start zabbix-proxy.service [root@node06 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10051 *:* LISTEN 0 128 *:3306 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::10051 :::* [root@node06 ~]#
提示:zabbix proxy 默認監聽在10051,啓動後請確保該端口正常監聽;
安裝zabbix agent用於監控zabbix proxy自身
[root@node06 ~]# yum install -y zabbix-agent
配置zabbix agent
[root@node06 ~]# grep -Ei "^[a-z]" /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.0.46 ListenPort=10050 ListenIP=0.0.0.0 ServerActive=192.168.0.46 HostnameItem=system.hostname Include=/etc/zabbix/zabbix_agentd.d/*.conf [root@node06 ~]#
提示:這裏的配置和咱們前邊配置zabbix agent幾乎同樣,不一樣的是咱們須要將Server指向zabbix proxy的地址和端口;若是其餘agent須要用到proxy來代理,須要配置運行proxy來採集數據;這個Server的值能夠是多個,分別用逗號隔開便可;一樣ServerActive也應該指向zabbix proxy的地址;
啓動zabbix agent
[root@node06 ~]# systemctl start zabbix-agent.service [root@node06 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 *:10051 *:* LISTEN 0 128 *:3306 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::10051 :::* [root@node06 ~]#
在zabbix web界面配置添加zabbix proxy
提示:在administration--->proxIes---->create proxy點擊進入新建proxy的頁面;
提示:這裏的proxy name必須和本地運行zabbix proxy服務主機名稱相同;填寫好proxy name之後點擊添加便可;
添加主機,使用咱們剛纔添加到proxy來代理採集數據
提示:添加主機必定要選擇對應要使用的zabbix proxy;
連接模板
提示:選擇好模板之後,最後點擊add將主機添加到主機列表;
提示:能夠看到如今添加到主機,前邊都有對應proxy的名稱;過一會咱們就能夠看到proxy將模板上的監控數據採集後,發送給zabbix server,此時就能夠看到對應的主機上的監控數據;
驗證:查看對應主機是否有監控數據?
提示:能夠看到node06連接的模板監控項也陸續有數據,說明proxy採集到數據已經發送給zabbix server ;
查看zabbix proxy狀態
提示:能夠看到如今node06.test.org這個proxy有一個host,34個item,vps爲0.39;若是其餘主機須要用該proxy代理採集數據,咱們須要將對應的agent配置容許該proxy來採集數據;
到此,zabbix proxy的安裝,測試就完成了;