zabbix環境搭建部署(一)
一、zabbix介紹
zabbix官網:https://www.zabbix.com/
zabbix下載頁面:https://www.zabbix.com/download
zabbix rpm包下載頁面:http://repo.zabbix.com/zabbix/
1.1 zabbix簡介
zabbix是一個基於WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix能監視各種網絡參數,保證服務器系統的安全運行;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
zabbix由2部分構成,zabbix server與可選組件zabbix agent。
zabbix server可以通過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它可以運行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
說的直白一點,就是zabbix大家都很熟悉了,也是現在用的比較流行的一款分布式監控系統,當然現在Open-Falcon(小米監控)現在使用的人也越來越多了。
1.2 zabbix的組件
zabbix由以下幾個組件部分構成:
Zabbix Server:負責接收agent發送的報告信息的核心組件,所有配置,統計數據及操作數據均由其組織進行。
Database Storage:專用於存儲所有配置信息,以及由zabbix收集的數據。
Web interface:zabbix的GUI接口,通常與Server運行在同一台主機上。
Proxy:可選組件,常用於分布監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端(實現分布式監控專用組件非必要組件,被監控服務器過多或者跨機房可以使用此組件。)
Agent:部署在被監控主機上,負責收集本地數據並發往Server端或Proxy端。
注:zabbix node也是 zabbix server的一種 。不過現在已經基本棄用了。
1.3 zabbix監控環境中相關術語
主機(host):要監控的網絡設備,可由IP或DNS名稱指定
主機組(host group):主機的邏輯容器,可以包含主機和模板,但同一個組織內的主機和模板不能互相鏈接;主機組通常在給用戶或用戶組指派監控權限時使用
監控項(item):一個特定監控指標的相關的數據;這些數據來自於被監控對象;item是zabbix進行數據收集的核心,相對某個監控對象,每個item都由”key”標識
觸發器(trigger):一個表達式,用於評估某監控對象的特定item內接收到的數據是否在合理范圍內,也就是閾值;接收的數據量大於閾值時,觸發器狀態將從”OK”轉變為”Problem”,當數據再次恢復到合理范圍,又轉變為”OK”
事件(event):觸發一個值得關注的事情,比如觸發器狀態轉變,新的agent或重新上線的agent的自動注冊等
動作(action):指對於特定事件事先定義的處理方法,如發送通知,何時執行操作
報警升級(escalation):發送警報或者執行遠程命令的自定義方案,如每隔5分鍾發送一次警報,共發送5次等
媒介(media):發送通知的手段或者通道,如Email、Jabber或者SMS等
通知(notification):通過選定的媒介向用戶發送的有關某事件的信息
遠程命令(remote command):預定義的命令,可在被監控主機處於某特定條件下時自動執行
模板(template):用於快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接鏈接至某個主機
應用(application):一組item的集合
web場景(web scennario):用於檢測web站點可用性的一個或多個HTTP請求
前端(frontend):Zabbix的web接口
二、zabbix的安裝
2.1 服務端的安裝(Centos6)
(1). yum安裝必要環境
# yum install httpd php http-devel php-devel php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel java-devel -y
# yum install -y libssh2-devel
# yum install -y openldap openldap-devel
注(有兩個yum單獨列出來了,是因為我們的編譯參數比較多,不yum上面兩行的話會報錯):
如果報錯:configure: error: SSH2 library not found
就yum install -y libssh2-devel 如果報錯:configure: error: Invalid LDAP directory - unable to find ldap.h 就:yum install openldap openldap-devel
(2). 配置php環境
sed -i “s/;date.timezone =/date.timezone = Asia\/Shanghai/g” /etc/php.ini
sed -i “s#max_execution_time = 30#max_execution_time = 300#g” /etc/php.ini
sed -i “s#post_max_size = 8M#post_max_size = 32M#g” /etc/php.ini
sed -i “s#max_input_time = 60#max_input_time = 300#g” /etc/php.ini
sed -i “s#memory_limit = 128M#memory_limit = 128M#g” /etc/php.ini
sed -i “s/;mbstring.func_overload = 0/mbstring.func_overload = 0\n/” /etc/php.ini
(3). 安裝zabbix服務端
# wget prdownloads.sourceforge.net/zabbix/zabbix-2.4.8.tar.gz
# groupadd zabbix -g 201
# useradd -g zabbix -u 201 -m zabbix
# tar zxf zabbix-2.4.8.tar.gz
# cd zabbix-2.4.8
# ./configure –prefix=/usr/local/zabbix-2.4.8 –sysconfdir=/etc/zabbix –enable-server –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
# make && make install #其實make install就可以了
# ln -s /usr/local/zabbix-2.4.8 /usr/local/zabbix
(4).添加zabbix到系統服務文件
# cat /etc/services |grep zabbix #可以看一眼,沒有就加上,默認已經加上了
zabbix-agent 10050/tcp # Zabbix Agent zabbix-agent 10050/udp # Zabbix Agent zabbix-trapper 10051/tcp # Zabbix Trapper zabbix-trapper 10051/udp # Zabbix Trapper
(5).mysql的配置
# vi /etc/my.cnf #配置一下mysql配置文件,讓其使用utf-8,並且對innodb做些設置,因為主要是寫功能
[client] port=3306 socket=/var/lib/mysql/mysql.sock [mysqld] port=3306 socket=/var/lib/mysql/mysql.sock default-storage-engine=innodb default-table-type=innodb ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so plugin_dir=/usr/local//mysql/lib/plugin/ datadir=/mysqldata skip-external-locking character-set-server = utf8 collation-server=utf8_general_ci #logs slow_query_log slow_query_log_file =/var/log/mysql/slowquery.log long_query_time=2 log_error=/var/log/mysql/mysql-error.log #limits skip-name-resolve max_connections=5000 back_log=300 table-cache=4096 max_allowed_packet =32M max_heap_table_size =128M key_buffer_size=128M sort-buffer-size=16M join-buffer-size=16M net_buffer_length=8K read_buffer_size=256K read_rnd_buffer_size=256K myisam_sort_buffer_size=8M thread-cache-size=16 thread-concurrency=24 query-cache-size=2048M query-cache-limit=4M tmp_table_size=256M log_warnings #innodb innodb_file_per_table=1 innodb_file_io_threads=4 innodb_open_files=2048 innodb_buffer_pool_size=5G innodb_additional_mem_pool_size=128M innodb_thread_concurrency=16 innodb_max_dirty_pages_pct=90 user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqldump] quick max_allowed_packet=16M [myisamchk] key_buffer_size=20M sort_buffer_size=20M read_buffer=2M write_buffer=2M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
# mkdir /mysqldata
# chown mysql:mysql /mysqldata/
# /etc/init.d/mysqld restart
(6). 導入zabbix數據庫
# mysqladmin -uroot password ’123456′ #mysql初始是沒有密碼的,我們這里就設置個簡單密碼吧,實際生產密碼很復雜
# mysql -uroot -p123456 -e ‘create database zabbix character set utf8;’
# mysql -uroot -p123456 -e “grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;”
# mysql -uroot -p123456 -e “flush privileges;”
# mysql -uzabbix -pzabbix zabbix </root/zabbix-2.4.8/database/mysql/schema.sql #這個sql文件的導入順序不能變,不然要報錯
# mysql -uzabbix -pzabbix zabbix </root/zabbix-2.4.8/database/mysql/images.sql
# mysql -uzabbix -pzabbix zabbix </root/zabbix-2.4.8/database/mysql/data.sql
(7).拷貝啟動腳本並配置
# cp /root/zabbix-2.4.8/misc/init.d/fedora/core/zabbix_* /etc/init.d/
# sed -i “s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#” /etc/init.d/zabbix_server
# sed -i “s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#” /etc/init.d/zabbix_agentd
(8).zabbix主配置文件修改
# cat /etc/zabbix/zabbix_server.conf|grep -v “^#”|grep -v “^$” #簡單配置一下,主要是配置連接數據庫的賬號和密碼
LogFile=/var/zabbix/zabbix_server.log DBName=zabbix DBUser=zabbix DBPassword=zabbix ListenIP=127.0.0.1
# mkdir /var/zabbix
# chown zabbix:zabbix /var/zabbix/
(9).拷貝網頁文件到web站點目錄下
# cp -r /root/zabbix-2.4.8/frontends/php /var/www/html/zabbix
# chown apache:apache /var/www/html/zabbix/conf #此目錄下,程序要創建一個php,當然不授權的話,等到安裝到哪部,下載下php文件也可以。
(10).通過web頁面配置zabbix
http://192.168.1.102/zabbix #訪問url格式是IP/zabbix的格式
#然后就按照提示下一步,該填寫什么就填寫什么了,這個web引導的安裝界面比較簡單。

#成功后安裝,再次訪問上面的url,就是登錄頁面了,默認的賬號是admin,密碼是zabbix。
2.2 服務端的安裝(Centos7)
現在線上用Centos7系統的越來越多,zabbix的版本也變為了3系列,雖然我線上的是zabbix是2.4系列的,但是用新版本的是一個趨勢,后面的操作都是以新版本為例。
(1). yum安裝必要環境
# yum install httpd php php-devel php-pear php-xmlrpc php-bcmath mariadb mariadb-server mariadb-devel httpd-manual mod_ssl php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel java-devel -y #這里主要區別是由mysql改成了mariadb。
# yum install -y libssh2-devel
# yum install -y openldap openldap-devel
(2). 配置php環境
sed -i “s/;date.timezone =/date.timezone = Asia\/Shanghai/g” /etc/php.ini
sed -i “s#max_execution_time = 30#max_execution_time = 300#g” /etc/php.ini
sed -i “s#post_max_size = 8M#post_max_size = 32M#g” /etc/php.ini
sed -i “s#max_input_time = 60#max_input_time = 300#g” /etc/php.ini
sed -i “s#memory_limit = 128M#memory_limit = 128M#g” /etc/php.ini
sed -i “s/;mbstring.func_overload = 0/mbstring.func_overload = 0\n/” /etc/php.ini
(3). 安裝zabbix服務端
# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz
# groupadd zabbix -g 201
# useradd -g zabbix -u 201 -m zabbix
# tar zxf zabbix-3.2.6.tar.gz
#cd zabbix-3.2.6
# ./configure –prefix=/usr/local/zabbix-3.2.6 –sysconfdir=/etc/zabbix –enable-server –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
# make install
# ln -s /usr/local/zabbix-3.2.6 /usr/local/zabbix
注:要支持vmware的監控zabbix在編譯時必須 configure 里有 –with-libxml2 –with-libcurl,前者用來解析調用SOAP接口返回的XML,后者用來調用vcenter的SOAP接口。
下面讓我們了解下./configure后面跟的參數的含義:
# ./configure –help
可選功能:
--enable-static #構建靜態鏈接的二進制文件 --enable-server #打開Zabbix服務器的構建 --enable-proxy #打開Zabbix代理的構建 --enable-agent #打開Zabbix代理和客戶端實用程序的構建 --enable-java #打開Zabbix支持監控java,zabbix 監控jmx 需要--enable-java --enable-ipv6 #打開zabbix對ipv6的支持 可選包: --with-mysql[=ARG] #使用MySQL客戶端庫[default = no],可選指定mysql_config的路徑 --with-jabber[=DIR] #包括Jabber支持[default = no]。 DIR是iksemel庫安裝目錄。如果要使用Jabber協議進行消息傳遞. --with-libxml2[=ARG] #使用libxml2客戶端庫[default = no],可選地指定xml2-config的路徑.如果要使用XML庫 --with-unixodbc[=ARG] #使用ODBC驅動程序對unixODBC包[default = no],可選地指定odbc_config二進制的完整路徑。如果要使用unixODBC庫 --with-net-snmp[=ARG] #使用Net-SNMP包[default = no],可選地指定net-snmp-config的路徑.如果要使用Net-SNMP庫 --with-ssh2[=DIR] #使用SSH2包[default = no],DIR是SSH2庫的安裝目錄。如果要使用基於SSH2的檢查 --with-openipmi[=DIR] #包括OPENIPMI支持[default = no]。 DIR是OPENIPMI基本安裝目錄,默認是通過OPENIPMI文件的一些常見位置進行搜索。如果要檢查IPMI設備 --with-mbedtls[=DIR] #使用mbed TLS(PolarSSL)軟件包[default = no],DIR是libpolarssl安裝目錄。如果要使用由mbed TLS(PolarSSL)庫提供的加密 --with-gnutls[=DIR] #使用GnuTLS包[default = no],DIR是libgnutls的安裝目錄。如果要使用GnuTLS庫提供的加密 --with-openssl[=DIR] #使用OpenSSL包[default = no],DIR是libssl和libcrypto的安裝目錄。如果要使用OpenSSL庫提供的加密 --with-ldap[=DIR] #包括LDAP支持[default = no]。DIR是LDAP基本安裝目錄,默認是通過LDAP文件的多個常見位置進行搜索。如果要檢查LDAP服務器. --with-libcurl[=DIR] #使用cURL包[default = no],可選地指定curl-config的路徑.如果要使用cURL庫 如果要指定iconv安裝目錄: --with-iconv=[DIR] #使用iconv從給定的基本安裝目錄(DIR),默認是通過一些常見的地方搜索iconv文件。 --with-iconv-include=[DIR] #使用iconv包含給定路徑的頭。 --with-iconv-lib=[DIR] #從給定的路徑使用iconv庫。
(4). 導入zabbix數據庫
# systemctl start mariadb.service
# mysqladmin -uroot password ’123456′
# mysql -uroot -p123456 -e ‘create database zabbix character set utf8;’
# mysql -uroot -p123456 -e “grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;”
# mysql -uroot -p123456 -e “flush privileges;”
# mysql -uzabbix -pzabbix zabbix </root/zabbix-3.2.6/database/mysql/schema.sql
# mysql -uzabbix -pzabbix zabbix </root/zabbix-3.2.6/database/mysql/images.sql
# mysql -uzabbix -pzabbix zabbix </root/zabbix-3.2.6/database/mysql/data.sql
(5).拷貝啟動腳本並配置
# cp /root/zabbix-3.2.6/misc/init.d/fedora/core/zabbix_* /etc/init.d/
# sed -i “s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#” /etc/init.d/zabbix_server
# sed -i “s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#” /etc/init.d/zabbix_agentd
(6).zabbix主配置文件修改
# cat /etc/zabbix/zabbix_server.conf|grep -v “^#”|grep -v “^$” #簡單配置一下,主要是配置連接數據庫的賬號和密碼
LogFile=/var/zabbix/zabbix_server.log DBName=zabbix DBUser=zabbix DBPassword=zabbix ListenIP=127.0.0.1
# mkdir /var/zabbix
# chown zabbix:zabbix /var/zabbix/
(7).拷貝網頁文件到web站點目錄下
# cp -r /root/zabbix-3.2.6/frontends/php /var/www/html/zabbix
# chown apache:apache /var/www/html/zabbix/conf #此目錄下,程序要創建一個php,當然不授權的話,等到安裝到哪部,下載下php文件也可以。
(8).通過web頁面配置zabbix
http://192.168.1.103/zabbix #訪問url格式是IP/zabbix的格式






#然后就跳到登錄界面了,用戶名是admin,密碼是zabbix
2.3 server web展示如何顯示中文

#點擊右上角的小人圖標

# /etc/init.d/zabbix_server start #啟動zabbix_server服務
# /etc/init.d/zabbix_agentd start #本機的agent也啟動起來,為了出圖查看效果。

#從首頁看都已經變成了中文。
#但是存在一個問題請看下圖:

#由上圖可以看出,所有的漢字都是白框沒有顯示出來。
解決辦法:
進入到本地windos目錄下:C:\Windows\Fonts(以微軟雅黑msyh.ttf為例)。
將windows端的msyh.ttf文件上傳到服務器端的/var/www/html/zabbix/fonts目錄中。
#ls -l /var/www/html/zabbix/fonts/msyh.ttf #查看一下,確實存在了
-rw-r--r-- 1 root root 21767952 6月 11 2009 /var/www/html/zabbix/fonts/msyh.ttf
# vim /var/www/html/zabbix/include/defines.inc.php +45
define(‘ZBX_GRAPH_FONT_NAME’, ‘DejaVuSans’); 替換為:define(‘ZBX_GRAPH_FONT_NAME’, ‘msyh’); #就是DejaVuSans替換為msyh

#再次刷新web頁面,在數據圖上面的中文字體也就都顯示出來了。
2.4 zabbix客戶端的安裝
# wget prdownloads.sourceforge.net/zabbix/zabbix-3.2.6.tar.gz
# groupadd zabbix -g 201
# useradd -g zabbix -u 201 -m zabbix
# tar zxf zabbix-3.2.6.tar.gz
# cd zabbix-3.2.6
# ./configure –prefix=/usr/local/zabbix-3.2.6 –sysconfdir=/etc/zabbix –enable-agent
# make install
# ln -s /usr/local/zabbix-3.2.6 /usr/local/zabbix
# cp /root/zabbix-3.2.6/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# sed -i “s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#” /etc/init.d/zabbix_agentd
# vim /etc/zabbix/zabbix_agentd.conf #就先修改一個地方,讓Server端指向zabbix_server的IP地址
Server=192.168.1.103
# /etc/init.d/zabbix_agentd restart
2.5 zabbix服務器端添加剛剛添加的zabbix客戶端主機
首先創建一個主機組
配置==》主機群組==》創建主機群組(web頁面右上角)==》添加組名,如:Zabbix agents(在彈出框中輸入組名)==>添加
添加一個主機
配置==》主機==》右上角在群組那里選擇Zabbix agents==》點擊創建主機 #如下圖

下面是主機的添加過程:

給此主機引用一條模板:
在上面那張圖片中可以看到主機的右邊有個模板,點擊模板,鏈接指示器那一欄點擊選擇按鈕,然后選擇你要添加的模板,點擊添加,然后返回到模板界面之后,再點擊下面的添加按鈕,然后點擊更新。

下面是添加完的效果圖:

最后看下圖形效果:
檢測中==》圖形==》然后就是選擇要看什么了,如下圖:

到此一個簡單的zabbix服務端監控一個客戶端的操作就算結束了。
有一個小問題:
Too many processes on Zabbix server
Too many processes on 192.168.1.104

配置==》模板==》Template OS Linux ==》觸發器 ==>Too many processes on {HOST.NAME}(點擊)==》表達式改為:{Template OS Linux:proc.num[].avg(5m)}>1000==>更新
#因為原來觸發器里面的進程數太少了,zabbix本身就會啟動二三十個左右的進程,所以很容易就超了,把進程監控調大一點。

轉載請注明:靠譜運維 » zabbix環境搭建部署(一)
