Zabbix安裝php
首先說明一下,本文主要參考了【http://www.linuxidc.com/Linux/2016-11/137030.htm】和【http://www.cnblogs.com/XYJK1002/p/5324293.html】兩篇文章。在二者的基礎上作了些小總結和小錯誤的修正(固然也可能不是錯誤,只是由於一些環境或其餘緣由而不一樣的操做而已)。html
一直想給測試環境也裝一套Zabbix用來監控,此次恰好爲了修復以前的SQL注入的漏洞,首先在本身的虛擬機上練一練手。使人高興的是,安裝過程比較順利,基本沒遇到什麼大麻煩,一個上午就已經所有完成開始使用了。下面來記錄一下安裝過程。前端
■ 安裝環境說明mysql
[root@localhost selinux]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015 [root@localhost selinux]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
【https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages】這是Zabbix的官方文檔,我大概看了一下仍是蠻全的。它還按照不一樣數據庫配置給出了不一樣的安裝說明。linux
聽說在CentOS早期版本上mysql是做爲一個自帶軟件安裝着的,在進入CentOS7以後就把mysql換成了mariaDB。爲了和老版本統一,此次安裝我仍然選擇了mysql來進行安裝。nginx
至於CentOS6版本上的Zabbix安裝,原本覺得大同小異的,沒想到今天試了一下發現幾乎就像是裝一個不一樣的軟件同樣。。(主要是yum源中基本上尚未支持CentOS6的zabbix相關包,因此只能經過源碼編譯)詳細的也不想說了,參考這篇文章:【http://www.cnblogs.com/zzzhfo/p/5820321.html】,Zabbix的源碼包從這裏下載:【https://www.zabbix.com/download_sources】web
* 後來嘗試了下源碼安裝,操做步驟寫在下面作參考。sql
■ 安裝各類zabbix主要包和依賴包數據庫
安裝過程當中注意root權限,若是不是root就要記得sudo。apache
經過yum來安裝軟件能夠自動化解決依賴的問題比較好用,可是默認源中彷佛不帶zabbix軟件包,因此須要首先添加帶有zabbix的源:
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
而後就能夠經過yum來安裝各類zabbix相關的包了。能夠肯定須要首先安裝的是zabbix-server-mysql和zabbix-web-mysql兩個包。
yum install -y zabbix-server-mysql zabbix-web-mysql
另外對比以前說過的兩篇參考文章和官方文檔,我又用rpm -qa | grep zabbix以後發現,主要還有zabbix-agent和zabbix-get兩個包沒有裝(不知道zabbix-sender起什麼做用沒有裝&不須要加監控代理因此zabbix-proxy沒有裝)。因而再yum一下這兩個包,所有安裝結束以後可能會要將近100M的空間。
在這個安裝過程當中,做爲依賴還會自動安裝一些其餘東西好比PHP什麼的。。
■ mysql的安裝與初始化
默認的源中已經沒有mysql了,要經過yum安裝mysql的話必須先添加mysql社區的源。能夠這麼作:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm
若是報沒有wget的錯能夠先yum下wget。而後就能夠
yum repolist enabled|grep mysql #查看可安裝的mysql版本,結果以下 mysql-connectors-community/x86_64 MySQL Connectors Community 39 mysql-tools-community/x86_64 MySQL Tools Community 49 mysql56-community/x86_64 MySQL 5.6 Community Server 344 #要裝的是第三個 yum install -y mysql-community-server
mysql服務器程序的安裝過程大概也要佔據幾十M的空間,考慮到依賴也要裝十來個包。
安裝完成mysql以後就能夠啓動mysql服務來進行數據庫的初始化。在CentOS7中啓動服務用的是systemctl,在6中仍是service:
systemctl enable mysqld #設置開機自動啓動mysql
systemctl start mysqld #當即啓動mysql
順利啓動以後可連入mysql進行數據庫初始化:
mysql -u root -p password: #會問你密碼,第一次登陸不用管直接回車便可 mysql> #進入mysql的命令行界面 ##建立zabbix數據庫和用戶,這裏能不能自由取名什麼的不清楚沒試過,有機會能夠嘗試一下 mysql>create database zabbix character set utf8 collate utf8_bin; mysql>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; #如須要在遠程也能經過工具用zabbix用戶連入數據庫,那麼能夠把to後面寫成'zabbix'@'%'
mysql>flush privileges; mysql>quit; #至此數據庫基本結構已經有了,接下來就是往裏面導入數據 zcat /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz |mysql -uzabbix -pzabbix -b zabbix #注意用的命令是zcat不是cat,而後-p後面密碼是根據上面mysql中創建的用戶的密碼來的。
這一步導入數據可能會花費較長時間,在導入數據完成以後能夠看一看zabbix數據庫中的表和結構,能夠看到已經具備了基本的zabbix數據庫表結構了。能夠經過dbvis等工具遠程連入數據庫查看錶結構。
■ 配置zabbix並啓動
有了數據庫以後,還須要將zabbix和數據庫聯繫起來。這一步就是須要修改zabbix的服務端配置。配置文件在/etc/zabbix/zabbix_server.conf(默認位置,若是安裝過程當中有個性化更改的話就須要找其餘地方了)在這個配置文件中能夠配置DBHost,DBName,DBUser,DBPassword等。按照上面的意思,配置的數據庫就是在本地的因此DBHost能夠直接寫localhost。若是是遠程的數據庫的話DBHost就能夠寫遠程數據庫的URL。配置完成後的zabbix_server.conf中有效的配置項以下:
[root@localhost zabbix]# egrep -v '(^.*#|^$)' zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000
*能夠注意一下的是zabbix_server.log這個日誌記錄了zabbix服務器的運行狀況,出了問題能夠來查。
alertscripts和externalscripts對應的是告警腳本和外部腳本監控方式。
若是順利的話到此爲止,全部zabbix相關的內容都已經配置完成了,就能夠啓動zabbix_server了:
systemctl enable zabbix-server
systemctl start zabbix-server
而後能夠去前端配置中修改一下時區(雖然不知道這麼作的意義是什麼。。),文件位於/etc/httpd/conf.d/zabbix.conf,其中有一行被註釋的#php_value date.timezone Europe/Rica,把註釋去掉而後把地區信息改爲Asia/Shanghai便可。
最後,啓動apache服務來打通服務器到前端用戶的最後一道屏障,這樣可讓用戶經過web界面來訪問配置zabbix的功能。
systemctl enable httpd
systemctl start httpd
另外,爲了zabbix_server能夠監控本身,能夠再systemctl start zabbix-agent一下。
此時能夠netstat -ntlp查看開放端口,若是順利應該能夠看到咱們開放了3306(mysql),80(httpd),10051(zabbix_server用),10050(zabbix_agent)用的四個端口。若是ps -ef|grep zabbix看一下也能夠看到不少條zabbix_server和zabbix_agent的各類進程。
■ zabbix的網頁界面配置
這時候在瀏覽器訪問http://IP/zabbix就能夠訪問到zabbix的web界面。由於是首次訪問,web界面會引導你走一個配置流程。
基本上只要一路next step下去就能夠了,中間可能會遇到讓你填數據庫用戶的密碼,以及一個server name(這個是會顯示在將來zabbixweb界面的title裏的),其餘都是一些確認信息。所有點完以後就來到了登陸界面,默認的管理員帳密是Admin:zabbix。進入web界面以後還能夠爲咱們的用戶配置語言(zabbix語言配置是針對用戶而不是系統的,這一點比較奇葩,zabbix中有不少這樣的邏輯。。)。聽說配置成中文時還會遇到亂碼什麼的,由於我自己習慣看英文界面加上我切換中文時沒遇到問題。。就很少說了若是碰到亂碼參考上面兩篇文章給出的解決方案。
進入zabbix的web界面以後就不用多說了,總之就按照之前熟悉的感受來吧。
默認的zabbix中自帶了不少template,其中不少項都是冗餘的,若是要正式用記得要優化一下。另外會自帶一臺主機,就是Zabbix Server,監控地址是127.0.0.1,自帶關聯了Template OS Linux和Template Zabbix Server兩個模板,默認狀態是disable。能夠把這個enable以後等一下子,而後去看latest data下面的數據。數據正常出現了的話這就是好了。
■ 用Nginx作一個代理
默認的Zabbix前端是由apache做爲web容器的,默認端口是80(也就是httpd服務自帶的一些配置)。這樣的話顯然不是很好。另外去年爆出來一個zabbix的Web界面是存在一個SQL注入漏洞的,要解決這個漏洞升級Zabbix版本太麻煩了,一個好辦法是利用Nginx做爲接入zabbixweb界面的前端代理,對請求作一些過濾,就能夠消除這個隱患了。
關於Nginx的配置,在uWSGI+Nginx發佈flask應用那篇文章裏說過,這裏就很少說了。須要注意的是在nginx配置完成以後,應該把apache的配置/etc/httpd/conf/httpd.conf修改,把Listen後面的端口號寫成和Nginx甩出來的後端端口號一致。在Nginx的配置中添加一條:
location ^~ /zabbix/jsrpc.php { deny all;}
來把全部請求jsrpc.php的都給拒絕掉。那個SQL注入漏洞就是從這裏發現的。若是配置靜態路由,能夠加上一條location /zabbix的配置,在裏面配置上proxy_pass http://127.0.0.1:8881;(8881是我本身隨便寫的端口號,只要和httpd.conf配置裏一致便可)
至此,啓動Nginx和httpd兩個服務以後就能夠看到80端口由Nginx掌控,它對外面進來的請求進行處理分配,轉移到相關的後端apache端口,後端處理請求。
■ 源碼安裝
相比於yum安裝,源碼安裝顯然要麻煩不少。今天嘗試了下,因此記錄一下。參考文章【https://blog.csdn.net/baron0071/article/details/79261792】以及這個博主的第二章那篇文章。還有【https://www.cnblogs.com/wangyao3568/p/7675782.html】
首先說明,個人系統已經安裝有nginx和mysql以及php5.6的相關組件,另外也有httpd,系統是CentOS6.5的。沒裝這些東西的同窗確定要去安裝下才能保證最終zabbix-server的正確運行。。
上面給出過源碼包的官方下載地址。下載完成,傳上服務器解壓以後,首先進行編譯。
./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
由於我這臺服務器自己做爲另外一個監控集羣的被監控機器,因此已經有zabbix_agentd進程在跑,因此就沒有加上--enable-agent參數。
編譯過程當中可能會遇到各類各樣的問題,好比各類依賴包的確實。按照經驗,基本上提示缺乏哪一個包,就去yum install 一下這個包自己和包名-devel兩個包便可。因爲以前這臺機器有裝過zabbix-server,因此組件基本上都齊了,編譯過程基本未報錯。以後就是make && make install安裝。
完成後能夠在/usr/local/zabbix中看到四個目錄,etc,lib,sbin和share。etc中的zabbix_server.conf文件是zabbix-server的配置文件,去裏面改一些好比DBHost,DBName之類的配置。
回到安裝包的解壓目錄,注意database這個目錄,裏面是一些各類數據庫的初始化SQL文件。這裏咱們使用mysql中的,運行命令導入SQL(前提條件是數據庫中已經有了zabbix用戶以及zabbix數據庫等,MySQL如何添加用戶添加數據庫這些能夠參考個人MySQL相關文章或者直接google一下,不難)
mysql -uzabbix -pzabbix123 zabbix < schema.sql mysql -uzabbix -pzabbix123 zabbix < images.sql mysql -uzabbix -pzabbix123 zabbix < data.sql
我設定的zabbix用戶密碼是zabbix123而且對zabbix有全權限。固然MySQL在localhost上要否則還要指定-h。
導入數據完成後再次回到安裝目錄。此次注意frontends/php目錄。這裏放着zabbixweb管理界面的全部前端php文件。將這些文件複製到一個合適的位置好比/usr/local/zabbix/share/php中。
而後再回到安裝目錄中,關注misc/init.d中的各類系統的啓動腳本。對於Centos而言可使用fedora的。將fedora/core中的zabbix_server(agent我不須要,就不拷了)拷貝到/etc/init.d中來。而後修改一下這個文件中的BASEDIR的值,默認應該是/usr/zabbix,改爲本身的目錄如/usr/local/zabbix。改完後能夠嘗試性的service zabbix-server status看下可否正常調用這個啓停腳本。OK的話甚至能夠直接start起來。此時zabbix-server進程已經開始啓動。可是目前還沒法訪問web管理界面。
這樣全部zabbix-server相關的準備工做作完了。接下來就是進行一些組件配置的設定以及啓動服務了。
關於zabbix-server的web界面訪問方式,比較經典的是以httpd做爲後臺服務容器而nginx做爲前臺web容器。另外因爲前段是php構成的也能夠直接用nginx做爲一整個web容器。不過推薦仍是用前者。
httpd的默認配置通常在/etc/conf/httpd中,除了一些基本的配置須要檢查外,主要看到Include項配置。默認是conf.d/*.conf。到這個目錄下去創建一個zabbix.conf做爲被inlucde的配置文件。裏面的內容參考下面這樣:
# # Zabbix monitoring system php web frontend # Alias /zabbix /usr/local/zabbix/share/php <Directory "/usr/local/zabbix/share/php"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value date.timezone Asia/Shanghai </Directory> <Directory "/usr/local/zabbix/share/php/conf"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory> <Directory "/usr/local/zabbix/share/php/api"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory> <Directory "/usr/local/zabbix/share/php/include"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory> <Directory "/usr/local/zabbix/share/php/include/classes"> Order deny,allow Deny from all <files *.php> Order deny,allow Deny from all </files> </Directory>
這裏配置的主要是外界可以經過httpd訪問到哪些php文件。注意/usr/local/zabbix/share/php是我剛纔定的那個目錄,若是目錄不一樣則須要相應的修改。
nginx的配置也是相似的。通常默認的nginx配置文件在/etc/nginx/nginx.conf,這個配置文件一般也會include conf.d/*.conf。去conf.d下面加上個zabbix.conf,裏面內容參考:
server { listen 8088; server_name 你的IP; #charset koi8-r; #access_log logs/host.access.log main; location ^~ /zabbix/jsrpc.php { deny all; } location / { proxy_pass http://127.0.0.1:8888/; proxy_redirect default; proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
這樣的nginx+httpd配置,外界請求首先發到nginx監聽着的8088端口,而後nginx轉發給後端httpd的8888端口處理。
至此,訪問http://ip:8088/zabbix應該就能看到初始化配置的界面了。也就是上面給出的那張大圖那裏。
我在初始化配置的過程當中還常常遇到出錯,而後刷新一下頁面又回來了…不知道怎麼回事。到初始化的最後一頁提示我沒法生成配置文件,讓我手動下載(頁面上給出了連接)而後放到/usr/local/zabbix/share/php/conf中。放了以後果真就能夠正常訪問了。初始用戶密碼Admin/zabbix。嘗試到如今爲止沒出現什麼異常。。
■ 碰到的一些小問題
● selinux衝突
安裝完成後對於127.0.0.1的監控已經正常運轉,可是在web界面下老是會顯示一條黃色的警告,提示Zabbix server is not running:data displayed maynot be current。不知道具體緣由,總之我上服務器把服務器上的selinux關掉以後就再也不顯示了。
● 虛擬機調通問題
Zabbix在虛擬機中徹底起來以後,宿主機卻訪問不來web界面,原來是
1.防火牆組織了訪問。對於這種狀況,若是隻是測試環境的虛擬機的話大能夠systemctl stop firewalld直接關掉防火牆。若是須要防火牆的話那麼就須要配置防火牆來放行一些端口,這須要修改/etc/firewalld/zones/public.xml這個文件了。具體的修改方法還沒試過,請百度
2.開啓web服務時host只寫了127.0.0.1而不是0.0.0.0。。呵呵了。。