一直使用cacti来监控公司的服务器,使用中发现cacti局限性还是比较大的,对于监控网络设备出图比较好。但对于服务,更细致的自定义监控却不是很友善。在cacti上集成了nagios用于监控服务,使用起来比较麻烦,特别是出图。对于zabbix只做过简单的了解,听说部署简单,自动发现功能强大。安装测试试用一下。

安装环境
CentOS7.4,Nginx1.12.2,MariaDB10.2,PHP7.2,Zabbix3.4.7
一、LNMP环境搭建
1、安装Linux(CentOS7.4)
最小化安装,配置IP地址,主机名,安装vim、bash-completion等

2、安装Nginx(1.12.2)

# wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm  #安装nginx官方源

或者手动创建yum源:http://nginx.org/en/linux_packages.html

# vim /etc/yum.repos.d/nginx.repo        #手动创建nginx yum安装源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
#其中baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/,把”OS”替换成”rhel”或”centos”,把”OSRELEASE”替换成”6”或”7”,用于6.x或7.x版本。
# yum install nginx             #安装nginx,默认为nginx-1.12.2
# systemctl start nginx
# systemctl enable nginx
# firewall-cmd --permanent --add-service=http --zone=public
# firewall-cmd --reload

打开http://10.100.3.66,将看到以下内容,说明nginx安装成功。
LNMP环境下Zabbix3.4安装和配置_第1张图片
3、安装MySQL(mariadb-10.2)

# vim /etc/yum.repos.d/mariadb.repo #通过yum方式安装
输入以下内容

# MariaDB 10.2 CentOS repository list - created 2018-03-06 07:26 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

安装MySQL:可通过https://downloads.mariadb.org/mariadb/repositories/地址获取mariadb源

# yum install MariaDB-server MariaDB-client
使用yum源安装,下载速度比较慢,可通过以下地址下载RPM包安装
http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.13/yum/rhel74-amd64/rpms/
方法:

#先yum安装较小的依赖包:
# yum install lsof rsync perl-DBI boost-program-options jemalloc MariaDB-shared
#再rpm下载安装较大的包:
# rpm -ivh galera-25.3.23-1.rhel7.el7.centos.x86_64.rpm
# rpm -ivh MariaDB-10.2.13-centos74-x86_64-client.rpm
# rpm -ivh MariaDB-10.2.13-centos74-x86_64-server.rpm
#启动和配置MySQL:
# systemctl start mariadb
# mysql_secure_installation     #根据提示配置密码和安装选项
# systemctl restart mariadb     #配置完成后重启MySQL

4、安装PHP(7.2)
源码安装方法:http://php.net/get/php-7.2.3.tar.gz/from/a/mirror
yum安装方法:https://webtatic.com/packages/php72/

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 或yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #yum源
# yum install php72w php72w-devel php72w-fpm php72w-gd php72w-mbstring php72w-mysql
# systemctl start php-fpm
# systemctl enable php-fpm
# php –v

LNMP环境下Zabbix3.4安装和配置
netstat -tln|grep 9000
LNMP环境下Zabbix3.4安装和配置
5、配置Nginx

# vim /etc/php-fpm.d/www.conf #修改php-fpm配置文件,把apache改为nginx
LNMP环境下Zabbix3.4安装和配置_第2张图片
# vim /etc/nginx/conf.d/default.conf #配置location,在index中添加index.php。以支持index.php的首页:
LNMP环境下Zabbix3.4安装和配置
配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容:
LNMP环境下Zabbix3.4安装和配置_第3张图片
默认配置,把.php$改为..php(\/.)*$(可省略),把root中的html改为/usr/share/nginx/html,把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
保存后,重启nginx服务
systemctl restart nginx

6、配置php

# vim /etc/php.ini      #修改PHP配置文件
expose_php = Off        #禁止显示php版本的信息
short_open_tag = On     #取消前面的;,修改为On。表示支持php短标签
#以下为zabbix配置要求
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai

7、测试
通过http://10.100.3.66/phpinfo.php查看php模块是否正常,测试后删除

# vim /usr/share/nginx/html/phpinfo.php #在首页目录新增,测试php
LNMP环境下Zabbix3.4安装和配置
通过http://10.100.3.66/test.php查看mysql数据库连接是否正常,测试后删除

# vim test.php #新增test.php(名字随意),测试mysql连接
LNMP环境下Zabbix3.4安装和配置
注:mysql_connect扩展自 PHP 5.5.0 起已废弃,改用mysqli或pdo_mysql,参阅:http://php.net/manual/zh/mysqlinfo.api.choosing.php
在开启SELinux情况下,php连接mysql测试会失败。

# getsebool -a |grep httpd_can_network      #检查httpd进程的许可模式
可以看到httpd_can_network_connect --> off
# setsebool -P httpd_can_network_connect=1  #开启连接后即可测试正常

二、安装Zabbix
1、安装zabbix软件包 通过yum源安装:https://www.zabbix.com/download 官方中文手册:https://www.zabbix.com/documentation/3.4/zh/start 配置yum安装源:

# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
安装Zabbix服务器,前端,代理agent:
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-agent

2、配置数据库

# mysql -uroot -p       #输入密码,登录mysql
> create database zabbix character set utf8 collate utf8_bin;   #创建数据库
#创建mysql用户zabbix并授权:
> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
> flush privileges;
#导入数据库初始结构和数据:
# zcat /usr/share/doc/zabbix-server-mysql-3.4.7/create.sql.gz |mysql -uzabbix -p zabbix             #根据提示输入数据库用户zabbix的密码
#配置数据库账号密码:
# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

3、配置SELinux
在开启SELinux情况下,zabbix-server启动会失败

# getsebool -a|grep httpd_can_connect
可以看到httpd_can_connect_zabbix --> off
# setsebool -P httpd_can_connect_zabbix on
# setsebool -P httpd_can_network_connect_db on

但只修改以上规则还不够,需要测试的太多。直接关闭得了。
关闭SELilunx:

# vim /etc/selinux/config
SELINUX=disabled    #重启系统

4、检查中文是否开启(默认开启)

# vim /usr/share/zabbix/include/locales.inc.php
  'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => true],

5、启动

# cp -r /usr/share/zabbix/ /usr/share/nginx/html/
# chown -R zabbix:zabbix /etc/zabbix/
# chown -R zabbix:zabbix /usr/share/nginx/
# chown -R zabbix:zabbix /usr/lib/zabbix/
# chmod -R 755 /etc/zabbix/web/
# chmod -R 777 /var/lib/php/session/
# systemctl start zabbix-server
# systemctl enable zabbix-server
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
# netstat -anpl|grep 10051      #查看端口是否起来,zabbix_agent端口为10050

LNMP环境下Zabbix3.4安装和配置
安装中遇到的问题:
无法打开http://10.100.3.66/zabbix/setup.php,报以下错误:
1>、FastCGI sent in stderr: “PHP message: PHP Warning:
require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream:
Permission denied in
/usr/share/nginx/html /zabbix/include/classes/core/ZBase.php on line 269
权限问题,路径:/etc/zabbix/web
解决办法:chmod -R 755 /etc/zabbix/web/

2>、FastCGI sent in stderr: "PHP message: PHP Fatal error:
Uncaught Exception: Cannot start session. In
/usr/share/nginx/html/zabbix/include/classes/core/CSession.php:50
权限问题,路径:less /etc/php-fpm.d/www.conf
php_value[session.save_path] = /var/lib/php/session
解决办法:chmod -R 777 /var/lib/php/session/

6、配置Zabbix安装
打开http://10.100.3.66/zabbix,将自动跳转到安装界面:
LNMP环境下Zabbix3.4安装和配置_第4张图片
下一步,检查配置是否正确,全部OK即可。
LNMP环境下Zabbix3.4安装和配置_第5张图片
下一步,输入数据库密码
LNMP环境下Zabbix3.4安装和配置_第6张图片
下一步,输入Name,随意起
LNMP环境下Zabbix3.4安装和配置_第7张图片
确认配置是否正确
LNMP环境下Zabbix3.4安装和配置_第8张图片
下一步,提示无法创建配置文件
LNMP环境下Zabbix3.4安装和配置_第9张图片
从提供的下载链接中下载配置文件,然后上传到/etc/zabbix/web/即可,或修改web权限为web服务器启动用户可写的权限。

# cp zabbix.conf.php /etc/zabbix/web/
# chown zabbix.zabbix /etc/zabbix/web/zabbix.conf.php

再点击完成
LNMP环境下Zabbix3.4安装和配置_第10张图片
输入默认用户名Admin,密码zabbix,即可登录。
LNMP环境下Zabbix3.4安装和配置_第11张图片
LNMP环境下Zabbix3.4安装和配置_第12张图片
点击用户,可修改系统语言、主题、自动登录等选项
LNMP环境下Zabbix3.4安装和配置_第13张图片
Update后界面即变为中文的
LNMP环境下Zabbix3.4安装和配置_第14张图片
最后修改nginx主页,跳转到zabbix
vim /usr/share/nginx/html/index.html
LNMP环境下Zabbix3.4安装和配置_第15张图片
三、配置zabbix
监控zabbix服务器:
配置-->主机,选择zabbix server,启用主机。如下图,启动后ZBX显示为绿色。
LNMP环境下Zabbix3.4安装和配置_第16张图片
查看监控主机的信息:
监测中-->最新数据,如有以下告警,是因为PHP7.2版本中比较严格,count函数仅支持参数为数组, 非数组情况下将报警告。
LNMP环境下Zabbix3.4安装和配置
解决办法:

# vim /usr/share/nginx/html/zabbix/latest.php       #定位到104行
修改$singleHostSelected = (count($filter['hostids']) == 1);为:
$singleHostSelected = (count(array($filter['hostids'])) == 1);

刷新,就看不到告警信息了。
在过滤器中选择zabbix server主机,可以看到相关监控项:
LNMP环境下Zabbix3.4安装和配置_第17张图片
展开监控项,可以看到具体的监控内容。例如CPU:
LNMP环境下Zabbix3.4安装和配置_第18张图片
点击右边的图形,可以以图表形式展示:
LNMP环境下Zabbix3.4安装和配置_第19张图片
最下方汉字显示为乱码,是因为语言已经改为中文了,但字体识别不到,可以使用Windows系统里的字体。
解决办法:
在Windows系统中,打开控制面板-->字体,如下图:
LNMP环境下Zabbix3.4安装和配置_第20张图片
找到想使用的字体,如黑体(simhei.ttf,右键属性可查看),上传到Linux。
再复制到fonts目录:cp simhei.ttf /usr/share/nginx/html/zabbix/fonts/
再修改defines.inc.php文件:

# vim /usr/share/nginx/html/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME',   'graphfont');
define('ZBX_FONT_NAME', 'graphfont');

修改为:

define('ZBX_GRAPH_FONT_NAME',   'simhei');
define('ZBX_FONT_NAME', 'simhei');

刷新页面即可看到中文汉字了,如下图:
LNMP环境下Zabbix3.4安装和配置_第21张图片