雜記php
監控系統是產品生命週期中很是重要的一環,監控系統的完善,將決定運維工做是否能高效的開展。html
以前在某市GA擔任大數據系統維護工做,服務器1000臺左右,系統與數據量都比較龐大,致使常常出現故障,維護時間、人力成本都大大增長,接手時竟沒有一套完整的監控系統,天天作的就是手動各個數據流的狀況,並用表格記錄,儘管後續使用腳本巡檢,但仍是力不從心。後續才搭建了Zabbix監控系統,配合短信報警,大大提升運維效率。mysql
目前主流的監控系統技術棧,從數據源採集到的數據,經過緩衝隊列存儲到數據庫中,再經過圖表展現。監控告警也只佔了其中一部分。linux
Zabbix 基於web頁面提供分佈式的開源監控系統,能夠基於SNMP、IPMI監控硬件;基於Zabbix agent監控各類網絡、服務、系統、web、日誌、流量等參數nginx
Zabbix 各組件說明c++
Zabbix Web GUI:提供Web界面web
Zabbix Database:提供數據存儲功能,專用於存儲配置信息,以及採集到的數據正則表達式
Zabbix Server:接收Agent採集數據的核心組件。sql
Zabbix Agent:部署在被監控主機上,用於採集本地數據。shell
因爲Zabbix是基於web界面的監控系統,首先給Zabbix安裝LNMP/LAMP
setenforce 0 #臨時關閉SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久關閉SELinux(重啓生效) systemctl stop firewalld.service #臨時關閉防火牆 systemctl disable firewalld.service #永久關閉防火牆
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
建立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
下載依賴
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
安裝
make && make install
錯誤提示一:
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
錯誤提示二:
解決方法:
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/
錯誤提示三:
解決方法:
cp -frp /usr/lib64/libldap* /usr/lib/
# 不復制會編譯報錯
錯誤提示四:
解決方法:
因爲--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
錯誤提示五:
提示/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_strdup'
解決方法:
vi Makefile
在開頭是EXTRA_LIBS
行尾加上 -llber
,存盤退出
安裝完成
拷貝配置啓動文件
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
另外: php7源碼安裝的。php-fpm在PHP 5.3.2之後的版本不支持之前的php-fpm (start|restart|stop|reload) 重啓 kill -SIGUSR2 進程ID
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; }
重啓nginx
/usr/local/nginx/sbin/nginx -s reload
添加php測試頁面
cat>/usr/local/nginx/html/index.php<<EOF <?php phpinfo(); php?> EOF
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI libven-devel libevent libevent-devel OpenIPMI OpenIPMI-devel ipmitool freeipmi
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
https://www.zabbix.com/cn/download_sources#tab:unsupported
上傳解壓編譯
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
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
若是未修改會報以下錯誤
登陸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;
進入源碼文件夾
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
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
/etc/init.d/zabbix_server restart
cd zabbix-4.4.10
cp -a frontends/php/* /usr/local/nginx/html/
提示php有報錯,修改vim /etc/php.ini根據報錯信息更改參數便可
另外若是缺乏php模塊,
進入php源碼包中,找到須要安裝的擴展模塊目錄。cd /root/php-7.4.8/ext/gd
在擴展模塊目錄,運行phpize程序。/usr/local/php/bin/phpize
進行編譯安裝。./configure --with-php-config=/usr/local/php/bin/php-config --with-external-gd --with-jpeg --with-freetype
make && make install
能夠看到gd.so
就出來了
而後配置vim /usr/local/php/etc/php.ini
,將該模塊釋放
kill -SIGUSR2 進程ID
已經顯示正常
保存至/usr/local/nginx/html/conf/zabbix.conf.php
默認帳號密碼 Admin/zabbix
設置爲中文
提示報錯 沒法鏈接zabbix_server
查看日誌,提示沒法找到mysql.sock
查看mysql配置文件
路徑不一致,作個軟鏈接便可
mkdir /var/lib/mysql ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock /etc/rc.d/init.d/mysqld restart
useradd zabbix -s /sbin/nologin
tar -zxvf zabbix-4.4.10.tar.gz
cd zabbix-4.4.10
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
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
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
/etc/init.d/zabbix_agentd start
顯示兩個可用,添加正常