Zabbix 安装
本文是参考 《Zabbix 教程从入门到精通v1.0》 所作的实验。
大纲:
一、LNMP 环境配置
二、zabbix 服务端安装
三、zabbix 客户端安装配置
四、zabbix 管理网站配置
系统环境 CentOS 6.8
使用的软件版本:
MySQL 5.6
Nginx 1.10.1
PHP 5.6
一、LNMP 环境配置
1.1 Nginx 安装
1.2 PHP 安装及 Nginx 配置
1.3 MySQL 安装
1.1 Nginx 安装
1.1.1:环境准备:
安装开发工具包(源码安装软件就需要安装这个):
yum -y groupinstall "Development Tools" "Server Platform Development" "Development Libraries"
注:Development Tools:开发工具包;Server Platform Development:服务器开发包;Development Libraries:开发库。
安装openSSL库、正则表达式库:
yum -y install openssl-devel pcre-devel
注:pcre-devel:正则表达式库
添加用户组:
groupadd -r nginx
添加用户到用户组:
useradd -r -g nginx nginx
1.1.2:nginx 下载:
wget http://nginx.org/download/nginx-1.10.1.tar.gz
1.1.3:解压安装:
tar -zxvf nginx-1.10.1.tar.gz //解压文件
cd nginx-1.10.1 //进入文件件
./configure --prefix=/etc/nginx \ //开始配置config文件
--sbin-path=/usr/sbin/nginx \ //启动脚本地址
--conf-path=/etc/nginx/nginx.conf \ //配置文件地址
--error-log-path=/home/zabbix/tools/nginx/nginx-1.10.1/log/error.log \ //错误日志地址
--http-log-path=/home/zabbix/tools/nginx/nginx-1.10.1/log/access.log \ //http日志地址
--pid-path=/var/run/nginx.pid \ //pid地址
--lock-path=/var/run/nginx.lock \ //lock锁地址
--user=nginx \ //配置用户
--group=nginx \ //配置用户组
--with-http_ssl_module \ //配置ssl模块
--with-http_stub_status_module \ //配置http模块
make && make install //编译、安装
1.1.4:测试启动:
nginx //启动nginx
ss -nlt //查看端口
1.1.5:测试访问:
curl -I 127.0.0.1 //测试访问
1.1.6:脚本
/etc/init.d/nginx 脚本,方便调用:
vi /etc/init.d/nginx //创建脚本
脚本内容:
#!/bin/sh
#
# nginx Startup script for nginx
#
# chkconfig: - 85 15
# processname: nginx
# sbin-path: /usr/sbin/nginx
# config: /etc/nginx/nginx.conf
# conf-path: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# error-log-path: /home/zabbix/tools/nginx/nginx-1.10.1/log/error.log
# http-log-path: /home/zabbix/tools/nginx/nginx-1.10.1/log/access.log
# lock-path: /var/run/nginx.lock
# user: nginx
# group: nginx
# description: nginx is an HTTP and reverse proxy server
#
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop nginx
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
if [ -L $0 ]; then
initscript=`/bin/readlink -f $0`
else
initscript=$0
fi
sysconfig=`/bin/basename $initscript`
if [ -f /etc/sysconfig/$sysconfig ]; then
. /etc/sysconfig/$sysconfig
fi
nginx=${NGINX-/usr/sbin/nginx}
prog=`/bin/basename $nginx`
conffile=${CONFFILE-/etc/nginx/nginx.conf}
lockfile=${LOCKFILE-/var/lock/subsys/nginx}
pidfile=${PIDFILE-/var/run/nginx.pid}
SLEEPMSEC=${SLEEPMSEC-200000}
UPGRADEWAITLOOPS=${UPGRADEWAITLOOPS-5}
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon --pidfile=${pidfile} ${nginx} -c ${conffile}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} ${prog}
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
killproc -p ${pidfile} ${prog} -HUP
RETVAL=$?
echo
}
upgrade() {
oldbinpidfile=${pidfile}.oldbin
configtest -q || return
echo -n $"Starting new master $prog: "
killproc -p ${pidfile} ${prog} -USR2
echo
for i in `/usr/bin/seq $UPGRADEWAITLOOPS`; do
/bin/usleep $SLEEPMSEC
if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then
echo -n $"Graceful shutdown of old $prog: "
killproc -p ${oldbinpidfile} ${prog} -QUIT
RETVAL=$?
echo
return
fi
done
echo $"Upgrade failed!"
RETVAL=1
}
configtest() {
if [ "$#" -ne 0 ] ; then
case "$1" in
-q)
FLAG=$1
;;
*)
;;
esac
shift
fi
${nginx} -t -c ${conffile} $FLAG
RETVAL=$?
return $RETVAL
}
rh_status() {
status -p ${pidfile} -b ${nginx} ${nginx}
}
# See how we were called.
case "$1" in
start)
rh_status >/dev/null 2>&1 && exit 0
start
;;
stop)
stop
;;
status)
rh_status
RETVAL=$?
;;
restart)
configtest -q || exit $RETVAL
stop
start
;;
upgrade)
rh_status >/dev/null 2>&1 || exit 0
upgrade
;;
condrestart|try-restart)
if rh_status >/dev/null 2>&1; then
stop
start
fi
;;
force-reload|reload)
reload
;;
configtest)
configtest
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|upgrade|reload|status|help|configtest}"
RETVAL=2
esac
exit $RETVAL
1.1.7:脚本赋予执行权限:
chmod +x /etc/rc.d/init.d/nginx
1.1.8:启动、关闭、查看状态
./nginx start 或 nginx //启动
./nginx stop 或 kill -9 pid //关闭
./nginx status 或 ps -ef|grep nginx //查看状态
1.2 PHP 安装及Nginx 配置
1.2.1:sohu镜像下载
wget http://mirrors.sohu.com/php/php-5.6.10.tar.gz
1.2.2:安装依赖包
确保安装之前有安装gd,png,curl,xml等等lib开发库。如果不确定,执行以下命令:
yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y
1.2.3:编译安装PHP 5.6.10
PHP 安装参数:对于 zabbix,下面的模块要特别留意加上:
extend parameter
bcmath --enable-bcmath
mbstring --enable-mbstring
sockets --enable-sockets
gd --with-gd
libxml --with-libxml=/usr/local
xmlwriter 同上
xmlreader 同上
ctype 默认支持
session 默认支持
gettext 默认支持
以下参数支持,ftp,图片函数,pdo等支持,因为使用了php自带的mysqlnd,所以不需要额外安装mysql的lib库了.如果你是64位系统,参数后面加上–with-libdir=lib64,如果不是可以跳过。
可参考以下参数:
./configure --prefix=/usr/local/php-5.6.10 \
--with-config-file-path=/usr/local/php-5.6.10/etc --with-bz2 --with-curl \
--enable-ftp --enable-sockets --disable-ipv6 --with-gd \
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
--with-freetype-dir=/usr/local --enable-gd-native-ttf \
--with-iconv-dir=/usr/local --enable-mbstring --enable-calendar \
--with-gettext --with-libxml-dir=/usr/local --with-zlib \
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd \
--enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
make && make install
1.2.4:配置php
为php提供配置文件:
[root@zabbix php-5.6.10]# cp php.ini-production /usr/local/php-5.6.10/etc/php.ini
1.2.5:修改配置文件
打开 php.ini 配置文件,修改如下参数为如下值,否则 zabbix 安装不了。
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = PRC
1.2.6:为php-fpm提供配置文件:
[root@zabbix php-5.6.10]# cp /usr/local/php-5.6.10/etc/php-fpm.conf.default /usr/local/php-5.6.10/etc/php-fpm.conf
1.2.7:为php-fpm提供SysV init脚本
[root@zabbix php-5.6.10]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@zabbix php-5.6.10]# chmod +x /etc/init.d/php-fpm
1.2.8:编辑php-fpm的配置文件:
vi /usr/local/php-5.6.10/etc/php-fpm.conf
1.2.9:配置fpm的相关选项
为你所需要的值,并启用pid文件(如下最后一行)
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php-5.6.10/var/run/php-fpm.pid
1.2.10:启动php-fpm:
service php-fpm start
1.2.11:验证启动
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
ps aux | grep php-fpm
1.2.12:验证套接字
默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。
netstat -tnlp | grep php-fpm
1.3 MySQL 安装
1.3.1:安装 mysql-5.1
//下载mysql的repo源
yun https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm
//安装mymysql57-community-release-el6-11.noarch.rpm包,安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo
rpm -ivh mysql57-community-release-el6-11.noarch.rpm
//安装mysql
yum install mysql-server mysql-client
//启动mysql
service mysqld start
1.3.2:修改root密码
$ mysql -uroot
//mysql5.6版本修改密码sql
mysql>set password for 'root'@'localhost' = password('root123456');
//mysql5.7版本修改密码sql
mysql>set password for 'root'@'localhost' = password('root123456');
mysql> exit;
1.3.3:登录mysql
mysql -u root -p
注:如果报ERROR 1045 (28000),参考《CentOS安装MySql遇到的问题》
二、zabbix 服务端安装
zabbix 进程构成
默认情况下 zabbix 包含 5 个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_s ender、zabbix_server,另外一个 zabbix_java_gateway 是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。
zabbix_agentd
客户端守护进程,此进程收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等
zabbix_get
zabbix 工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令。通常用户排错。例如在 server 端获取不到客户端的内存数据,我们可以使用 zabbix_get 获取客户端的内容的方式来做故障 排查。
zabbix_sender
zabbix 工具,用于发送数据给 server 或者 proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix 超时。于是我们在脚本执行完毕之后,使用 sender 主动提交数据。
zabbix_server
zabbix 服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_jav a_gateway 的数据最终都是提交到 server
备注:当然不是数据都是主动提交给 zabbix_server,也有的是 server 主动去取数据。
zabbix_proxy
zabbix 代理守护进程。功能类似 server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到 server 里。
zabbix_java_gateway
zabbix2.0 之后引入的一个功能。顾名思义:Java 网关,类似 agentd,但是只用于 Java 方面。需要特别注 意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者 proxy。
2.1 下载安装 zabbix
所有版本下载地址:http://www.zabbix.com/download.php
[root@zabbix ~]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.3/zabbix-3.4.3.tar.gz
# tar -xzvf zabbix-3.4.3.tar.gz
# cd zabbix-3.4.3
# ./configure --prefix=/usr/local/zabbix-3.4.3/ --enable-server \
--enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
# make
# make install
注,这里没有指定配置文件的位置,默认是 PREFIX/etc,在这里即是 /usr/local/zabbix-3.4.3/etc/zabbix_server.conf,如果要指定其他位置,使用 –sysconfdir=DIR 进行指定
在 zabbix server 一般充当两个角色:server、angent,所以上面的配置参数也同时加上了–enable-agent。 备注:请安装好 MySQL,snmp,curl 开发库。
yum install mysql-devel net-snmp-devel libcurl-devel
2.2 创建用户
为了安全考虑 zabbix 只使用普通用户运行,假如你当前用户叫 ws ,那么你运行他,他便使用 ws 身份运行。 但是如果你在 root 环境下运行 zabbix,那么 zabbix 将会主动使用 zabbix 用户来运行。但是如果你的系统没有 名叫 zabbix 的用户,你需要创建一个用户,如下:
# groupadd zabbix
# useradd -g zabbix zabbix
2.3 初始化数据库
zabbix server 与 proxy 需要数据库,angent 不需要。尤其要注意的是 proxy 只需要导入一个 sql 文件,而 server 一共要导入 3 个 sql 文件。
# mysql -uroot -proot123456 //登录数据库
mysql> CREATE DATABASE zabbix DEFAULT CHARSET utf8; //创建zabbix数据库
//将sql导入到zabbix数据库(/home/zabbix/tools/zabbix/zabbix-3.4.3为zabbix解压地址;zabbix:数据库;)
# mysql -uroot -proot123456 -D zabbix < /home/zabbix/tools/zabbix/zabbix-3.4.3/database/mysql/schema.sql
# mysql -uroot -proot123456
mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------------+
| Tables_in_zabbix |
+-----------------------+
| acknowledges |
| actions |
| alerts |
...
| valuemaps |
+-----------------------+
108 rows in set (0.00 sec)
备注:创建数据库请别忘记加 default charset utf8,有可能会导致你出现中文乱码问题,具体问题请查看《zabbix 中文乱码解决方法》
如果你仅仅是初始化 proxy 的数据库,那么够了。如果初始化 server,那么接着导入下面两个 sql
# mysql -uroot -proot123456 -D zabbix < /home/zabbix/tools/zabbix/zabbix-3.4.3/database/mysql/images.sql
# mysql -uroot -proot123456 -D zabbix < /home/zabbix/tools/zabbix/zabbix-3.4.3/database/mysql/data.sql
为 zabbix 创建一个专用的账户:
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; //创建zabbix用户,密码为zabbix,并且授权到zabbix.*
mysql> FLUSH PRIVILEGES; //刷新权限相关表
注:如果创建用户并授权报错
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决方法:
mysql> SET PASSWORD = PASSWORD('root');
2.4 配置 zabbix
2.4.1:配置 zabbix_server 配置文件:
# vi /usr/local/zabbix-3.4.3/etc/zabbix_server.conf
DBHost=localhost
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
注,zabbix 日志文件位置也在该文件中配置,默认为 LogFile=/tmp/zabbix_server.log。启动出错时可查看该日志。
2.4.2:启动 zabbix server
# /usr/local/zabbix-3.4.3/sbin/zabbix_server
默认端口 10051
# ss -nlt
三、zabbix 客户端安装配置
3.1 下载安装客户端
所有版本下载地址:http://www.zabbix.com/download.php,可以直接下载已经编译好的二进制文件,或者
也可以源码安装。
刚才安装 zabbix 服务端的时候已经使用 –enable-agent 选项同时安装了客户端,这里就不用再安装了。
只编译安装 zabbix 客户端:
./configure --enable-agent
在上面的下载页中官方也提供编译好的 zabbix agents,解压后可以直接使用,可以选择对应平台的、对应版本直接下载。
比如下载 zabbix-3.4.3 版,Linux 2.6 amd64 的版本:
wget https://www.zabbix.com/downloads/3.4.0/zabbix_agents_3.4.0.aix7_1.power.tar.gz
解压:
# mkdir /usr/local/zabbix_agents
# tar -xf zabbix_agents_3.4.3.linux2_6.amd64.tar.gz -C /usr/local/zabbix_agents/
# ls /usr/local/zabbix_agents
bin conf sbin
这种方式安装的 zabbix agents 要求把配置文件 zabbix_agentd.conf 放到 /usr/local/etc 目录下。
3.2 客户端配置
客户端配置文件为:/usr/local/zabbix-3.4.3/etc/zabbix_agentd.conf
# vi /usr/local/zabbix-3.4.3/etc/zabbix_agentd.conf
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
其中 Server 和 ServerActive 都指定 zabbixserver 的 IP 地址,不同的是,前者是被动后者是主动。也就是说 S erver 这个配置是用来允许 127.0.0.1 这个 ip 来我这取数据。而 serverActive 的 127.0.0.1 的意思是,客户端 主动提交数据给他。
其他主机安装客户端记得添加 zabbix 用户。
3.3 启动客户端
[root@zabbix etc]# /usr/local/zabbix-3.4.3/sbin/zabbix_agentd
默认端口 10050
四、zabbix 管理网站配置
4.1 拷贝前端文件
[root@zabbix etc]# mkdir -pv /data/logs/nginx
mkdir: created directory `/data'
mkdir: created directory `/data/logs'
mkdir: created directory `/data/logs/nginx'
[root@zabbix etc]# mkdir -pv /data/site/llj.ws.com/zabbix
mkdir: created directory `/data/site'
mkdir: created directory `/data/site/llj.ws.com'
mkdir: created directory `/data/site/llj.ws/zabbix'
//复制文件,将frontends/php/*复制到/data/site/llj.ws.com/zabbix/(/home/zabbix/tools/zabbix/zabbix-3.4.3为zabbix解压目录)
[root@zabbix etc]# cp -r /home/zabbix/tools/zabbix/zabbix-3.4.3/frontends/php/* /data/site/llj.ws.com/zabbix/
[root@zabbix etc]# chown -R zabbix.zabbix /data/site/llj.ws.com/zabbix/
4.2 配置虚拟主机
[root@zabbix zabbix]# cat /etc/nginx/nginx.conf
worker_processes 1;
events {
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"';
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
access_log /data/logs/nginx/llj.ws.com.access.log main;
index index.html index.php index.html;
root /data/site/llj.ws.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ ^(.+.php)(.*)$ {
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
}
4.3 在线配置 zabbix
访问浏览器测试:
http://192.168.209.130/zabbix
4.3.1 欢迎界面
4.3.2 php 需求检查
4.3.3 MySQL 配置
4.3.4 zabbix 服务端详细信息
4.3.5 zabbix 安装前信息列表
4.3.6 安装完成
错误页面:
手动下载配置文件,放到 /data/site/llj.ws.com/zabbix/conf/ 目录下,Retry 一下
成功页面:
4.3.7 登陆 zabbix
五、启动服务
启动nginx
./nginx start 或 nginx
启动php
service php-fpm start
启动mysql
service mysqld start
启动zabbix_server
/usr/local/zabbix-3.4.3/sbin/zabbix_server
启动zabbix_agentd
/usr/local/zabbix-3.4.3/sbin/zabbix_agentd
禁止防火墙
service iptables stop