一、準備開發環境php
基於zabbix-4.0.3搭建的源碼開發系統環境:
操做系統:CentOS Linux 7
開發工具:Eclipse IDE for C/C++ Developers ,Version: Oxygen Release (4.7.0)
Mysql:MySQL Community Server 5.7.25
PHP:7.3.1
Nginx:1.10.1
Java:1.8.0_201html
二、安裝開發工具環境前端
一、安裝mysqljava
參考網絡教程。mysql
二、安裝nginxlinux
參考網絡教程。nginx
三、安裝javac++
參考網絡教程。sql
四、安裝PHP數據庫
獲取源碼包
wget -O /root/work/php-7.3.1.tar.gz http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror cd wget -O /root/work/ tar zxf php-7.3.1.tar.gz cd php-7.3.1
編譯安裝
./configure \ --prefix=/usr/local/php7 \ --with-pdo-mysql=/opt/mysql \ --enable-mysqlnd \ --with-pdo-mysql=mysqlnd \ -with-mysqli=mysqlnd \ --with-mysql-sock=/tmp/mysql.sock \ --with-config-file-path=/usr/local/php7 \ --enable-fpm \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --with-libxml-dir \ --with-xmlrpc \ --with-openssl \ --with-mhash \ --with-pcre-regex \ --with-sqlite3 \ --with-zlib \ --enable-bcmath \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --with-cdb \ --enable-dom \ --enable-exif \ --enable-fileinfo \ --enable-filter \ --with-pcre-dir \ --enable-ftp \ --with-gd \ --with-openssl-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --with-freetype-dir \ --enable-gd-jis-conv \ --with-gettext \ --with-gmp \ --with-mhash \ --enable-json \ --enable-mbstring \ --enable-mbregex \ --enable-mbregex-backtrack \ --with-onig \ --enable-pdo \ --with-zlib-dir \ --with-pdo-sqlite \ --with-readline \ --enable-session \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --with-libxml-dir \ --with-xsl \ --enable-zip \ --with-pear \ --enable-opcache make make install
安裝過程可能會遇到不少缺乏依賴包的問題,百度基本都能解決的。
如下是安裝PHP常見問題解決方案:
三、安裝zabbix調試環境
3.一、建立zabbix用戶帳戶
groupadd zabbix
useradd -g zabbix zabbix
3.二、建立zabbix數據庫
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
FLUSH PRIVILEGES;
quit
3.三、導入zabbix數據庫
在zabbix源碼包下找到要導入的數據庫腳本:schema.sql、images.sql、data.sql
cd /root/work/zabbix-4.0.3/database
mysql -uroot -p zabbix < schema.sql
mysql -uroot -p zabbix < images.sql
mysql -uroot -p zabbix < data.sql
3.四、配置PHP
vi /usr/local/php7/php.ini
修改如下配置參數值:
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1
3.五、配置unixODBC
ln -s /usr/lib64/libmyodbc8.so -> /usr/lib64/libmyodbc8w.so
ln -s /usr/lib64/libmysqlclient.so.18 -> /usr/lib64/mysql/libmysqlclient.so.18
建立ODBC數據源配置文件:
vi /etc/odbc.ini
[localhost] Description = MySQL Localhost Database Driver = MySQL Server = 127.0.0.1 User = zabbix Password = zabbix Port = 3306 Database = zabbix
測試ODBC數據源配置:
isql -v localhost
若是配置成功,咱們就能夠操做mysql了。執行上面的命令後,控制檯輸出以下
輸入quit退出sql命令行。
3.六、安裝zabbix前端界面
mkdir -p /home/www/zabbix
cp -rf /root/work/zabbix-4.0.3/frontends/php/* /home/www/zabbix/
chown -R nginx.nginx /home/www/zabbix
3.七、配置zabbix server配置文件
mkdir -p /usr/local/Zabbix/etc/
cp -rf /root/work/zabbix-4.0.3//conf/zabbix_agentd.conf /usr/local/Zabbix/etc/
cp -rf /root/work/zabbix-4.0.3//conf/zabbix_server.conf /usr/local/Zabbix/etc/
vi /usr/local/Zabbix/etc/zabbix_server.conf
DBName=zabbix DBUser=zabbix DBPassword=zabbix
3.八、
Eclipse導入zabbix server源代碼
解壓Eclipse IDE for C/C++ Developers包,放在/root/eclipse下,若是須要建立桌面快捷方式,把eclipse文件(菱形的圖標)複製到桌面,啓動直接雙擊eclipse文件。
首次啓動eclipse時要配置源代碼工做區間,能夠自定義路徑,我放在:/root/work/eclipse-workspace
3.九、導入zabbix server源代碼
將源代碼移至工做區間
cp -rf /root/work/zabbix-4.0.3/ /root/work/eclipse-workspace/
點擊Eclipse左上角的File → Import菜單,打開導入源代碼工程窗口,選擇C/C++ → Existing code as Autotools project,以下圖所示:
點擊圖中的Next按鈕,進入「Import Exiting code」窗口,點擊Browse按鈕,找到zabbix-4.0.3源碼目錄的路徑,而後再選擇C project language選項:
點擊Next按鈕,進入編譯和調試配置窗口,如圖勾選項
最後點擊Finish按鈕,完成源代碼導入。
3.十、配置編譯參數
右鍵單擊zabbix-4.0.3工程,在右鍵菜單中選擇Properties,打開工程屬性窗口,並打開Autotools → Configure Settings:
在configure 找到Directory specifiers配置項,給安裝的目錄前綴賦值爲/usr/local/Zabbix:
在configure 下找到 Advanced配置項,勾選「Debug (-g)」選項,在附加命令行選項添加編譯參數:
--prefix=/usr/local/Zabbix CFLAGS="-g" CXXFLAGS="-g" --enable-server --enable-agent --enable-ipv6 --with-mysql --with-jabber --with-libxml2 --with-unixodbc --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv --with-iconv-include --with-iconv-lib
點擊configure節點,能夠看到所有的編譯配置:
配置到這裏,最後點擊「Apply and Close」按鈕保存並結束配置。
右鍵單擊zabbix-4.0.3源碼工程,選擇Reconfigure Project進行構建項目,構建過程若是提示缺乏依賴包,使用yum安裝:
構建成功控制檯文末輸出「Operation successful」,結果如圖:
右鍵單擊zabbix-4.0.3源碼工程,選擇Build Project進行編譯
編譯成功,控制檯文末輸出「Build Finished」,在工程的Binaries目錄中看到編譯獲得的二進制文件:zabbix_agentd、zabbix_get、zabbix_sender、zabbix_server
3.十一、啓動服務
在Eclipse的菜單欄中訪問Run—>Run Configurations...,打開運行配置窗口,在左側會看到四個zabbix的C/C++ Application:
在右側選擇Argcuments,而後在Program Argcuments輸入框輸入配置文件參數值:-c /usr/local/Zabbix/etc/zabbix_server.conf
配置完成以後,點擊窗口中的Run按鈕,即可以運行Zabbix Server的後臺服務了。在命令行輸入:
pstree zabbix -ap
就能看到server後臺的進程
zabbix agentd啓動方法基本一致,要注意在Program Argcuments輸入框輸入配置文件參數值:-c /usr/local/Zabbix/etc/zabbix_agentd.conf
3.十二、安裝debuginfo
debuginfo-install OpenIPMI-libs cyrus-sasl-lib glibc gnutls iksemel keyutils krb5-libs libcom_err libcurl libgcc libgcrypt libgpg-error libselinux libssh2 libstdc++ libtasn1 libxml2-2.7.6 net-snmp-libs nspr nss nss-softokn-freebl nss-util openldap openssl unixODBC zlib yum install ncurses-debuginfo gdbm-debuginfo
3.1三、建立GDB初始化腳本
vi /root/work/eclipse-workspace/zabbix-4.0.3/.gdbinit
內容以下:
set schedule-multiple on set detach-on-fork off set print thread-events on handle SIGPIPE nostop
set schedule-multiple on:表示全部進程的全部線程都容許運行。這個選項是必須設置的。
set detach-on-fork off:表示能夠同時調試父進程和子進程。
set print thread-events on:表示當GDB發現新的線程啓動或退出時,輸出調試信息至控制檯。
handle SIGPIPE nostop:表示當發生SIGPIPE信號時,當前進程不會中止運行。
.gdbinit文件會在Eclipse的調試器配置時使用。
3.1四、調試zabbix_server
以下圖所示,打開調試配置窗口:
調試配置以下圖:
去掉「Stop on startup at main」選項的勾:在main函數的首行不要暫停執行;
GDB debuger:使用gdb命令做爲調試器;
GDB command file:使用/root/work/eclipse-workspace/zabbix-4.0.3/.gdbinit文件做爲GDB的啓動命令文件;
勾選Automatically debug ...:啓用多進程GDB,自動調試建立的子進程。
配置完成,點擊窗口右下角的Debug按鈕,便可調試Zabbix Server,在程序裏打斷點。
3.1五、調試zabbix_agentd
調試zabbix_agentd與zabbix_server的步驟基本一致。
下一篇文章將補充描述對zabbix_get、zabbix_sender的調試方法。(搭建過程若有問題留言沒有及時回覆的,可加本人微信交流<備註:zabbix>:mooscow)