Zabbix 4 - 01:源碼安裝服務


 

關於 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 下載地址:

https://www.zabbix.com/download_sources

當然,也可以去我的網盤下載:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM