目录
2.6:编写php页面并使用web页面访问http://192.168.0.108/index.php
概述
zabbix的web页面是用php写的,所以我们需要安装LNMP架构,也可以用LAMP。在LNMP的基础上部署zabbix系统,zabbix版本为5.0。本实例安装方式:源码安装nginx、php,zabbix,mysql。
-
示例环境:
服务器用途 | IP | 操作系统 | 软件版本 |
LNMP + Zabbix_server + Zabbix_agent | 192.168.0.108 | CentOS7 | nginx-1.20 |
本文部分内容借鉴于「把倒立的世界腾空」的文章
安装准备
1:Zabbix简介
zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
1.2:软件下载
nginx官网:nginx: download
php官网:PHP: Hypertext Preprocessornginx-1.20.2.tar.gz
mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
zabbix-5.0.22.tar.gz
php-7.4.28.tar.gz
libzip-1.3.2.tar.gz
onig-6.8.2.tar.gz
1.3:防火墙配置
# firewall-cmd --zone=public --add-port=80/tcp –permanent # firewall-cmd --zone=public --add-port=3306/tcp –permanent # firewall-cmd --zone=public --add-port=9000/tcp –permanent # firewall-cmd --zone=public --add-port=15000/tcp –permanent # firewall-cmd --zone=public --add-port=15001/tcp –permanent |
2:安装LNMP
2.1:安装Nginx:
# yum -y install pcre pcre-devel zlib openssl openssl-devel # 安装依赖包 # cd /data/soft # tar -zxvf nginx-1.20.2.tar.gz -C /data # useradd -s /sbin/nologin -M nginx # cd /data/nginx-1.20.2/ # ./configure --user=nginx --group=nginx --prefix=/data/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre # configure配置,加上所需相关模块 # make && make install # 编译安装 # ln -s /data/nginx/sbin/* /usr/local/bin/ |
2.2:安装Mysql
创建用户、解压tar包
# groupadd mysql # useradd mysql -g mysql -M -s /sbin/nologin # cd /data/soft # tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /data # cd /data # mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql # mkdir -p /data/mysql/data # chown -R mysql:mysql /data/mysql |
编辑/etc/my.cnf配置文件
# vim /etc/my.cnf [client] port = 3306 socket = /data/mysql/mysql.sock [mysqld] port = 3306 socket = /data/mysql/mysql.sock datadir = /data/mysql/data sync_binlog = 0 skip-external-locking performance_schema_max_table_instances=400 table_open_cache = 2048 key_buffer_size = 512M # 索引块的缓冲区大小。 sort_buffer_size = 8M #用于表间关联缓存的大小 net_buffer_length = 4M #对导入导出数据进行分段 read_buffer_size = 4M #(数据文件存储顺序)是MySQL读入缓冲区的大小 read_rnd_buffer_size = 8M #是MySQL的随机读缓冲区大小。 thread_cache_size = 300 #线程池缓存大小 query_cache_size = 64M tmp_table_size = 246M # 它规定了内部内存临时表的最大值 query_cache_type = 0 explicit_defaults_for_timestamp = true max_connections = 2000 max_connect_errors = 100000 open_files_limit = 65535 sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES log-bin=mysql-bin binlog_format=row server-id = 1 expire_logs_days = 10 #控制binlog日志文件保留时间 max_binlog_size = 1G slow_query_log=1 slow-query-log-file=/data/mysql/data/mysql-slow.log long_query_time=0.5 early-plugin-load = "" default_storage_engine = InnoDB innodb_data_home_dir = /data/mysql/data innodb_data_file_path = ibdata1:10M:autoextend #单独指定数据文件的路径与大小 innodb_log_group_home_dir = /data/mysql/data innodb_buffer_pool_size = 3G #内存75% innodb_log_file_size = 64M innodb_log_buffer_size = 16MB #InnoDB 将日志写入日志磁盘文件前的缓冲大小 innodb_flush_log_at_trx_commit = 0 innodb_lock_wait_timeout = 120 #事务锁超时时间 innodb_max_dirty_pages_pct = 90 innodb_read_io_threads = 4 innodb_write_io_threads = 4 [mysqldump] quick max_allowed_packet = 32M #设置以字节发送给服务器的最大数据包大小. (默认: 16MB) [mysql] no-auto-rehash #auto-rehash是自动补全的意思 [myisamchk] key_buffer_size = 32M sort_buffer_size = 768K read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout #sql_mode,定义了mysql应该支持的sql语法,数据校验等! NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户。 #skip-networking #skip-name-resolve #log_queries_not_using_indexes=on |
创建 sock、pid、log文件
# cd /data/mysql/ # touch mysql.sock # chown mysql:mysql mysql.sock # chmod 755 mysql.sock # cd /tmp # mkdir mysqld # cd mysqld # touch mysqld.pid # cd .. # chown -R mysql:mysql mysqld # cd mysqld # chmod 755 mysqld.pid # touch /var/log/mysqld.log # chown -R mysql:mysql /var/log # cd /var/log # chmod 755 mysqld.log |
编译安装MySQL,并启动、授权、配置环境变量
# cd /data/mysql/bin/ # 初始化会报默认密码,记得保存 # ./mysqld --initialize --user=mysql --basedir=/data/mysql--datadir=/data/mysql/data # vim /data/mysql/support-files/mysql.server basedir=/data/mysql # 指定mysql目录 datadir=/data/mysql/data # 指定data目录 # 安全启动(会报出默认密码) # ./mysqld_safe --user=mysql & # cd /data/mysql/bin/ # 登录mysql,输入默认密码 # ./mysql -u root -p mysql> set password=password("2X0Ob7yxN9tR"); # 修改密码 mysql>grant all privileges on *.* to 'root'@'%' identified by '2X0Ob7yxN9tR'; # 设置远程登录权限 mysql> flush privileges; # 立即生效 mysql> quit; # 配置环境变量 # vim /etc/profile export MYSQL_HOME=/data/mysql export PATH="$PATH:$MYSQL_HOME/bin" # 更新/etc/profile声明环境变量 # source /etc/profile # 重新启动mysql # cp -a /data/mysql/support-files/mysql.server /etc/init.d/mysqld # /etc/init.d/mysqld restart # 设置开机自启动 # chkconfig --add /etc/init.d/mysqld # chkconfig mysqld on |
2.3:安装PHP:
首先安装php7.4所需依赖包
# yum -y install libxml2 libxml2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel openldap openldap-devel sqlite-devel oniguruma-devel |
这里还需要手工编译安装libzip依赖包否则configure的时候会报以下错误:意思是 libzip的版本必须大于0.11 且 不能等于1.3.1或者1.7.0
# configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met: No package 'libzip' found No package 'libzip' found No package 'libzip' found |
编译安装libzip
# cd /data/soft # tar -zxvf libzip-1.3.2.tar.gz -C /data/ # cd /data/libzip-1.3.2 # ./configure && make && make install # 声明pkgconfig环境变量 # export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" |
解压php的tar包,添加php用户和组
# cd /data/soft # tar -zxvf php-7.4.28.tar.gz -C /data # cd /data/php-7.4.28 # groupadd php # useradd php -g php -M -s /sbin/nologin |
配置所需模块,编译安装
# ./configure --prefix=/data/php7 --with-config-file-path=/data/php7/etc --with-mhash --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib --enable-bcmath --enable-gd --with-jpeg --with-freetype --enable-mbstring --enable-ftp --enable-sockets --with-gettext --enable-session --with-curl --enable-fpm --with-fpm-user=php --with-fpm-group=php --enable-pdo -enable-tokenizer --with-zip |
这里报错缺少依赖包oniguruma,这个包yum库不支持,需要手动安装
# cd /data/soft # tar -zxvf onig-6.8.2.tar.gz -C /data/ # cd /data/onig-6.8.2/ # ./configure && make && make install # cd /data/php-7.4.28 # 再次执行php的configure配置 # make && make install |
2.4:安装ldap扩展模块(可选)
# find / -name phpize # 查找到之后进入到php源码包解压目录(注意不是安装目录) # cd /data/php-7.4.28/ext/ldap/ # 在这个目录执行查找到的文件(在安装目录的bin下面) # /data/php7/bin/phpize # 在ldap目录下执行该文件 Configuring for: PHP Api Version: 20190902 Zend Module Api No: 20190902 Zend Extension Api No: 320190902 # cp -frp /usr/lib64/libldap* /usr/lib/ # 拷贝库文件或者软连接 # 配置,编译安装 # ./configure --with-php-config=/data/php7/bin/php-config # make && make install Build complete. Don't forget to run 'make test'. Installing shared extensions: /data/php7/lib/php/extensions/no-debug-non-zts-20190902/ # 保存这个路径后面需要用(/data/php7/lib/php/extensions/no-debug-non-zts-20190902/) # 解压目录下的php.ini-production就是配置文件,但是需要移动和改名才能识别,放到/data/php7/etc/php.ini # cd - /data/php-7.4.28 # cp php.ini-production /data/php7/etc/php.ini # vim /data/php7/etc/php.ini max_execution_time = 300 post_max_size = 16M max_input_time = 300 date.timezone = Asia/Shanghai extension_dir = "/data/php7/lib/php/extensions/no-debug-non-zts-20190902/" # 路径是刚刚编译安装保存的路径 extension=ldap.so # 新增一行,添加ldap模块 # cd /data/php7/etc/ # cp php-fpm.conf.default php-fpm.conf # cp php-fpm.d/www.conf.default php-fpm.d/www.conf # cd /data/php-7.4.28 # ln -s /data/php7/bin/* /usr/local/bin # ln -s /data/php7/sbin/* /usr/local/sbin # php安装完成,查看版本并启动php,查看端口与是否启动ldap模块。 # php -v PHP 7.4.28 (cli) (built: Apr 7 2022 15:19:29) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies # php-fpm # netstat -antp | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN # php -m | grep ldap ldap |
2.5:配置nginx支持php页面并启动
# vim /data/nginx/conf/nginx.conf 新增 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # nginx # netstat -antp | grep 80 |
2.6:编写php页面并使用web页面访问http://192.168.0.108/index.php
# vim /data/nginx/html/index.php <?php phpinfo(); ?> # 验证通过后测试php与mysql连接状态 # vim /data/nginx/html/index.php <?php $mysqli = new mysqli("localhost", "root", "2X0Ob7yxN9tR"); if(!$mysqli) { echo"database error"; }else{ echo"php env successful"; } $mysqli->close(); ?> # 刷新页面显示连接成功 |
3:安装ZABBIX
3.1:zabbix官方版本和系统版本参考文档:
官网地址>>Download and install Zabbix
解压tar包,创建用户并修改家目录权限
# cd /data/soft # tar -zxvf zabbix-5.0.22.tar.gz -C /data # cd /data/zabbix-5.0.22 # groupadd --system zabbix # useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix # mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix # chown zabbix:zabbix /usr/lib/zabbix |
配置数据库支持zabbix
# mysql -uroot -p # 创建zabbix库,字符集utf8 mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) # 创建zabbix用户 mysql> create user 'zabbix'@'localhost' identified by 'zabbix123'; Query OK, 0 rows affected (0.00 sec) # 授权zabbix访问 mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye |
3.2:导入SQL 脚本:
用于创建数据库 schema 和插入 dataset。Zabbix proxy 数据库只需要数据库 schema,而 Zabbix server 数据库在建立数据库 schema 后,还需要 dataset。
如果要从源代码安装Zabbix,请继续将数据导入数据库。对于Zabbix代理数据库,应仅导入schema.sql( 不是images.sql或data.sql)
因为这里不是代理服务器所以三个sql都导入数据库
# /data/zabbix-5.0.22/database/mysql # mysql -uzabbix -pzabbix123 zabbix < schema.sql mysql: [Warning] Using a password on the command line interface can be insecure. # mysql -uzabbix -pzabbix123 zabbix < images.sql mysql: [Warning] Using a password on the command line interface can be insecure. # mysql -uzabbix -pzabbix123 zabbix < data.sql mysql: [Warning] Using a password on the command line interface can be insecure. |
3.3:配置和编译安装
文件目录:
# 默认是在/usr/local下面,如果需要,配置时可以使用--prefix指定路径 |
配置:
# cd /data/zabbix-5.0.22 # ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 |
按照官网的configure会报错,缺少net-snmp-devel和libevent-devel依赖包,yum装一下就好
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config # yum -y install net-snmp-devel configure: error: Unable to use libevent (libevent check failed) # yum install -y libevent-devel # 再次执行zabbix配置,直接make install # make install |
修改服务端配置文件:
# vim /usr/local/etc/zabbix_server.conf DBPassword=zabbix123 #添加mysql数据库zabbix用户的登陆密码 DBSocket=/data/mysql/mysql.sock # 指定mysql的socket文件路径 |
启动zabbix服务端:
zabbix_agentd是zabbix客户端需要运行的程序,这服务器上启动是用于监控自己
# zabbix_server zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory # 加载共享库报错需要将libmysqlclient.so.20拷贝或者软连接到/usr/lib64下面 # ln -s /data/mysql/lib/libmysqlclient.so.20 /usr/lib64/ # zabbix_agentd |
3.4:安装前端web页面:
Zabbix 前端是 PHP 编写的,所以必须运行在支持 PHP 的 Web 服务器上。只需要从ui路径下复制 PHP 文件到 Web 服务器的 HTML 文档目录,即可完成安装,我把整个ui目录都拷贝过去命名为zabbix
# cd /data/zabbix-5.0.22 # cp -r ui /data/nginx/html/zabbix/ |
检查端口:
15000(客户端)、15001(服务端)是否是监听状态
# netstat -antp | grep zabbix |
初始化配置
1:Zabbix界面初始化:
访问http://192.168.0.108/zabbix/setup.php就出现zabbix主页了,但是还没有完全装好,需要做一些设置,直接下一步
下一步
指定数据库信息
下载配置文件,将文件存放在server端指定路径下
提示部署成功,登录zabbix默认用户Admin,默认密码zabbix。
1.2:修改语言
默认web界面为英文版,接下来将web揭秘那更改为中文版本
语言更改完成。
1.2:解决图形界面乱码问题
可以看到图形界面的注释是乱码
先下载一个字体文件,我是从windows上拷贝了语音文件。路径:C:\Windows\Fonts 进入Server更换字体
# cd /data/nginx/html/zabbix/assets/fonts/ # mv /data/soft/stxihei.ttf ./ # 更改配置文件或者将旧的字体文件备份把新的字体文件改名成DejaVuSans.ttf即可 # vim /data/nginx/html/zabbix/include/defines.inc.php //define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name |
刷新页面,乱码恢复