【Zabbix】在CentOS7上安裝Zabbix3.0

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>
View Code

 

  這裏配置的主要是外界可以經過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;
    }
}
View Code

 

 

  這樣的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。。呵呵了。。

相關文章
相關標籤/搜索