源碼下載地址:
Download Zabbix sources
nginx: download
防火墻和selinux都需要關閉
1、部署監控服務器
1)安裝LNMP環境
Zabbix監控管理控制臺需要通過Web頁面展示出來,并且還需要使用MySQL來存儲數據,因此需要先為Zabbix準備基礎LNMP環境。
[root@zabbixserver ~]# yum -y install gcc pcre-devel? openssl-devel
[root@zabbixserver ~]# tar -xf nginx-1.12.2.tar.gz
[root@zabbixserver ~]# cd nginx-1.12.2
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbixserver nginx-1.12.2]# make &&make install
[root@zabbixserver ~]# yum -y? install? php? php-mysql? php-fpm(注意,在centos8stream里沒有php-mysql,需要安裝php-mysqlnd)
[root@zabbixserver ~]# yum -y? install? mariadb? mariadb-devel? mariadb-server
2)修改Nginx配置文件
配置Nginx支持PHP動態網站,因為有大量PHP腳本需要執行,因此還需要開啟Nginx的各種fastcgi緩存,加速PHP腳本的執行速度。
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
… …
????fastcgi_buffers 816k;????????? ????#緩存php生成的頁面內容,8個16k
????fastcgi_buffer_size 32k;????????? ????#緩存php生產的頭部信息,32k
????fastcgi_connect_timeout 300;????#連接PHP的超時時間,300秒
????fastcgi_send_timeout 300;???????? ????#發送請求的超時時間,300秒
????fastcgi_read_timeout 300;??????? ????#讀取請求的超時時間,300秒
location ~\.php$ {
???? root?????????? html;
???? fastcgi_pass?? 127.0.0.1:9000;
???? fastcgi_index? index.php;
???? include??????? fastcgi.conf;#[注意這里別出錯]
}
… …
3)啟動服務
啟動Nginx、PHP-FPM、MariaDB服務,關閉SELinux與防火墻。
[root@zabbixserver ~]# systemctl start? mariadb????????#啟動服務
[root@zabbixserver ~]# systemctl start? php-fpm????????#啟動服務
[root@zabbixserver ~]# systemctl enable? mariadb????????#設置開機自啟
[root@zabbixserver ~]# systemctl enable? php-fpm????????#設置開機自啟
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx????????#啟動服務
[root@zabbixserver ~]# echo /usr/local/nginx/sbin/nginx? >>/etc/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.local
#通過rc.local設置開機自啟
[root@zabbixserver ~]# firewall-cmd --set-default-zone=trusted
[root@zabbixserver ~]# setenforce 0
[root@zabbixserver ~]# sed -i '/SELINUX/s/enforcing/permissive/'/etc/selinux/config
?注意:
在這里,需要驗證一下php是否正常啟動了:
ss -ntulp | grep php
如果沒有輸出,則需要修改php-fpm的配置:
[root@proxy etc]# vim /etc/php-fpm.d/www.conf
[www]
listen =127.0.0.1:9000????????????//PHP端口號
pm.max_children =32????????????????//最大進程數量
pm.start_servers =15????????????????//最小進程數量
2、部署監控服務器Zabbix Server
1)源碼安裝Zabbix Server
多數源碼包都是需要依賴包的,zabbix也一樣,源碼編譯前需要先安裝相關依賴包。
[root@zabbixserver ]# yum -y install? net-snmp-devel \
curl-devel autoconf libevent-devel
#安裝相關依賴包
[root@zabbixserver]# tar -xf zabbix-3.4.4.tar.gz
[root@zabbixserver ]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure? --enable-server \
--enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config \
--with-net-snmp --with-libcurl
# --enable-server安裝部署zabbix服務器端軟件
# --enable-agent安裝部署zabbix被監控端軟件
# --enable-proxy安裝部署zabbix代理相關軟件
# --with-mysql指定mysql_config路徑
# --with-net-snmp允許zabbix通過snmp協議監控其他設備(如交換機、路由器等)
# --with-libcurl安裝相關curl庫文件,這樣zabbix就可以通過curl連接http等服務,測試被監控主機服務的狀態
[root@zabbixserver zabbix-3.4.4]# make &&make install
2)創建并初始化數據庫(root用戶默認沒有密碼)
[root@zabbixserver ~]# mysql
mysql>create database zabbix character set utf8;
#創建數據庫,數據庫名稱為zabbix,character set utf8是支持中文字符集
mysql>grant all on zabbix.*to zabbix@'localhost'identified by 'zabbix';
#創建可以訪問數據庫的賬戶與密碼,用戶名是zabbix,密碼是zabbix
mysql>exit
#退出數據庫
[root@zabbixserver ~]# cd zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix <schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix <images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix <data.sql
#剛剛創建是空數據庫,zabbix源碼包目錄下,有提前準備好的數據
#使用mysql導入這些數據即可(注意導入順序)
如果導入有如下問題:
[root@zabbix mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql ERROR 1118 (42000) at line 1244: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
修改my.cnf文件,添加或修改以下參數([root@zabbix mysql]# ls /etc/my.cnf):
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_strict_mode=0
?
#-u指定數據庫用戶名,-p指定數據庫密碼
如何測試?
[root@zabbixserver ~]# mysql -uzabbix -pzabbix -h localhost zabbix
#-u指定用戶名,-p指定密碼,-h指定服務器IP,最后的zabbix是數據庫名稱
#使用zabbix賬戶(密碼為zabbix)連接localhost服務器上面的zabbix數據庫
mysql>show tables;
#查看有沒有數據表
mysql>exit
#退出數據庫
?
3)修改zabbix_server配置并啟動監控服務
修改Zabbix_server配置文件,設置數據庫相關參數,啟動Zabbix_server服務
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
DBHost=localhost
# 85行,定義哪臺主機為數據庫主機,localhost為本機
DBName=zabbix
#95行,設置數據庫名稱
DBUser=zabbix
#111行,設置數據庫賬戶
DBPassword=zabbix
#119行,設置數據庫密碼
LogFile=/tmp/zabbix_server.log????
#38行,日志的位置,排錯使用,該行僅查看即可
AllowUnsupportedDBVersions=1
?
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix
#服務不允許以root身份啟動,不創建用戶無法啟動服務(用戶不需要登錄系統)
#創建zabbix用戶才可以以zabbix用戶的身份啟動服務
#啟動服務后可以通過ps aux查看進程是以什么用戶的身份啟動的
?
通過創建service文件管理zabbix服務。
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl? enable? zabbix_server? --now
[root@zabbixserver ~]# ss -ntulp |grep zabbix_server???? #確認連接狀態,端口10051
tcp LISTEN 0128*:10051*:*users:(("zabbix_server",pid=23275,fd=4),("zabbix_server",pid=23274,fd=4)
4) 修改Zabbix_agent配置文件,啟動Zabbix_agent服務
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5????????????#93行,允許哪些主機監控本機
ServerActive=127.0.0.1,192.168.2.5????????#134行,允許哪些主機通過主動模式監控本機
Hostname=zabbix_server????????????????#145行,設置本機主機名(名稱可以任意)
LogFile=/tmp/zabbix_agentd.log????????????#設置日志文件(不需要修改)
UnsafeUserParameters=1????????????????#280行,是否允許自定義監控傳參
編寫zabbix_agentd的service文件,通過systemd管理服務。
[root@zabbixserver ~]#? vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl enable? zabbix_agentd?? --now
[root@zabbixserver ~]# ss -ntulp |grep zabbix_agentd?? #查看端口信息為10050
tcp??? LISTEN???? 0128*:10050*:*users:(("zabbix_agentd",pid=23505,fd=4),("zabbix_agentd",pid=23504,fd=4)
5)上線Zabbix的Web頁面
[root@zabbixserver ~]# cd zabbix-3.4.4/frontends/php/
[root@zabbixserver php]# cp -r */usr/local/nginx/html/
[root@zabbixserver php]# chown -R? apache.apache /usr/local/nginx/html/
#這里修改所有者使用:或者.都可以。
#修改權限的原因如下:
#php-fpm的賬戶是apache,后面我們需要讓php-fpm對網站目錄具有讀寫操作,
#而/usr/local/nginx/html默認是root所有,僅root具有寫權限,php-fpm無寫權限
瀏覽器訪問Zabbix_server服務器的Web頁面
火狐瀏覽器訪問【 firefox http://192.168.2.5/index.php 】
#第一次訪問,初始化PHP頁面會檢查計算機環境是否滿足要求,如果不滿足會給出修改建議
#默認會提示PHP的配置不滿足環境要求,需要修改PHP配置文件
根據錯誤提示,安裝依賴、修改PHP配置文件,滿足Zabbix_server的環境要求。
[root@zabbixserver ~]# yum -y install? php-gd? php-xml
[root@zabbixserver ~]# yum -y install? php-bcmath? php-mbstring
[root@zabbixserver ~]# vim /etc/php.ini
date.timezone =Asia/Shanghai????????????????#878行,設置時區
max_execution_time =300????????????????????#384行,最大執行時間,秒
post_max_size =32M????????????????????????#672行,POST數據最大容量
max_input_time =300????????????????????????#394行,服務器接收數據的時間限制
[root@zabbixserver ~]# systemctl restart php-fpm
3、部署被監控主機Zabbix Agent
1)源碼安裝Zabbix agent軟件
在2.100和2.200做相同操作(以web1為例)。
[root@web1 ~]# useradd -s /sbin/nologin? zabbix
[root@web1 ~]# yum -y install gcc pcre-devel autoconf
[root@web1 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make &&make install
2)修改agent配置文件,啟動Agent
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5????????????????#93行,誰可以監控本機(被動監控模式)
ServerActive=127.0.0.1,192.168.2.5????????????#134行,誰可以監控本機(主動監控模式)
Hostname=web1??????????????????? ????????????????#145行,被監控端自己的主機名
EnableRemoteCommands=1????
#69行,監控異常后,是否允許服務器遠程過來執行命令,如重啟某個服務
UnsafeUserParameters=1????????????????????#280行,是否允許自定義key傳參
[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# sed -i? '/SELINUX/s/enforcing/permissive/'/etc/selinux/config
[root@web1 ~]# setenforce 0
[root@web1 ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@web1 ~]# systemctl enable? zabbix_agentd?? --now
#啟動服務器并設置開機自啟動