1、环境
主机 | 主机名 | ip |
zabbix监控端 | zabbix | 192.168.1.3 |
linux被监控端 | server1 | 192.168.1.4 |
注:关闭防火墙和selinux
1.1、整个环境需要的软件包
pgp-5.6.36
libmcrypt-2.5.7
mysql-5.7.26
nginx-1.10.3
zabbix-4.2.6
2、搭建LNMP环境
2.1.、安装mysql-5.7.26
略
2.2安装php-5.6.36
2.2.1、安装依赖软件包
yum -y install make apr* autoconf automake curl-devel gcc gcc-c++ openssl openssl-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel
2.2.2、安装libmcrypt
tar zxf libmcrypt-2.5.7.tar.gz #解压到当前目录
cd libmcrypt-2.5.7/ #进入到解压后的软件包
./configure --prefix=/usr/local/libmcrypt && make && make install #预编译安装
2.2.3、安装php
tar zxf php-5.6.36.tar.gz #解压软件包到当前目录
cd php-5.6.36/ #进入到解压后的软件包中
./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt=/usr/local/libmcrypt --with-curl #预编译
make && make install #编译安装
2.2.4、生成php.ini配置文件
cp php.ini-production /etc/php.ini #将文件复制到/etc/php.ini
编辑配置文件按照以下的内容对文件进行修改
找到:
;date.timezone =
修改为:
date.timezone = PRC #设置时区
找到:
expose_php = On
修改为:
expose_php = Off #禁止显示php版本的信息
找到:
short_open_tag = Off
修改为:
short_open_tag = On //支持php短标签
找到:
post_max_size = 8M
修改为:
post_max_size = 16M //上传文件大小
找到:
max_execution_time = 30
修改为:
max_execution_time = 300 //php脚本最大执行时间
找到:
max_input_time = 60
修改为:
max_input_time = 300 //以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制
always_populate_raw_post_data = -1
mbstring.func_overload = 0
2.2.5、创建php-fpm服务启动脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #复制文件到etc下
chmod +x /etc/init.d/php-fpm #给予执行权限
chkconfig --add php-fpm
chkconfig php-fpm on
2.2.6、提供php-fpm配置文件并编辑
cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf #复制到etc文件下起名叫php-fpm.conf
useradd -M -s /sbin/nologin www #创建用户为www并不能登录系统
vim /usr/local/php5.6/etc/php-fpm.conf #编辑文件
修改以下内容
pid = run/php-fpm.pid
user = www
group = www
listen =127.0.0.1:9000
pm.max_children = 300
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers =50
2.2.7、启动php-fpm服务
/etc/init.d/php-fpm start #启动php服务
netstat -anptl | grep php-fpm #查看端口
3、安装nginx
3.1、安装依赖关系包
yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
3.2、编译安装nginx
tar zxf nginx-1.10.3.tar.gz #解压到当前目录
cd nginx-1.10.3/ #进入解压后的软件包
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www #预编译
make && make install #编译安装
3.2、启动nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #创建软连接
nginx #启动
netstat -anptl | grep nginx #查看nginx是否启动
3.3、篇日志nginx支持php
nginx配置文件内容如下
user www www;
worker_processes 4;
error_log logs/error.log;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
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"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
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;
include fastcgi.conf;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx -t #查看语法有没有错误
nginx -s reload #重载nginx
3.4、测试LNMP
进入nginx默认的网页根目录,创建.php的测试页
vim /usr/local/nginx/html/test1.php
<?php
phpinfo();
?>
vim /usr/local/nginx/html/test2.php
<?php
$link=mysql_connect('localhost','root','123456');
if($link) echo "ok";
mysql_close();
?>
访问结果
LNMP部署完成
3、创建导入zabbix数据库
zabbix需要数据库的支持。而且zabbix源码包中已经自带了数据库结构
3.1、创建zabbix使用的数据库
mysql -uroot -p #进入数据库
create database zabbix character set utf8; #创建数据库增加字符集
grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; #zabbix 用户授权
flush privileges #刷新
exit #退出mysql
3.2、解压zabbix-4.2.6.tar.gz
tar zxf zabbix-4.2.6.tar.gz #解压到当前目录
cd zabbix-4.2.6/
3.3、导入数据库
注:注意顺序,否则会出错
mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql
mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql
mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql
如果在做分布式环境中,proxy服务器只需要导入schema.sql,agent不需要导入。server必须三个都要导入
3.4、安装依赖
yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel libevent libevent-devel
3.5、创建用户
groupadd zabbix #创建组为zabbix
useradd -s /sbin/noglogin -g zabbix zabbix #创建用户zabbix
3.6、预编译
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
参数说明
--prefix= #指定路径
--enable-server #zabbix Server 支持
--enable-agent #支持 Zabbix agent
--with-mysql #指定 MySql 库,可以选择自定路径mysql_config,mysql_config 是命令,用于编译 mysql 客户端程序
--with-net-snmp #支持 snmp 协议,需要安装 net-snmp-devel 包
--with-libcurl #支持 CURL 功能,libcurl 主要功能就是用不同的协议连接不同的服务器,libcurl当前支持的协议有 http,https,ftp,gopher,telent,dict,file,和 ldap 协议
--enable-java #支持java应用监控,编译时最好带上--enable-java这个参数,方便后续监控tomcat程序所用。
--with-openipmi用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等
其他参数:
--enable-proxy 指的是支持 zabbix 代理服务器,zabbix proxy 是一个监控代理服务器,它收集到监控数据,选存放在缓冲区,保存的时间可以通过配置文件设定,然后再传送的 zabbix server。监控代理服务需要一个独立的数据库。
用 zabbix proxy 的好处:进程监控,当监控文遏制通讯不方便的时候,当通讯上千台设备的时候,使用 zabbix_proxy 可以简化维护分布式监控,降低 zabbix server 的负载,
3.7、安装
make install
增加系统软连接
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
3.8、配置zabbix server
vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
mkdir -p /usr/local/zabbix/logs
chown -R zabbix:zabbix /usr/local/zabbix/
3.9、监控zabbix server本身
监控本身,意思是本身作为服务器之外,自己也做自己的被监控端,也要使用agent这个代理程序
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=127.0.0.1
ListenPort=10050
ServerActive=127.0.0.1
Hostname=Zabbix server
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1
注:
其中 Server 和 ServerActive 都指定 Zabbix server 的 IP 地址,不同的是,前者是被动后者是主动。也就是说前者允许 127.0.0.1 这个 ip 来我这取数据。而 serverActive 的 127.0.0.1 的意思是,客户端主动提交数据给它。
Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样。
UnsafeUserParameters=1 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
3.10、启动脚本
如果 zabbix 用户不存在, 将以 root 运行,新建之后,如果 zabbix 存在,那么直接可以用 zabbix 运行
3.11、直接运行
/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
3.12、解决库文件找不到
在ld.so.conf中加入/usr/local/mysql/lib
vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib #根据实际路径添加此行
3.13、查看端口
netstat -anptl | grep zabbix_server
3.14、增添zabbix启动脚本
zabbix默认有部分启动脚本,如果需要通过脚本的方式来实现,可以使用他的模板来实现,脚本在源码目录的misc/init.d下
cd /root/zabbix-4.2.6/misc/init.d/
cp fedora/core/* /etc/init.d/
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix #找到此行,并修改。zabbix安装目录
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid # pid文件路径
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix #找到此行,并修改。zabbix安装目录
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid # pid文件路径
chkconfig --add zabbix_server
chkconfig --add zabbix_agentd
chkconfig zabbix_server on
chkconfig zabbix_agentd on
3.15、配置zabbix web 页面
在解压目录中将frontends/php拷贝到指定的web root:
cd /root/zabbix-4.2.6/
cp -r /root/zabbix-4.2.6/frontends/php/* /usr/local/nginx/html/
chown -R www:www /usr/local/nginx/html/
注:/usr/local/nginx/html为Nginx默认站点目录 ,www为Nginx运行账户
注:php需要至少开启扩展
gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
查看是否包括了上面所提到的扩展模块
/usr/local/php5.6/bin/php -m
3.16、重启nginx和php-fom
/usr/local/nginx/sbin/nginx -s reload
/etc/init.d/php-fpm restart
3.17、打开浏览器安装zabbix web
3.18、开始检查环境,如图,确保环境要符合条件要求
如果不符合,就需要编辑php.ini文件,修改php环境,修改后重启php-fpm
3.19、下一步
3.20、下一步
单机finish完成zabbix web安装
3.21、登录zabbix
默认的用户名和密码是admin ,zabbix
1、点击配置-主机启动本主机
默认是没有启动的,点击后面红色的停用,则启用
2、启动zabbix_agent
未启动可以执行以下命令
/usr/local/zabbix/sbin/zabbix_agentd
netstat -anptl | grep zabbix