基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

雜記php

監控系統是產品生命週期中很是重要的一環,監控系統的完善,將決定運維工做是否能高效的開展。html

以前在某市GA擔任大數據系統維護工做,服務器1000臺左右,系統與數據量都比較龐大,致使常常出現故障,維護時間、人力成本都大大增長,接手時竟沒有一套完整的監控系統,天天作的就是手動各個數據流的狀況,並用表格記錄,儘管後續使用腳本巡檢,但仍是力不從心。後續才搭建了Zabbix監控系統,配合短信報警,大大提升運維效率。mysql

基於LNMP的zabbix4.4源碼編譯安裝

1、監控架構

目前主流的監控系統技術棧,從數據源採集到的數據,經過緩衝隊列存儲到數據庫中,再經過圖表展現。監控告警也只佔了其中一部分。linux

基於LNMP的zabbix4.4源碼編譯安裝

Zabbix 基於web頁面提供分佈式的開源監控系統,能夠基於SNMP、IPMI監控硬件;基於Zabbix agent監控各類網絡、服務、系統、web、日誌、流量等參數nginx

  • 優勢:部署方便快捷、能夠自動發現註冊設備、能夠分佈式監控、開放式接口
  • 缺點:mysql做爲底層數據庫,壓力較大;須要在監控主機安裝agent;對容器不友好

基於LNMP的zabbix4.4源碼編譯安裝

Zabbix 各組件說明c++

  • Zabbix Web GUI:提供Web界面web

  • Zabbix Database:提供數據存儲功能,專用於存儲配置信息,以及採集到的數據正則表達式

  • Zabbix Server:接收Agent採集數據的核心組件。sql

  • Zabbix Agent:部署在被監控主機上,用於採集本地數據。shell

  • Zabbix Proxy:當被監控節點較多時,用於減輕Server壓力的組件,也用於分佈式監控系統。由Proxy接收數據後統一發送至Server。

2、LNMP安裝

因爲Zabbix是基於web界面的監控系統,首先給Zabbix安裝LNMP/LAMP

1.關閉防火牆

setenforce 0        #臨時關閉SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  #永久關閉SELinux(重啓生效)

systemctl stop firewalld.service    #臨時關閉防火牆

systemctl disable firewalld.service    #永久關閉防火牆

2.Nginx編譯安裝

yum install gcc gcc-c++ glibc pcre-devel  zlib-devel openssl-devel -y
wget -c http://nginx.org/download/nginx-1.19.1.tar.gz
tar -xzf nginx-1.19.1.tar.gz
cd nginx-1.19.1
useradd www
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

添加開機啓動項

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

啓動nginx

/usr/local/nginx/sbin/nginx

基於LNMP的zabbix4.4源碼編譯安裝

3.mysql編譯安裝

建立mysql用戶

useradd -s /sbin/nologin mysql
mkdir -p /data/mysql 
chown -R mysql:mysql /data/mysql

源碼下載

yum install cmake ncurses-devel ncurses –y
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz  
tar -xzvf  boost_1_59_0.tar.gz 
tar -xzvf  mysql-5.7.25.tar.gz

編譯安裝

cd mysql-5.7.25

cmake  .   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=../boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0

安裝

make && make install

添加環境變量

echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile

添加啓動項

\cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl enable mysqld

修改配置文件/etc/my.conf

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
expire_logs_days = 10
max_binlog_size = 100M
slow_query_log = 1
slow_query_log_file = slow-query.log
long-query_time = 2
log-error = error.log
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M

初始化mysql

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

啓動mysql

systemctl start mysqld

4.php編譯安裝

下載依賴

yum -y install epel-release
yum install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl libmcrypt libmcrypt-devel libpng libpng-devel libjpeg-devel openssl openssl-devel gd-devel curl curl-devel libxml2 libxml2-devel libicu-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl autoconf automake libaio* sqlite-devel libcurl-devel libxslt libxslt-devel freetype freetype-devel -y

添加用戶

groupadd www
useradd -g www www

源碼下載

wget http://www.php.net/distributions/php-7.4.8.tar.gz

解壓安裝

tar -xzvf php-7.4.8.tar.gz

cd php-7.4.8

./configure --prefix=/usr/local/php \
--with-config-file-path=/etc \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl \
--with-freetype \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-mysqli \
--with-openssl \
--with-external-pcre \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-iconv-dir \
--with-ldap \
--with-jpeg \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-zip \
--with-bz2 \
--with-mhash \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd \
--enable-fpm \
--enable-gd \
--enable-bcmath \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-shared \
--enable-soap \
--enable-intl \
--enable-ftp \
--enable-sockets \
--enable-sysvsem \
--enable-maintainer-zts \
--enable-xml \
--enable-fpm \
--without-gdbm

基於LNMP的zabbix4.4源碼編譯安裝
安裝

make && make install

基於LNMP的zabbix4.4源碼編譯安裝


編譯錯誤解決

錯誤提示一:

configure: error: Package requirements (libzip >= 0.11) were not met: No package 'libzip'

解決方法:

#php 7.4須要libzip的版本在1.2.0及以上,從新編譯安裝libzip
yum install  cmake cmake3 -y
wget https://libzip.org/download/libzip-1.5.0.tar.gz
tar -zxvf libzip-1.5*
cd libzip-1.5*
mkdir build && cd build && cmake3 .. && make && make install

錯誤提示二:

基於LNMP的zabbix4.4源碼編譯安裝

解決方法:

wget https://ftp.pcre.org/pub/pcre/pcre2-10.34.tar.gz
tar -xzvf pcre2-10.34.tar.gz
cd pcre2-10.34/
./configure --enable-pcre2-16 \
--enable-pcre2-32 \
--enable-jit \
--enable-jit-sealloc

make && make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

錯誤提示三:

基於LNMP的zabbix4.4源碼編譯安裝

解決方法:

cp -frp /usr/lib64/libldap* /usr/lib/ # 不復制會編譯報錯

錯誤提示四:

基於LNMP的zabbix4.4源碼編譯安裝

解決方法:

因爲--enable-mbstring模塊須要正則表達式 oniguruma oniguruma-devel 模塊

yum install -y  http://mirror.centos.org/centos-7/7.8.2003/cloud/x86_64/openstack-queens/Packages/o/oniguruma-6.7.0-1.el7.x86_64.rpm

yum install -y  http://mirror.centos.org/centos-7/7.8.2003/cloud/x86_64/openstack-queens/Packages/o/oniguruma-devel-6.7.0-1.el7.x86_64.rpm

錯誤提示五:

基於LNMP的zabbix4.4源碼編譯安裝

提示/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_strdup'

解決方法:

vi Makefile在開頭是EXTRA_LIBS行尾加上 -llber,存盤退出

基於LNMP的zabbix4.4源碼編譯安裝

安裝完成


拷貝配置啓動文件

cp php.ini-development /etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod o+x /etc/init.d/php-fpm
ln -s /usr/local/php/bin/php /usr/local/bin
ln -s /usr/local/php/sbin/php-fpm /usr/local/sbin

添加環境變量

vim /etc/profile
        export PATH=$PATH:/usr/local/php/bin
source /etc/profile

php-fpm加入systemctl管理

vim /usr/lib/systemd/system/php-fpm.service

[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target

添加開機啓動項,並啓動php-fpm

systemctl enable php-fpm

systemctl start php-fpm 或者 /usr/local/php/sbin/php-fpm
基於LNMP的zabbix4.4源碼編譯安裝

另外:

php7源碼安裝的。php-fpm在PHP 5.3.2之後的版本不支持之前的php-fpm (start|restart|stop|reload) 
重啓
kill -SIGUSR2  進程ID

5.修改nginx配置文件,支持php,修改以下,其餘不用修改

location / {
            root   html;
            index  index.php index.html index.htm;
        }

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
       #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

基於LNMP的zabbix4.4源碼編譯安裝

重啓nginx

/usr/local/nginx/sbin/nginx -s reload

添加php測試頁面

cat>/usr/local/nginx/html/index.php<<EOF
<?php
 phpinfo();
php?>
EOF

基於LNMP的zabbix4.4源碼編譯安裝

3、Zabbix_Server安裝

1.安裝依賴(php安裝過則忽略)

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI libven-devel libevent libevent-devel OpenIPMI OpenIPMI-devel ipmitool freeipmi

2.建立操做系統用戶Zabbix

groupadd zabbix

useradd -g zabbix -s /sbin/nologin zabbix

3.下載源碼安裝包安裝

https://www.zabbix.com/cn/download_sources#tab:unsupported

基於LNMP的zabbix4.4源碼編譯安裝

上傳解壓編譯

tar -xzvf zabbix-4.4.10.tar.gz 
cd zabbix-4.4.10/

./configure --prefix=/usr/local/Zabbix --sysconfdir=/usr/local/Zabbix/etc/ --enable-server --enable-agent --with-net-snmp  --with-openipmi --with-libcurl --with-mysql=/usr/local/mysql/bin/mysql_config --with-libxml2 --with-mysqli

make && make install

基於LNMP的zabbix4.4源碼編譯安裝

4.拷貝修改啓動文件

ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/

cp misc/init.d/tru64/zabbix_server /etc/init.d/zabbix_server
修改啓動文件的路徑

chmod o+x /etc/init.d/zabbix_server
#路徑與編譯安裝的路徑保持一致
vim /etc/rc.d/init.d/zabbix_server

基於LNMP的zabbix4.4源碼編譯安裝

若是未修改會報以下錯誤

基於LNMP的zabbix4.4源碼編譯安裝

5.配置zabbix數據庫

登陸mysql數據庫

注意新版本不要使用create database zabbix charset=utf8; 否則zabbix會報錯

create database zabbix character set utf8 collate utf8_bin;

grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'Huawei12#$';

flush privileges;

6.導入zabbix數據庫

進入源碼文件夾

cd zabbix-4.4.10

#注意要按順序導入
mysql -uzabbix -pHuawei12#$ zabbix <database/mysql/schema.sql

mysql -uzabbix -pHuawei12#$ zabbix <database/mysql/images.sql

mysql -uzabbix -pHuawei12#$ zabbix <database/mysql/data.sql

7.修改zabbix配置文件

cd /usr/local/Zabbix/etc

mv zabbix_server.conf zabbix_server.conf.bak

vim zabbix_server.conf

LogFile=/tmp/Zabbix_server.log
DebugLevel=3
#帳號密碼和第5步中建立的保持一致
DBName=zabbix
DBUser=zabbix
DBPassword=Huawei12#$
DBPort=3306
StartPollers=10
StartTrappers=80
StartPingers=20
StartDiscoverers=15
StartTimers=5
HousekeepingFrequency=1
MaxHousekeeperDelete=500
CacheSize=128M
CacheUpdateFrequency=75
StartDBSyncers=10
HistoryCacheSize=32M
HistoryIndexCacheSize=16M
ValueCacheSize=32M
Timeout=30
UnreachablePeriod=120
LogSlowQueries=3000

8.重啓zabbix服務

/etc/init.d/zabbix_server restart

4、初始化zabbix_Server

1.將zabbix php文件拷貝到nginx發佈目錄

cd zabbix-4.4.10

cp -a frontends/php/* /usr/local/nginx/html/

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

提示php有報錯,修改vim /etc/php.ini根據報錯信息更改參數便可


另外若是缺乏php模塊,

基於LNMP的zabbix4.4源碼編譯安裝

  1. 進入php源碼包中,找到須要安裝的擴展模塊目錄。
    cd /root/php-7.4.8/ext/gd

  2. 在擴展模塊目錄,運行phpize程序。
    /usr/local/php/bin/phpize

  3. 進行編譯安裝。
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-external-gd --with-jpeg --with-freetype

  4. make && make install

    能夠看到gd.so就出來了

基於LNMP的zabbix4.4源碼編譯安裝

而後配置vim /usr/local/php/etc/php.ini,將該模塊釋放

基於LNMP的zabbix4.4源碼編譯安裝


2.修改完重啓php-fpm

kill -SIGUSR2 進程ID

基於LNMP的zabbix4.4源碼編譯安裝

已經顯示正常

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

3.下載配置文件

保存至/usr/local/nginx/html/conf/zabbix.conf.php

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

默認帳號密碼 Admin/zabbix

基於LNMP的zabbix4.4源碼編譯安裝

設置爲中文

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

提示報錯 沒法鏈接zabbix_server

查看日誌,提示沒法找到mysql.sock

基於LNMP的zabbix4.4源碼編譯安裝

查看mysql配置文件

基於LNMP的zabbix4.4源碼編譯安裝

路徑不一致,作個軟鏈接便可

mkdir /var/lib/mysql

 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

/etc/rc.d/init.d/mysqld restart

5、配置zabbix_agent

1.客戶端添加zabbix用戶

useradd zabbix -s /sbin/nologin

2.將zabbix源碼包傳至其餘客戶端

tar -zxvf zabbix-4.4.10.tar.gz

cd zabbix-4.4.10

3.編譯安裝agent

./configure --prefix=/usr/local/zabbix --enable-agent
make && make install

ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/

4.修改zabbix_agent配置文件

vim /usr/local/zabbix/etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log
#填寫服務器IP
Server=192.168.197.128
#填寫服務器IP
ServerActive=192.168.197.128
#填寫客戶端IP,因爲是監控本機全部仍是server服務器
#hostname與zabbix中配置的主機名一致,否則會報錯(通常寫agent的Ip)
Hostname = Zabbix server

5.拷貝啓動文件並修改路徑

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd

chmod o+x /etc/init.d/zabbix_agentd

sed -i 's%/usr/local/sbin/zabbix_agentd%/usr/local/zabbix/sbin/zabbix_agentd%g' /etc/init.d/zabbix_agentd

基於LNMP的zabbix4.4源碼編譯安裝

6.客戶端zabbix_agent啓動

/etc/init.d/zabbix_agentd start

7.zabbix_server web配置添加agent

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

基於LNMP的zabbix4.4源碼編譯安裝

顯示兩個可用,添加正常

相關文章
相關標籤/搜索