使用Eclipse搭建zabbix4.0.3 server端C源碼開發調試環境之一

一、準備開發環境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常見問題解決方案:

    PHP編譯安裝時常見錯誤解決辦法,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)

相關文章
相關標籤/搜索