關於 Zabbix 需要知道
Zabbix 作為運維常用的服務器以及業務監控工具已經不是一兩天的事情,所以如果早些年你還在糾結到底是使用 nagios 還是 zabbix 我還能理解,但在 2020 年,Prometheus 都已經泛濫的年代,你還在糾結,那就是你個人的問題了。
另外說明一下,其實工具很多功能都已經很完善,很多時候不完善的只是使用者而已。
現在是 2020 年 1 月 2 日,之所以再次寫這類關於 Zabbix 的文章,其實是理由很簡單,服務器做了遷移嘛,整套服務重新安裝,這時候就得升級一下一輩子都懶得動的監控系統,順便整理一下並嘗嘗新版本的鮮。
至於 Zabbix 到底是啥和究竟能干啥,相信會看這種文章的大多心里是有底的。
這里說下個人對於在官方文檔中提到的幾個 Zabbix 的幾個功能組件的看法:
Server:接收來自 agent 端的監控數據並做相應的處理,是 Zabbix 的核心。
數據庫:用於存儲監控數據與服務配置信息。
Web:圖形化顯示和配置 Zabbix 數據和服務器監控信息。
Proxy:相當於中轉機器,在特殊的網絡環境中作為 Server 和 Agent 之間的”中間人“。
Agent:客戶端,收集監控數據並傳遞給 Server 端。
大概就是這些,如果想了解更多,還是自個兒去研究官方文檔,我們作為 User 差不多就行了:
https://www.zabbix.com/documentation/4.0/zh/manual/introduction/overview
關於服務選型
1. 關於源碼安裝的問題:
之所以在 docker 已經這么方便的今天依舊選擇源碼安裝,原因很簡單,個人喜歡定制化,規范化公司服務安裝的標准而已。
2. 服務選型:
Zabbix 選擇目前最新的版本 4.4.4,更新時間 Dec 19, 2019。
MySQL 還是 Percona 的 5.7 版本,沒有選擇 8,因為公司都是這個版本沒必要特殊,但是本次准備換個數據庫引擎 Tokudb。Tokudb 尤其適合密集型插入場景,壓縮比很高。
PHP 是 7 版本,Nginx 則是最新版本 1.16。
3. Zabbix 下載地址:
當然,也可以去我的網盤下載:
MySQL 下載地址:
鏈接:https://pan.baidu.com/s/1eojo3VzAX_jBltLMuIF_Ew
提取碼:tw4a
Nginx 下載地址:
鏈接:https://pan.baidu.com/s/1-6uNiRe64NeqLVIdDsSIWA
提取碼:ahwj
PHP 下載地址:
鏈接:https://pan.baidu.com/s/1jytOtIQ7Rz8tbFgtg7_6EA
提取碼:dfb4
Zabbix 下載地址:
鏈接:https://pan.baidu.com/s/144ClGiDYCYofKnBtmGXUuQ
提取碼:e1yn
具體安裝包如下:
安裝包 |
---|
系統版本 |
CentOS Linux release 7.6.1810 |
Nginx 源碼安裝依賴安裝包: |
echo-nginx-module-master.zip |
nginx-1.16.0.tar.gz |
nginx-upload-module-master.zip |
nginx-upstream-fair-master.zip |
ngx_cache_purge-master.zip |
ngx-fancyindex-master.zip |
ngx_http_proxy_connect_module-master.zip |
ngx_http_status_code_counter-master.zip |
openssl-1.1.1c.tar.gz |
pcre-8.43.tar.gz |
zlib-1.2.11.tar.gz |
MySQL 源碼安裝依賴安裝包: |
percona-server-5.7.11-4.tar.gz |
cmake-3.5.2.tar.gz |
boost_1_59_0.tar.gz |
PHP 源碼安裝依賴安裝包: |
php-7.0.30.tar.gz |
libiconv-1.14.tar.gz |
Zabbix 源碼安裝依賴安裝包: |
zabbix-4.4.4.tar.gz |
編譯安裝 LNMP 環境 - NGINX
1. 創建基礎目錄用於存放安裝包:
cd /data/install_packages mkdir nginx php mysql zabbix mkdir /data/service
mkdir -p /data/logs/nginx
將對應的安裝包存放到相應的目錄!
2. 編譯安裝 Nginx:
# 安裝依賴 yum -y install zip unzip gcc gcc-c++ automake autoconf libtool make glibc gd-devel pcre-devel libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libevent libevent-devel patch # 進入安裝包存放目錄 cd nginx # 解壓 unzip echo-nginx-module-master.zip unzip nginx-upload-module-master.zip unzip nginx-upstream-fair-master.zip unzip ngx_cache_purge-master.zip unzip ngx-fancyindex-master.zip unzip ngx_http_proxy_connect_module-master.zip unzip ngx_http_status_code_counter-master.zip tar -zxf nginx-1.16.0.tar.gz tar -zxf openssl-1.1.1c.tar.gz tar -zxf pcre-8.43.tar.gz tar -zxf zlib-1.2.11.tar.gz # 安全配置:隱藏 nginx 版本 sed -i 's#"nginx/"#"WEB-SERVER/"#g' /data/install_packages/nginx/nginx-1.16.0/src/core/nginx.h sed -i 's#"NGINX"#"WEB-SERVER"#g' /data/install_packages/nginx/nginx-1.16.0/src/core/nginx.h sed -i 's#"Server: nginx"#"Server: WEB-SERVER"#g' /data/install_packages/nginx/nginx-1.16.0/src/http/ngx_http_header_filter_module.c sed -i 's#"<hr><center>nginx</center>" CRLF##g' /data/install_packages/nginx/nginx-1.16.0/src/http/ngx_http_special_response.c # 打補丁 sed -i 's/default_port/no_port/g' /data/install_packages/nginx/nginx-upstream-fair-master/ngx_http_upstream_fair_module.c cd /data/install_packages/nginx/nginx-1.16.0 patch -p1 < /data/install_packages/nginx/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_101504.patch # 編譯安裝 ./configure --prefix=/data/service/nginx \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module \ --with-http_mp4_module \ --with-stream \ --with-http_realip_module \ --with-http_v2_module \ --with-http_sub_module \ --with-http_image_filter_module \ --with-pcre=/data/install_packages/nginx/pcre-8.43 \ --with-openssl=/data/install_packages/nginx/openssl-1.1.1c \ --with-zlib=/data/install_packages/nginx/zlib-1.2.11 \ --add-module=/data/install_packages/nginx/echo-nginx-module-master \ --add-module=/data/install_packages/nginx/nginx-upload-module-master \ --add-module=/data/install_packages/nginx/nginx-upstream-fair-master \ --add-module=/data/install_packages/nginx/ngx_cache_purge-master \ --add-module=/data/install_packages/nginx/ngx-fancyindex-master \ --add-module=/data/install_packages/nginx/ngx_http_proxy_connect_module-master \ --add-module=/data/install_packages/nginx/ngx_http_status_code_counter-master make && make install
3. 配置 nginx 配置文件和開機啟動:
cd /data/service/nginx/conf/
mkdir vhosts tcp
vi nginx.conf
內容如下:
user root root; worker_processes 4; error_log /data/logs/nginx/error.log; pid /data/logs/nginx/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '$http_user_agent $http_x_forwarded_for $request_time $upstream_response_time $upstream_addr $upstream_status'; access_log /data/logs/nginx/access.log main; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 30m; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_param HTTP_PROXY ""; # 隱藏后端服務器的相關參數 proxy_hide_header X-Powered-By; proxy_hide_header X-Forwarded-For; proxy_hide_header X-AspNet-Version; proxy_hide_header X-AspNetMvc-Version; proxy_hide_header Via; proxy_hide_header X-Varnish; proxy_hide_header Server; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 5; gzip_disable "MSIE [1-6]\."; gzip_types text/plain text/css text/xml application/javascript application/x-javascript; gzip_vary on; include vhosts/*.conf; } include /data/service/nginx/conf/tcp/*.conf;
配置開機啟動:
chmod 755 /etc/rc.local echo "" >> /etc/rc.local echo "# NGINX STARTUP" >> /etc/rc.local echo "/data/service/nginx/sbin/nginx &" >> /etc/rc.local
檢查配置:
/data/service/nginx/sbin/nginx -t
Nginx 安裝完成!
編譯安裝 LNMP 環境 - MySQL(時間稍長)
1. 基礎配置:
mkdir -p /data/logs/mysql-3306/tmp mkdir -p /data/backup/mysql-3306 useradd mysql -s /usr/sbin/nologin chown -R mysql.mysql /data/logs/mysql-3306 # 關閉大頁內存 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag # 安裝依賴 yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel libaio-devel boost boost-devel autoconf* automake* zlib* libxml* ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bison bison-devel unzip numactl-devel net-snmp-devel net-snmp-utils readline* jemalloc
2. 編譯安裝 MySQL:
# 解壓 cd /data/install_packages/mysql/ tar -zxf cmake-3.5.2.tar.gz tar -xzf boost_1_59_0.tar.gz tar -zxf percona-server-5.7.11-4.tar.gz # 編譯安裝 CMAKE cd cmake-3.5.2 ./configure gmake && make install # 查看安裝結果 cmake --version # 編譯安裝 MySQL cd ../percona-server-5.7.11-4 cmake . -DCMAKE_INSTALL_PREFIX=/data/service/mysql-3306 \ -DWITH_BOOST=/data/install_packages/mysql/boost_1_59_0/ \ -DMySQL_DataDIR=/data/service/mysql-3306/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_EDITLINE=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DZLIB_INCLUDE_DIR:PATH=/usr/include \ -DENABLE_DOWNLOADS=1 make -j4 && make install
3. 配置 MySQL 並初始化:
vi /etc/my.cnf
內容如下:
[mysql] port=3306 prompt=3306/\\u [\\d]> socket=/data/logs/mysql-3306/mysql.sock [mysqld] port=3306 user=mysql federated pid-file=/data/logs/mysql-3306/mysqld.pid socket=/data/logs/mysql-3306/mysql.sock log-error=/data/logs/mysql-3306/error.log basedir=/data/service/mysql-3306 datadir=/data/service/mysql-3306/data server_id=100 symbolic-links=0 autocommit=1 character_set_server=utf8 skip_name_resolve=1 max_connections=5000 max_connect_errors=5000 join_buffer_size=128M tmp_table_size=64M tmpdir=/data/logs/mysql-3306/tmp max_allowed_packet=64M interactive_timeout=1200 wait_timeout=600 read_buffer_size=8M read_rnd_buffer_size=8M sort_buffer_size=8M slow_query_log=1 long_query_time=3 slow_query_log_file=/data/logs/mysql-3306/slow.log log_queries_not_using_indexes=0 log_slow_admin_statements=0 expire_logs_days=90 min_examined_row_limit=100 master_info_repository=TABLE relay_log_info_repository=TABLE log-bin=/data/service/mysql-3306/data/mysql-bin sync_binlog=5 gtid_mode=on enforce_gtid_consistency=1 log_slave_updates=1 binlog_format=row relay_log=/data/logs/mysql-3306/relay.log relay_log_recovery=1 binlog_gtid_simple_recovery=1 slave_skip_errors=ddl_exist_errors innodb_buffer_pool_size=8G innodb_buffer_pool_instances=1 innodb_buffer_pool_load_at_startup=1 innodb_buffer_pool_dump_at_shutdown=1 innodb_lock_wait_timeout=30 innodb_print_all_deadlocks=1 innodb_sort_buffer_size=8M log_timestamps=SYSTEM sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION skip-grant-tables
初始化:
/data/service/mysql-3306/bin/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/lxserver/service/mysql-3306 --datadir=/lxserver/service/mysql-3306/data --user=mysql
配置啟動腳本:
# 創建啟動方式 cp /data/service/mysql-3306/support-files/mysql.server /etc/init.d/mysqld chmod 700 /etc/init.d/mysqld sed -i 's/^basedir=$/&\/data\/service\/mysql-3306/g' /etc/init.d/mysqld sed -i 's/^datadir=$/&\/data\/service\/mysql-3306\/data/g' /etc/init.d/mysqld # 添加環境變量 echo "" >> /etc/profile echo "# MySQL" >> /etc/profile echo "export MYSQL_HOME=/data/service/mysql-3306" >> /etc/profile echo 'export PATH=$PATH:${MYSQL_HOME}/bin' >> /etc/profile # 生效環境變量 source /etc/profile # 添加開機啟動 echo "" >> /etc/rc.local echo "# MYSQL STARTUP" >> /etc/rc.local echo "/etc/init.d/mysqld start &" >> /etc/rc.local
4. 啟動 MySQL 並初始化用戶:
/etc/init.d/mysqld start
登錄 MySQL:
mysql
執行下面的 SQL 設置密碼:
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; quit;
替換配置重啟 MySQL:
# 取消免密配置,重啟數據庫 sed -i 's%skip-grant-tables%#skip-grant-tables%g' /etc/my.cnf /etc/init.d/mysqld restart
登錄:
mysql -uroot -p
執行 SQL:
alter user 'root'@'localhost' identified by '123456'; grant all on *.* to root@'%' identified by '123456' with grant option; flush privileges; quit;
5. 添加 Tokudb:
登錄 MySQL:
mysql -uroot -p
執行如下 SQL:
INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so'; INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so'; show engines; quit;
結果如圖:
MySQL 安裝完成!
編譯安裝 LNMP 環境 - PHP
1. 基礎配置:
# 創建目錄 mkdir -p /data/logs/php/tmp chmod -R 777 /data/logs/php# 創建監聽用戶 useradd php -s /usr/sbin/nologin # 安裝依賴 yum -y install libmcrypt-devel mcrypt mhash gd-devel ncurses-devel libxml2-devel bzip2-devel libcurl-devel curl-devel libjpeg-devel libpng-devel freetype-devel net-snmp-devel openssl-devel libmcrypt-devel
2. 安裝 PHP:
# 解壓 cd /data/install_packages/php/ tar -zxf libiconv-1.14.tar.gz tar -zxf php-7.0.30.tar.gz # 安裝 libiconv cd libiconv-1.14/srclib/ sed -i -e '/gets is a security/d' ./stdio.in.h cd .. ./configure --prefix=/usr/local/libiconv make && make install # 編譯安裝 PHP cd ../php-7.0.30 ./configure --prefix=/data/service/php \ --with-config-file-path=/data/service/php/etc \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-iconv-dir=/usr/local/libiconv \ --with-pcre-regex \ --with-zlib \ --with-bz2 \ --enable-calendar \ --with-curl \ --enable-dba \ --with-libxml-dir \ --enable-ftp \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --with-freetype-dir \ --enable-gd-native-ttf \ --with-mhash \ --enable-mbstring \ --with-mcrypt \ --enable-pcntl \ --enable-xml \ --disable-rpath \ --enable-shmop \ --enable-sockets \ --enable-zip \ --enable-bcmath \ --with-snmp \ --disable-ipv6 \ --with-gettext \ --enable-fpm \ --with-fpm-user=php \ --with-fpm-group=php \ --with-openssl make && make install
3. 配置 PHP:
# 復制配置文件 cd /data/service/php/etc/ cp php-fpm.conf.default php-fpm.conf cp /data/install_packages/php/php-7.0.30/php.ini-production . mv php.ini-production php.ini # 修改 php.ini 配置 sed -i 's#;date.timezone =#date.timezone = PRC#g' php.ini sed -i 's#expose_php = On#expose_php = Off#g' php.ini sed -i 's#^;cgi.fix_pathinfo=1#cgi.fix_pathinfo=1#g' php.ini sed -i 's#disable_functions =#disable_functions =exec,system,eval,passthru,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,fsocket,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server#g' php.ini sed -i 's#max_execution_time = 30#max_execution_time = 300#g' php.ini sed -i 's#max_input_time = 60#max_input_time = 300#g' php.ini sed -i 's#post_max_size = 8M#post_max_size = 24M#g' php.ini sed -i 's#upload_max_filesize = 2M#upload_max_filesize = 4M#g' php.ini sed -i 's#pdo_mysql.default_socket=#pdo_mysql.default_socket= /data/logs/mysql-3306/mysql.sock#g' php.ini sed -i 's#mysqli.default_socket =#mysqli.default_socket = /data/logs/mysql-3306/mysql.sock#g' php.ini sed -i 's#;session.save_path = "/tmp"#session.save_path = "/data/logs/php/tmp"#g' php.ini # 修改 www.conf 配置 cd php-fpm.d/ cp www.conf.default www.conf sed -i 's#;rlimit_files = 1024#rlimit_files = 65535#g' www.conf sed -i 's#;listen.owner = php#listen.owner = www#g' www.conf sed -i 's#;listen.group = php#listen.group = www#g' www.conf sed -i 's#;listen.mode = 0660#listen.mode = 0660#g' www.conf
4. 配置啟動:
# 配置啟動腳本 cp /data/install_packages/php/php-7.0.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm # 啟動服務 /etc/init.d/php-fpm start # 配置開機自啟動 echo '' >> /etc/rc.local echo '# PHP STARTUP' >> /etc/rc.local echo '/etc/init.d/php-fpm start &' >> /etc/rc.local
PHP 安裝完成!
5. 測試 LNMP 環境:
# 添加 PHP 測試頁面 echo '<?php phpinfo(); ?>' > /tmp/index.php # 添加 nginx 配置 vi /data/service/nginx/conf/vhosts/php.conf
內容如下:
server { listen 80; server_name localhost; root /tmp; index index.php index.html index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ .*\.(php)?$ { expires -1s; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } }
啟動 Nginx:
/data/service/nginx/sbin/nginx
訪問結果如下:
到此 LNMP 環境搭建完成!最終的服務安裝目錄結構如下:
|-- install_packages | |-- mysql | |-- nginx | |-- php | `-- zabbix |-- logs | |-- mysql-3306 | |-- nginx | `-- php |-- service | |-- mysql-3306 | |-- nginx | `-- php
安裝 Zabbix Server
先來看看我們使用 Zabbix 具體是怎樣工作的:
1. 基礎配置:
創建數據庫:
mysql -uroot -p
執行如下 SQL:
create database zabbix default character set utf8 collate utf8_general_ci; grant all on zabbix.* to zbxuser@'127.0.0.1' identified by '123456'; flush privileges; quit;
創建服務器用戶和相關目錄:
mkdir /lxserver/logs/zabbix useradd zabbix -s /usr/sbin/nologin chown -R zabbix:zabbix /lxserver/logs/zabbix/
2. 編譯安裝 Zabbix Server:
# 解壓 cd /data/install_packages/zabbix tar -zxf zabbix-4.4.4.tar.gz cd zabbix-4.4.4/ # 編譯安裝 ./configure --prefix=/data/service/zabbix \ --enable-server \ --enable-agent \ --with-mysql=/data/service/mysql-3306/bin/mysql_config \ --with-net-snmp \ --with-libcurl \ --with-libxml2 make && make install
3. 修改數據庫腳本並導入:
# 修改表的存儲引擎 cd /data/install_packages/zabbix/zabbix-4.4.4/database/mysql sed -i "s#ENGINE=InnoDB#ENGINE=tokudb#g" schema.sql # 導入數據 mysql -uroot -p zabbix < /data/install_packages/zabbix/zabbix-4.4.4/database/mysql/schema.sql mysql -uroot -p zabbix < /data/install_packages/zabbix/zabbix-4.4.4/database/mysql/images.sql mysql -uroot -p zabbix < /data/install_packages/zabbix/zabbix-4.4.4/database/mysql/data.sql
4. 修改 Zabbix Server 配置:
cd /data/service/zabbix/etc/
vim zabbix_server.conf
主要修改以下配置:
LogFile=/data/logs/zabbix/zabbix_server.log PidFile=/data/logs/zabbix/zabbix_server.pid DBHost=127.0.0.1 DBName=zabbix DBUser=zbxuser DBPassword=123456 DBSocket=/data/logs/mysql-3306/mysql.sock DBPort=3306
5. 添加啟動腳本:
cp /data/install_packages/zabbix/zabbix-4.4.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/
vim /etc/init.d/zabbix_server
修改如下:
修改下面的啟動命令:
6. 配置 MySQL 的 lib,否則可能會報錯:error while loading shared libraries:
echo "/data/service/mysql-3306/lib" >> /etc/ld.so.conf ldconfig
7. 啟動 Zabbix Server:
# 啟動 /etc/init.d/zabbix_server start # 配置開機自啟動 echo '' >> /etc/rc.local echo '# ZABBIX SERVER STARTUP' >> /etc/rc.local echo '/etc/init.d/zabbix_server start &' >> /etc/rc.local
8. 查看進程:
netstat -tlunp | grep zabbix
可以看到啟動的 10051 端口!
配置 Zabbix Web UI
在 Zabbix 配置 完成之后,那只是后端服務,用戶需要訪問則需要前端頁面,這就涉及 Web UI 部署。
1. 將前端文件移動到指定目錄:
mkdir /data/service/zabbix-web cp -r /data/install_packages/zabbix/zabbix-4.4.4/frontends/php /data/service/zabbix-web/ chmod 777 -R /data/service/zabbix-web/php
2. 配置 nginx:
cd /data/service/nginx/conf/vhosts/ rm -f php.conf vi zabbix.conf
內容如下:
############################################################# # Zabbix ############################################################# server { listen 80; server_name localhost; root /data/service/zabbix-web/php; index index.php index.html index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ .*\.(php)?$ { expires -1s; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } }
重載 Nginx:
/lxserver/service/nginx/sbin/nginx -s reload
3. 訪問配置:
如果點擊沒有反應,則去服務器查看 /data/logs/php 的目錄權限是否全為 777,沒有則設置為 777:
下面如果有報錯的配置,則需要去 php.ini 配置文件中將值調整為相應的參數並重啟 PHP:
配置數據庫連接:
配置這個 Zabbix 的名稱,主機我采用本機的 IP 地址,便於區分:
確認配置:
配置完成:
登錄測試,初始用戶密碼為:Admin / zabbix:
如圖所示:
漢化 Web UI:
更新后查看:
安裝 Zabbix Agent
選擇一台其他主機作為需要監控的主機,安裝 agent。
1. 基礎配置:
# 創建用戶和目錄 useradd zabbix -s /usr/sbin/nologin mkdir -p /data/install_packages/zabbix mkdir -p /data/logs/zabbix mkdir -p /data/service chown -R zabbix.zabbix /data/logs/zabbix # 安裝依賴 yum install -y net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel pcre*
2. 編譯安裝:
cd /data/install_packages/zabbix tar -zxf zabbix-4.4.4.tar.gz cd zabbix-4.4.4/ ./configure --prefix=/data/service/zabbix --enable-agent make && make install
3. 配置 agent:
cd /data/service/zabbix/etc/
vim zabbix_agentd.conf
配置如下:
PidFile=/data/logs/zabbix/zabbix_agentd.pid LogFile=/data/logs/zabbix/zabbix_agentd.log Server=192.168.0.100 ListenPort=10050 ServerActive=192.168.0.100 Hostname=192.168.0.50
注意:Server 和 ServerActive 都配置 Server 的 IP 地址,Hostname 為了便於區分不通的機器使用本機的 IP 地址,當然你也可以自己給他取名字。
4. 配置啟動:
chown -R zabbix.zabbix /data/service/zabbix
cp /data/install_packages/zabbix/zabbix-4.4.4/misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod 755 /etc/init.d/zabbix_agentd
vim /etc/init.d/zabbix_agentd
修改如下:
建立命令軟鏈接:
ln -s /data/service/zabbix/sbin/* /usr/local/sbin/
ln -s /data/service/zabbix/bin/* /usr/local/bin/
啟動服務並配置開機自啟動:
# 啟動 /etc/init.d/zabbix_agentd start # 配置開機自啟動 echo '' >> /etc/rc.local echo '# ZABBIX AGENT STARTUP' >> /etc/rc.local echo '/etc/init.d/zabbix_agentd start &' >> /etc/rc.local
當然,對於 Server 端的 agent 我們在編譯 Server 的時候就編譯了,只需要按照上面的配置好就行。
配置好后啟動起來就會發現之前的告警沒了:
到此基礎的安裝完成!
agent 一鍵安裝腳本:
#!/bin/bash ############################################################################## # 用途:Zabbix agent 安裝 # 作者:Dylan # 時間:2020-01-06 ############################################################################## ############################################################################## # 基礎配置 ############################################################################## ZABBIX_SERVER_IP="192.168.0.100" LOCAL_IP=$(/usr/sbin/ip a | grep "inet" | grep -v "inet6" | grep -v "127.0.0.1" | awk '{print $2}' | cut -d "/" -f 1 | head -1) BASE_PATH="/data" ZABBIX_PACKAGE_PATH="${BASE_PATH}/install_packages/zabbix" ZABBIX_LOGS_PATH="${BASE_PATH}/logs/zabbix" ZABBIX_INSTALL_PATH="${BASE_PATH}/service/zabbix" ZABBIX_NAME="zabbix-4.4.4" ZABBIX_PACKAGE_NAME="${ZABBIX_NAME}.tar.gz" ############################################################################## # 開始 ############################################################################## # 創建用戶和目錄授權 useradd zabbix -s /usr/sbin/nologin mkdir -p ${ZABBIX_LOGS_PATH} chown -R zabbix.zabbix ${ZABBIX_LOGS_PATH} # 安裝依賴 yum install -y net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel pcre* # 編譯安裝 cd ${ZABBIX_PACKAGE_PATH} tar -zxf ${ZABBIX_PACKAGE_NAME} cd ${ZABBIX_NAME} ./configure --prefix=${ZABBIX_INSTALL_PATH} --enable-agent make && make install # 修改配置 sed -i "s%LogFile=/tmp/zabbix_agentd.log%#LogFile=/tmp/zabbix_agentd.log%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf sed -i "s%Server=127.0.0.1%#Server=127.0.0.1%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf sed -i "s%ServerActive=127.0.0.1%#ServerActive=127.0.0.1%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf sed -i "s%Hostname=Zabbix server%#Hostname=Zabbix server%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf echo "PidFile=${ZABBIX_LOGS_PATH}/zabbix_agentd.pid LogFile=${ZABBIX_LOGS_PATH}/zabbix_agentd.log Server=${ZABBIX_SERVER_IP} ListenPort=10050 ServerActive=${ZABBIX_SERVER_IP} Hostname=${LOCAL_IP}" >> ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf # 添加啟動腳本 chown -R zabbix.zabbix ${ZABBIX_INSTALL_PATH} cp ${ZABBIX_PACKAGE_PATH}/${ZABBIX_NAME}/misc/init.d/tru64/zabbix_agentd /etc/init.d/ chmod 755 /etc/init.d/zabbix_agentd sed -i "s#PIDFILE=/tmp/zabbix_agentd.pid#PIDFILE=${ZABBIX_LOGS_PATH}/zabbix_agentd.pid#g" /etc/init.d/zabbix_agentd # 建立軟鏈接 ln -s ${ZABBIX_INSTALL_PATH}/sbin/* /usr/local/sbin/ ln -s ${ZABBIX_INSTALL_PATH}/bin/* /usr/local/bin/ # 啟動 /etc/init.d/zabbix_agentd start # 配置開機自啟動 echo '' >> /etc/rc.local echo '# ZABBIX AGENT STARTUP' >> /etc/rc.local echo '/etc/init.d/zabbix_agentd start &' >> /etc/rc.local echo "-----------------------------------------------------" echo "安裝完成:" echo "-----------------------------------------------------" ps -ef | grep zabbix