1. 程式人生 > >基於nginx的zabbix安裝問題

基於nginx的zabbix安裝問題

zabbix 錯誤處理 php-fpm 安裝 配置

首次運用zabbix這個軟件,yum安裝在Apache上使用時很順利,但是在預編譯安裝後在nginx上時遇到了一系列問題,中間一度懷疑人生 ==!,逐一解決後最簡單的監控終於成功。

一.php安裝的問題
本次通過nginx部署zabbix,需要部署php環境,下面是php7.2.3版本的安裝以及出現的問題。
通過wget下載的官網源碼包,可能不是.gz.bz等格式結尾的包名,需要手動用mv命令修改包名,然後解壓。

1======下面是一個安裝PHP包,預編譯安裝的腳本

         tar xfz /tmp/php-7.2.3.tar.gz -C /tmp/          解壓gz包,並將解壓後的文件放到/tmp下

     cd /tmp/php-7.1.7/     進入解壓後的目錄

     yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libxslt-devel openssl-devel      安裝插件,不安裝則編譯無法成功

     ./configure  --prefix=/usr/local/php  --with-curl --with-freetype-dir  --with-gd  --with-gettext  --with-iconv-dir --with-jpeg-dir  --with-kerberos  --with-libdir=lib64 --with-libxml-dir  --with-mysqli  --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite  --with-pear --with-png-dir  --with-xmlrpc  --with-xsl  --with-zlib --enable-fpm  --enable-bcmath  --enable-libxml --enable-inline-optimization  --enable-gd-native-ttf --enable-mbregex --enable-mbstring  --enable-opcache  --enable-pcntl  --enable-shmop --enable-soap --enable-sockets  --enable-sysvsem  --enable-xml --enable-zip    編譯指定路徑等

      make           編譯
      make install              安裝

2======問題出在,弄錯了centos6和centos7的phpserver文件放置的路徑,導致文件無法啟動

      cp sapi/fpm/php-fpm.service /usr/local/php/sbin/php-fpm   
          chmod 755 /usr/local/php/sbin/php-fpm
    ####centos6:####cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    ####centos6:####chmod 755 /etc/init.d/php-fpm

       cp /usr/local/php/etc/{php-fpm.conf.default,php-fpm.conf} && cp /usr/local/php/etc/php-fpm.d/www.conf{.default,}
       cp php.ini-production /usr/local/php/lib/php.ini

3======安裝php-redis擴展部分

      aws s3 cp s3://yeecall-program/cloudFormation/phpredis-php7.zip /tmp/      下載php-reids包
       cd /tmp/
       unzip phpredis-php7.zip
       cd phpredis-php7
/usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install

4======修改php.ini文件

sed -i ‘/date.timezone =/s/.*/date.timezone = PRC/g‘ /usr/local/php/lib/php.ini
sed -i ‘868iextension=redis.so‘ /usr/local/php/lib/php.ini
sed -n ‘868p‘ /usr/local/php/lib/php.ini
sed -i ‘/opcache]/azend_extension=opcache.so‘ /usr/local/php/lib/php.ini
sed -i ‘/;opcache.enable=1/s/;//g‘ /usr/local/php/lib/php.ini
sed -i ‘/opcache.enable_cli=/s/.*/opcache.enable_cli=1/g‘ /usr/local/php/lib/php.ini
echo "vm.nr_hugepages = 200" >> /etc/sysctl.conf
sysctl -p
sed  -i ‘/;opcache.huge_code_pages/s/;//g‘ /usr/local/php/lib/php.ini
sed -i ‘/opcache.memory_consumption=/s/.*/opcache.memory_consumption=512/g‘ /usr/local/php/lib/php.ini
sed -i ‘/opcache.fast_shutdown=/s/.*/opcache.fast_shutdown=1/g‘ /usr/local/php/lib/php.ini
sed -i ‘/opcache.validate_timestamps=/s/.*/opcache.validate_timestamps=1/g‘ /usr/local/php/lib/php.ini
sed -i ‘/opcache.revalidate_freq=/s/.*/opcache.revalidate_freq=2/g‘ /usr/local/php/lib/php.ini
sed -i ‘/listen = 127.0.0.1/s/=./= 0.0.0.0:9000/g‘ /usr/local/php/etc/php-fpm.d/www.conf

腳本運行成功後啟動php-fpm.server
php環境布置完成

二.啟動zabbix_agentd失敗

1======nginx頁面無法訪問
首先安裝在location中寫入的目錄是/usr/share/nginx/html。則需要把zabbix中的php文件復制到這個目錄下

技術分享圖片

如果php安裝沒有問題,那麽問題可能出現在nginx中location寫錯了,或者是目錄的權限問題。大概率是權限問題。如果是yum安裝,那麽web目錄的屬主屬組是root需要手動修改,預編譯安裝則不會出現這個問題。

技術分享圖片

不是權限問題,則檢查location

這裏需要註意的事,第二段location只是指定了php文件的存放路徑,圖片或是.css文件是無法顯示的,需要在第一個location中寫入文件存放的路徑
技術分享圖片

輸入ip/index.php後 頁面可以訪問
技術分享圖片

下面就是頁面配置出現的問題
2======進入配置頁面顯示,php項中有NO,無法下一步
這是很常見的問題,但是也是繼續配置必須要解決的問題。
對照頁面端的參數在你的php.ini文件中修改就可以啦
當然要註意的是如果你php和我一樣編譯了2次那麽你也是有兩個php.ini文件的,註意區分,當然最好是細心點不要犯這個錯誤。

3======頁面配置時無法連接MySQL
連接不到數據庫可能的問題是ip不一致。
如果在數據庫賦權是指定的ip是本機的ip,則在頁面選擇host是不能是localhost,也不能是域名,如果在你的ip已經解析了域名需要在/etc/my.conf中加入一行

            skip-name-resolve

跳過MySQL的域名解析

也可能是zabbix_server配置文件中寫入的user和password與頁面輸入的不一致,耐心檢查。

4======頁面配置時無法創建configure file

技術分享圖片

這個問題解決的辦法有2種:
一個是,將/usr/local/nginx/html目錄的屬主和屬組設置成nginx。刷新後問題解決。第二個是,根據提示下載這個文件
技術分享圖片
下載完成後放到/usr/local/nginx/html/zabbix/conf/目錄下,名字是zabbix.conf.php。再或者手打一份,一般沒人會用這個方法==

頁面端配置完成。進入zabbix
技術分享圖片

5======設置好頁面端user添加監控的host後,並沒有監控到目標的agentd

在zabbix_agentd中會配置下面三個參數

 Server=a.b.c.d     數據接收服務器

 ServerActive=a.b.c.d     可以使用get的服務器     

 Hostname=efg     

配置完成參數用/usr/sbin/zabbix_agentd命令啟動agentd端
用lsof -i:10051端口,發現agentd啟動成功
但是查看web端發現:

技術分享圖片

查看日誌(/tmp/zabbix_agentd.log,如果沒有在配置文件中查找log文件位置)後

預編譯沒指定Profix路徑,應為直接復制了官網的安裝代碼,導致本次預編譯時沒寫入Profix路徑,而安裝後文件也沒有在默認路徑下(/usr/local下),導致二次編譯後,產生了兩個配置文件。

         pkill zabbix_agentd   殺死agentd端進程後

重新更改參數,後啟動

         cd /usr

         sbin/zabbix_agentd -c /usr/local/etc/zabbix_agentd.conf      手動指定agentd端運行的配置文件。

問題解決

php安裝版本導致的問題解決方法
技術分享圖片

解決方法是
技術分享圖片

三.總結
對zabbix配置文件構成不熟悉,比如啟動服務器文件在哪?agentd配置文件在哪?zabbix網頁端php文件放在哪裏。。。等問題,導致在安裝和配置過程中很費時,還用find命令查了很多,說起來慚愧==! 配置php時沒有註意centos版本問題導致2次編譯,又衍生出一些問題,就像滾雪球一樣。。。在對一系列錯誤時,還是需要冷靜處理,畢竟文件是不會出錯的,出錯誤的還是我本身,因為自身出錯再跟自己歐氣,真的是很不明智,還是要讓自己忘記錯誤帶來的挫敗感,安慰下自己那顆脆弱的編程心,然後找出錯誤,不過yum和預編譯都安裝一遍後總算是對安裝過程有熟悉了很多,也是一次豐富的體驗。後續zabbix的使用才剛剛開始,loading。。。

基於nginx的zabbix安裝問題