Zabbix是什么
Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。
Zabbix 是一个企业级的分布式开源监控方案。
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。
以上是zabbix官方文档的原文介绍。
更多zabbix的特性,请参考zabbix的官网。https://www.zabbix.com/
官方文档,3.4版本的文档已经有中文版本了。https://www.zabbix.com/documentation/3.4/zh/manual/introduction/features
下面是CentOS 7 + LNMP + zabbix 3.0 LST版演示
为什么我要选择zabbix 3.0 LST这个比较旧的版本,而不是最新版本。因为这个是LST(Long-Term Support)版本,即长期支持版本。相对来说,支持的时间比较长,也比较稳定。现在最新的版本已经是3.4了。
0. 环境
zabbix server端: 192.168.4.243,主机名:L3;一般server端也会安装zabbix agent,因为zabbixe server本身使用的mysql也需要被监控。
zabbix agent端(被监控的主机): 192.168.4.242,主机名:L2
zabbix server站点目录:/data/website/zabbix/
1. 安装mysql或mariadb
(略)
2. 安装Nginx
下载,解压
cd /usr/local/src
wget http://nginx.org/download/nginx-1.9.15.tar.gz
tar -zxvf nginx-1.9.15.tar.gz
安装依赖,编译安装
yum -y install mysql-devel
cd nginx-1.9.15
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre
make && make install
创建启动脚本,并把附件脚本放到 /etc/init.d/ 下
vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
修改nginx,支持php
vim /usr/local/nginx/conf/nginx.conf
找到并修改以下代码
location / {
root /data/website/zabbix; #根据网站目录设置
index index.php;
}
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/website/zabbix$fastcgi_script_name;
include fastcgi_params;
}
以上的代码由server {}
包含的,要把server及一对{}的注释去掉,注意对应的关系。
启动
chmod 777 /etc/init.d/nginx
chkconfig nginx on
service nginx start
3. 安装PHP
安装依赖包
yum -y install beecrypt beecry-devel curl curl-devel freetype
freetype-devel fontconfig fontconfig-devel gettext gettext-devel
ImageMagick ImageMagick-devel mingw32-iconv.noarch libmcrypt
libmcrypt-devel libpng libpng-devel libxml2 libxml2-devel libxslt
libxslt-devel mhash mhash-devel mcrypt zlib zlib-devel gd gd-devel
libjpeg libjpeg-devel pcre pcre-devel openldap openldap-devel
下载,解压
cd /usr/local/src
wget http://cn2.php.net/distributions/php-7.1.8.tar.bz2
tar -jxvf php-7.1.8.tar.bz2
编译
cd php-7.1.8/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/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 --enable-dom --enable-xml
--enable-fpm --with-libdir=lib64 --enable-bcmath --with-ldap
make && make install
配置php
cp /usr/local/src/php-7.1.8/php.ini-production /usr/local/php/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 /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
chkconfig php-fpm on
service php-fpm start
创建zabbix server的站点
mkdir -p /data/website/zabbix
chmod +w /data/website/zabbix
vim /data/website/zabbix/index-test.php
内容如下:
<?php phpinfo();?>
重载nginx
service nginx reload
这时,在页面上面访问 http://192.168.4.243/index-test.php 有PHP相关信息说明配置已搞定。
也可以/usr/local/php/sbin/php-fpm -t
--测试php运行状态
4.安装zabbix server
官方安装文档:https://www.zabbix.com/documentation/3.0/manual/installation/install
下载,解压
cd /usr/local/src
wget --no-check-certificate https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.10/zabbix-3.0.10.tar.gz
tar -zxvf zabbix-3.0.10.tar.gz
编译
yum install -y net-snmp-devel curl-devel
cd zabbix-3.0.10
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
根据官方文档,加了--enable-agent
参数,会把zabbix_get和zabbix_sender都安装。
Command-line utilities zabbix_get and zabbix_sender are compiled if --enable-agent option is used.
所以如果在被监控主机(客户端)上安装agent编译为:./configure --prefix=/usr/local/zabbix --enable-agent
客户端安装agent也需要建立zabbix用户组和用户。
由于server端也要监控,所以192.168.4.243也安装了zabbix agent。
建立zabbix用户组和用户
groupadd zabbix
useradd -g zabbix zabbix
登录mysql账户,创建zabbix数据库
mysql -uroot -p
官网文档创建数据库时指定了排序规则utf8_bin,这里不使用
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to ‘zabbix’@‘localhost’ identified by 'zabbix123';
mysql> quit
cd /usr/local/src/zabbix-3.0.10/database/mysql/
mysql -uzabbix -pzabbix123 -Dzabbix < schema.sql
mysql -uzabbix -pzabbix123 -Dzabbix < images.sql
mysql -uzabbix -pzabbix123 -Dzabbix < data.sql
把zabbix server的前端页面复制到zabbix站点下
cp -rp /usr/local/src/zabbix-3.0.10/frontends/php/* /data/website/zabbix
chown -R zabbix:zabbix zabbix/
创建zabbix的data文件夹(与mysql的data文件类似,用来存放log和pid文件)
mkdir -p /data/zabbix
chown -R zabbix:zabbix /data/zabbix
配置zabbix server
vim /usr/local/zabbix/etc/zabbix_server.conf
# 配置以下内容:
LogFile=/data/zabbix/zabbix_server.log
PidFile=/data/zabbix/zabbix_server.pid
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
DBPort=3306
Timeout=4
LogSlowQueries=3000
检查
egrep -v '^#|^$' /usr/local/zabbix/etc/zabbix_server.conf
配置zabbix agent
vim /usr/local/zabbix/etc/zabbix_agentd.conf
# 配置以下内容:
PidFile=/data/zabbix/zabbix_agentd.pid
LogFile=/data/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=127.0.0.1
Timeout=10
检查
egrep -v '^#|^$' /usr/local/zabbix/etc/zabbix_agentd.conf
复制启动脚本到/etc/init.d/下
cp /usr/local/src/zabbix-3.0.10/misc/init.d/tru64/* /etc/init.d/
修改启动脚本
vim /etc/init.d/zabbix_server
源码安装需要在 #!/bin/sh 后加入如下两行注释,注意要行前要加“#”,否则chkconfig会显示不支持
# chkconfig: - 95 95
# description: Zabbix Server
DAEMON=/usr/local/zabbix/sbin/zabbix_server
vim /etc/init.d/zabbix_agentd
源码安装需要在 #!/bin/sh 后加入如下两行注释,注意要行前要加“#”,否则chkconfig会显示不支持
# chkconfig: - 86 14
# Description: Zabbix agent
DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
修改为可执行
chmod a+x /etc/init.d/zabbix_server
chmod a+x /etc/init.d/zabbix_agentd
启动,server默认端口10051;agent默认端口10050
service zabbix_server start
service zabbix_agentd start
检查
ps aux | grep zabbix
查看有没有进程。
ls /data/zabbix/
查看log和pid文件有没有生成。
vim /data/zabbix/zabbix_server.pid
进程号是否一致。
检查 tail -f zabbix_server.log
启动日志有没有正常启动或报错。
同理,检查agent。
加入开机自启动
chkconfig --level 2345 zabbix_server on
chkconfig --level 2345 zabbix_agentd on
5. 配置zabbix 站点
修改php.ini的参数
vim /usr/local/php/etc/php.ini
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai
检查有没有问题(命令不能转行)
egrep 'max_execution_time|memory_limit|post_max_size|upload_max_filesize|max_input_timealways_populate_raw_post_data|Asia/Shanghai' /usr/local/php/etc/php.ini
重启php服务
service php-fpm restart
zabbix 站点页面设置
打开http:/192.168.4.243可看到zabbix web前端的一些验证,如果参数配置有问题,重复第5步修改。最后会一步会生成一个zabbix.conf.php文件, 自动放在zabbix server站点/data/zabbix/conf/目录下。如果提示无权限操作,可下载该文件把指定目录下,也可手动创建该文件。
6. 登录zabbix server站点
默认账号是admin,密码是zabbix。注意:在创建数据库时,按照官方的文档是加了collate utf8_bin,会区分大小写。官方文档:https://www.zabbix.com/documentation/3.0/manual/appendix/install/db_scripts
7. 在agent端(192.168.4.242)
安装zabbix agent
在被监控的主机上安装zabbix agent,可以用rpm安装,也可以使用源码安装。如果server端是源码安装的,建议agent端也用编译安装。
scp /usr/local/src/zabbix-3.0.10.tar.gz root@192.168.4.242:/usr/local/src/
yum install -y net-snmp-devel curl-devel
cd zabbix-3.0.10
./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
配置zabbix-aget
mkdir -p /data/zabbix
chown -R zabbix:zabbix /data/zabbix
# Server指允许这个IP来取数据,ServerActive是指主动提交数据的IP。Hostname为被监控的主机名。
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/data/zabbix/zabbix/zabbix_agentd.pid
LogFile=/data/zabbix/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.2.243
ServerActive=192.168.4.243:10051
Hostname=192.168.2.242
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
检查
egrep -v '^#|^$' /usr/local/zabbix/etc/zabbix_agentd.conf
建立zabbix用户组和用户
groupadd zabbix
useradd -g zabbix zabbix
启动,默认端口为10050
复制启动脚本到/etc/init.d/下
cp /usr/local/src/zabbix-3.0.10/misc/init.d/tru64/zabbix_agentd /etc/init.d/
修改启动脚本
vim /etc/init.d/zabbix_agentd
源码安装需要在 #!/bin/sh 后加入如下两行注释,注意要行前要加“#”,否则chkconfig会显示不支持
# chkconfig: - 86 14
# Description: Zabbix agent
DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
修改为可执行
chmod a+x /etc/init.d/zabbix_agentd
加入开机自启动
chkconfig --level 2345 zabbix_agentd on
编译安装加入到系统开机自动运行的设置
Nginx开机自动运行实现方法
http://professor.blog.51cto.com/996189/1579791/
Zabbix agentd和 Zabbix Server 开机自动运行实现方法
http://os.51cto.com/art/201006/203193.htm
- 复制 zabbix 源程序的启动脚本到 /etc/init.d 目录下
cp /usr/local/src/zabbix-3.xxxx/misc/init.d/tru64/zabbix_server /etc/init.d/
- 修改 /etc/init.d/zabbix_service,修改文件路径为make install路径。
SERVICE="Zabbix server"
DAEMON=/usr/local/zabbix/sbin/zabbix_server
PIDFILE=/var/run/zabbix_server.pid
- 增加可执行的权限
chmod a+x /etc/init.d/zabbix_server
- 修改启动脚本使其支持 redhat 的 chkconfig,分别在两个脚本的
#!/bin/sh
后加入如下两行注释,注意要行前要加“#”
vim /etc/init.d/zabbix_server
# chkconfig: - 95 95
# description: Zabbix Server
如果是agent
vim /etc/init.d/zabbix_agentd
# chkconfig: - 86 14
# Description: Zabbix agent
- 使用 chkconfig 将其加入 init 的启动服务
chkconfig --level 2345 zabbix_server on
- 检查
chkconfig --list | grep zabbix
- 重启系统可以验证是否自启动成功
reboot 后 ps aux | grep zabbix
扩展
源码安装zabbix server,通过vim /etc/init.d/zabbix_server
查看pid文件默认是放在/tmp/zabbix_server.pid
的。这个启动/关闭zabbix server的脚本是通过pid文件去找到进程号,然后直接kill进程的。如果pid文件不存在、目录不正常或启动用户对pid文件的操作权限不足,会造成service zabbix_server stop/stop/restart
命令无法启动/关闭zabbix server。
生成log和pid文件由/usr/local/zabbix/etc/zabbix_server.conf
文件指定,而启动/关闭去读取 pid文件,则由启动/关闭脚本指定。所以如果要修改log和pid文件的默认/tmp下的路径/data/zabbix,需要修改.conf和启动/关闭脚本文件,显式指定pid的路径,并且保证写入的路径/data/zabbix是有权限的。最好是把/data/zabbix文件夹设置为系统用户zabbix所有。参考mysql的配置也是这样的,会把/data/mysql文件夹设置为系统用户mysql所有。
log和pid文件放到默认的/tmp文件夹下,虽然说权限没有问题,而且大部分情况下也是正常使用的。但由于/tmp是“公共”文件夹,其他程序或人员有可能把这里的文件“误”删了,会导致一些意外的问题。指定其他文件夹,注意权限问题,必要时,可以切换到运行用户(运行用户一般不能登录Linux,另外再设置可登录)去测试权限是否足够。