企业级监控系统:Zabbix详细安装配置教程

Zabbix是一款开源并且完全免费的企业级系统监控软件,它拥有强大无比的各种监控功能,可以全方位监控你的服务器或是VPS系统运行状态。

首先各位别被企业级这几个字眼给唬住了,很多朋友可能一看到这种字眼就觉得,哇,这玩意儿不会特别难装吧!?其实我说句实在话,Zabbix安装还是挺简单的,倒是配置使用起来需要花一些时间,因为它有太多的功能,所以显的操作界面乱七八糟,初次使用的朋友可能会有点摸不着头脑。所以,LALA决定分两篇文章来写Zabbix,今天这一篇就是教大家如何安装和基本配置Zabbix。而后面会专门再写一篇Zabbix监控系统的教程。

熟悉我的人都知道,我不喜欢把一个教程写的繁琐和复杂。作为一个教程,我认为让看的人能够轻松看懂、轻松学会,那么这个教程就是一个好教程,所以,我每篇文章都尽量写的通俗易懂。

进入正题:

准备一台稳定的VPS或者独立服务器,系统选择CentOS7X64,使用Xshell以root用户的身份登录到你的机器内。

更新系统:

yum update

安装宝塔WEB面板:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

在面板安装完成后,我们使用宝塔面板安装一个LNMP环境,组件请务必按照如下图的版本号来选择:

未分类

这里,我们喝杯咖啡或者看看妹子都可以的,一定要等这个LNMP环境安装完成后,我们才能继续下一步的操作。

环境安装完成后,我们回到Xshell内,新建一个用户:

groupadd zabbix
useradd zabbix -g zabbix -s /sbin/nologin

安装EPEL源:

yum -y install epel-release

安装编译Zabbix需要的各种依赖和组件:

yum -y install net-snmp-devel fping

在root目录内下载Zabbix源码(在你的本地电脑也提前下载一份,待会会用到):

cd /root
wget https://excellmedia.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.7/zabbix-3.4.7.tar.gz

解压并进入到Zabbix目录内:

tar -zxvf zabbix-3.4.7.tar.gz
cd zabbix-3.4.7

编译:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

完成后如图所示:

未分类

安装:

make install

完成后如图所示:

未分类

现在回到宝塔WEB面板中,按如下图操作打开phpMyAdmin:

未分类

新建一个Zabbix数据库,请注意这个数据库的排序规则一定要是utf8_general_ci,如图所示:

未分类

接着我们导入zabbix-3.4.7/database/mysql目录下的数据库文件:

schema.sql
images.sql
data.sql

请一定依次按照1-3的顺序导入,如下图所示:

未分类

在phpMyAdmin内导入我们的数据库文件,如图所示:

未分类

将schema.sql、images.sql、data.sql都按照上图的方法导入到我们的Zabbix数据库中。确定都导入成功后,回到Xshell内。

编辑Zabbix的服务端配置文件:

vi /usr/local/etc/zabbix_server.conf

修改数据库名、数据库用户名、数据库用户对应的root密码,如图所示:

未分类

数据库的root密码在哪里查看?如下图所示:

未分类

接着修改Zabbix的客户端配置文件:

vi /usr/local/etc/zabbix_agentd.conf

将Server=127.0.0.1后面的IP修改成你的服务器或是VPS的公网IP,如图所示:

未分类

关闭CentOS7的防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

启动Zabbix的服务端和客户端:

zabbix_server
zabbix_agentd

查看运行状态:

ps -ef | grep zabbix_server
ps -ef | grep zabbix_agentd

确保都是正常运行的,如下图所示:

未分类

现在我们来安装Zabbix的WEB前端。

首先回到宝塔WEB面板中,点击如下图所示的按钮新建一个站点:

未分类

输入你的站点域名,然后点提交:

未分类

接着点击宝塔面板左侧的“软件管理”,找到对应的PHP版本设置,点击配置修改,按照如下图把max_input_time的值改成300:

未分类

回到Xshell内,复制Zabbix的前端程序文件到你的站点目录内:

cp -r /root/zabbix-3.4.7/frontends/php/* /www/wwwroot/你的站点`目录

此时通过浏览器,访问你的站点,不出意外的话可以看到Zabbix的安装界面了:

未分类

检测环境组件,这里需要注意的是往下拉会有一个PHPLDAP的Warning,PHP的LDAP扩展非必须安装,所以我们无视掉即可:

未分类

填写MySQL的数据库连接信息,这里和之前我们在zabbix_server.conf配置文件内填写的内容要一致:

未分类

填写站点名字,请注意上面的Host和Port不要做更改:

未分类

再次确认你之前填写的这些信息是否无误,没问题就点击Next step:

未分类

不出意外这里会报一个错误,所以这里我们将配置文件下载到本地:

未分类

回到宝塔面板中,将配置文件上传到我们的站点根目录下的conf目录内:

未分类

回到浏览器中,再次点击Finish,就安装完成了:

未分类

至此,Zabbix就安装完毕,接下来是进行一些简单的配置设置。

首先打开站点首页,出现登录界面:

未分类

默认的管理员账号:Admin
密码:zabbix

登录进去后,第一件事情就是把密码改了,然后把站点语言修改成中文:

未分类

接着Zabbix默认会给我们启用一个没密码的Guest,为了安全起见,我们需要把这个账号停用掉:

未分类

至此,Zabbix的安装和基本配置就完成了。

稍等一会儿,LALA会再开一篇文章专门来写Zabbix的监控使用方法。

Zabbix监控VPS主机详细教程

如果你还不知道或是不了解什么是Zabbix,可以先移步看看下面这篇文章:

企业级监控系统:Zabbix详细安装配置教程

在你初步了解并安装完Zabbix后,现在就可以跟着我的这篇文章来尝试使用Zabbix来监控自己的服务器或是VPS主机了。

进入正题:

我们先尝试监控宿主机,也就是安装Zabbix的这台机器。

点击-配置-主机-Zabbix server,如图:

未分类

在Agent代理程序的接口这里,将IP地址修改成我们的Zabbix服务器公网IP:

未分类

这样我们就完成了对宿主机的系统监控。在监测中-图形,选择对应名字的群组,然后选择对应的主机名,再选择要显示的图形,即可看到监控图表:

未分类

上图中我只是随便选择了一个CPU负载的图形,实际上可选的图形多的数不胜数,就比如这样:

未分类

再比如我们选择一个常用的,查看eth0网卡流量的图表:

未分类

以上,是我想让大家先稍微熟悉一下Zabbix的基本监控操作。

那么下面,我们该如何监控除宿主机以外的其他机器呢?

这里我用CentOS7做示范,在被监控的机器上我们需要安装Agentd客户端。

使用Xshell登录到你的被监控机器内,首先安装EPEL源:

yum -y install epel-release

安装监控所需的依赖组件(Zabbix监控Ping值、丢包率等必须安装fping):

yum -y install fping

一条命令即可安装完成Agentd:

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.7-1.el7.x86_64.rpm

注:更多其他系统的Agentd安装包可浏览:http://repo.zabbix.com/zabbix/3.4/

查找Agentd的配置文件:

find / -name zabbix_agentd.conf

编辑它:

vi /etc/zabbix/zabbix_agentd.conf

将Server=后面的IP地址修改成你的Zabbix服务端公网IP,如图所示:

未分类

最后启动Agentd:

zabbix_agentd

这样我们就在被监控的机器上安装好了客户端,那么下面就回到Zabbix的WEB界面内。

点击配置-主机-创建主机,如图所示:

未分类

填写主机名称、可见的名称以及选择一个合适的群组,然后在agent代理程序的接口这儿把IP地址修改成被监控机器的公网IP:

未分类

接着点击模版-选择链接指示器:

未分类

在弹出的新窗口内,我们可以看到各式各样的监控模版,这里假设LALA要监控Enoctus HKDC1 VPS的PING值和丢包率,我们就可以选择Template Module ICMP Ping,如图所示:

未分类

选择好了后,我们点击添加,确定链接指示器内有我们刚才选择的模版名后,再点击最下面的添加按钮,保存设置:

未分类

这样我们就把一台VPS主机加入到了Zabbix的监控列表中,此时Zabbix就在帮我们无时不刻的监控此VPS到Zabbix宿主机之间的Ping值、丢包率了。

但我们如何用图表的方式来查看监控的具体数据呢?这里我们就需要自己创建一个图形了,点击如图所示按钮:

未分类

右上角点击创建图形:

未分类

填写图形的名称,然后在监控项内点击添加按钮:

未分类

在弹出的新窗口中,我们可以看到之前添加的监控模版,都有哪些具体的监控项目,选择我们要显示在图形中的监控项目:

未分类

然后我们对图形的绘图风格进行适当的调整:

未分类

注:建议监控Ping值的时候,将ICMP response time的纵轴Y侧修改成:右。

然后我们就可以点击预览,来查看一下当前的图形显示状态:

未分类

这样,我们就配置好了一个监控Ping值、丢包率的监控项目。

同理,作为我们日常使用的话,除去添加一个监控Ping值、丢包率的模版外,还最常用到的必然是:Template OS Linux

方法一样,找到对应的模版名添加即可:

未分类

与之前不同的是,这个模版在添加完成后,会自动帮我们创建一些图形,而不再需要我们手动去添加。当然Zabbix也只是帮我们创建了一些最基本的图形:

未分类

如果你需要更多的图形,则还是需要手动添加,只不过这次可以添加的图形选择就很多了:

未分类

相信,你把这篇文章看到这里,就大概明白Zabbix添加监控某一个项目的具体方法了,无非流程就是这样:

1、在被监控的机器上安装Agentd客户端。

2、在Zabbix的WEB界面上创建主机,并填写被监控主机的IP地址。

3、使用Zabbix自带的模版,来添加监控项目。

4、绘制图形,用来显示监控项目的具体数据。

其实你理解后,就会发现操作起来很简单的,看,就只有4步。

但Zabbix作为一个企业级的监控软件,实际上可自定义的功能多的数不胜数,虽然内置的模版已经够强大了,但Zabbix并不局限于用模版来添加监控项目,实际上我们还可以自己手动来自定义某一个监控条件。

当然LALA不推荐各位使用接下来下面说的方法来监控,因为这些操作一般个人是根本使用不上的。

首先,我们点击监控项:

未分类

右上角创建监控项:

未分类

在这里有一个非常关键的键值:

未分类

点击选择,我们在新窗口中可以看到各式各样的“标准检测器”:

未分类

你们可以把“标准检测器”下面的这些键值理解成每一个键值都是一个监控项目,并且这些监控项目都是受高度DIY的,比如说监控的频率、时间、等等都是可以自定义的。

所以,这里我就点到为止,个人用户只是拿来监控VPS的话,根本不需要用到这些。当然如果你喜欢折腾,可以在这里尝试使用一下。

至此,我想你把文章看到这里,就应该基本知道该如何使用Zabbix来监控一个自己的项目了。现在让我们一起看看之前我们监控的Enoctus VPS各项数据展现如何。

网卡流量:

未分类

内存使用率:

未分类

CPU负载情况:

未分类

Ping值、丢包率情况:

未分类

空闲硬盘大小:

未分类

系统运行时间:

未分类

这里还有很多图形,就不一一列举了。在这里我想告诉大家的是,Zabbix还有一个强大的地方就在于图形的查看时间是可以自定义的,比如我上面的这些图形,有的是查看的1小时内的数据,有的是2小时内的数据,这里就用到了图形的缩放。那么Zabbix的缩放功能就在过滤器的下方。你们仔细看上面的几张图可以了解到。

至此,今天的教程就差不多结束了。

写在最后:

这里有一个Zabbix的小BUG,我觉得很有必要给大家提一下,顺带给大家一个修复办法。

如果你将Zabbix的WEB面板语言改成中文,那么图形内的中文会变成乱码,为何我文中的图形都没有乱码呢?因为我事先替换掉了Zabbix的WEB字体文件。

如何替换解决字体乱码?

1、找到你电脑系统内任何一款简体字(Windows/Fonts),把字体文件复制出来:

未分类

2、把字体文件上传到ZabbixWEB站点根目录下的fonts目录内,并把之前的字体重命名:

未分类

3、把我们刚上传的字体文件重命名为DejaVuSans.ttf:

未分类

如何关闭Agentd服务端?

查找Agentd进程PID:

ps -ef | grep zabbix_agentd

强制结束:

kill -9 进程PID

被监控机器无法正常和Zabbix的服务端通信?

关闭被监控机器内的防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

Zabbix监控(JVM):Tomcat

Zabbix3.4.0通过JVM监控Tomcat

一、安装zabbix

参考:
https://www.jianshu.com/p/5b6541681700

二、配置Tomcat JMX

编辑catalina.sh,加入如下配置

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #开启远程监控
-Dcom.sun.management.jmxremote.port=12345 #远程监控端口
-Dcom.sun.management.jmxremote.ssl=false #远程ssl验证为false
-Dcom.sun.management.jmxremote.authenticate=false #关闭权限认证
-Djava.rmi.server.hostname=192.168.9.74" #部署了tomcat的主机地址

重启tomcat

验证是否启动JMX监听成功

[root@localhost tomcat6]# lsof -i:12345
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    26944 root   18u  IPv6 4076076      0t0  TCP *:italk (LISTEN)

至此,Tomcat已经支持JMX.

三、配置zabbix_server

Zabbix通过JMX监控Tomcat的对应关系:
zabbix_server开启java poller, zabbx_java开启JavaGateway,端口为10052,Tomcat JMX开启12345提供性能数据。
数据获取:java pollerJavaGateway:10052Tomcat:12345.

zabbix_server:默认未启用JavaPollers,
启用JabaPollers,编辑/usr/local/zabbix/etc/zabbix_server.conf,加入三行代码:

JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5

重启zabbix_server.
zabbix_java:按照步骤一安装可直接启动zabbix_java(安装编译中带了–enable-java参数),
启动路径参考:/usr/local/sbin/zabbix_java/startup.sh
rpm包安装gateway,需要java,java-devel依赖

安装yum源:yum install -y http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
安装gateway:yum install -y  java  java-devel  zabbix-java-gateway 

检查启动情况

[root@portal zabbix_java]# lsof -i:10052
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    27021 root   12u  IPv6 5221678      0t0  TCP *:10052 (LISTEN)

Tomcat JMX:按照步骤二安装没问题可略过

四、zabbix监控端web界面配置

主机增加JMX接口

①进入后台,configuration(配置)->hosts(主机)->选择你的主机->找到这一项jmx interface(JMX接口) 点击add,输入对应的tomcat ip地址和jmx端口

②点击主机的模版选项,添加以下两个模板

[Template App Apache Tomcat JMX]
[Template App Generic Java JMX]

点击添加,然后更新。

zabbix中使用ICMP ping监控服务器是否存活

1、安装Fping

下载Fping安装包 http://www.fping.org/
http://www.fping.org/dist/fping-3.10.tar.gz

tar -zvxf fping-3.10.tar.gz
cd fping-3.10
./confingure
make
make install

2、设定fping程序的目录

fping的默认安装目录在usr/local/sbin下,而在zabbix_server.conf配置文件中fping程序的目录是/usr/sbin/,这里可以做链接文件或者修改zabbix_server.conf配置文件的FpingLocation的值,总之一个目的,让zabbix知道fping程序的位置。

3、更改fping程序的权限

zabbix运行时是以普通用户身份运行的,而普通用户是没有权限构建ICMP,因此需要给fping程序加上强制位setuid,让普通用户运行该程序时以root的身份运行,命令:chmod u+s /usr/local/sbin/fping

Zabbix之CentOS7.3下yum安装Zabbix3.5

一、Zabbix特点介绍

(此介绍来源于https://www.zabbix.com/documentation/3.4/zh/manual/introduction/features)

概述

Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。

数据收集

可用性和性能检查
支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控
自定义检查
按照自定义的间隔收集需要的数据
由Server/Proxy和agents执行

灵活的阀值定义

您可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值

高度可配置化的告警

可以根据升级计划,接收方和媒体类型来定制发送告警通知 * 使用宏变量可以使告警通知更有意义更高效 * 自动化动作包含执行远程命令

实时图表绘制

使用内置图表绘制功能可以将监控项的内容立即绘制成图表

Web监控功能

Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间

丰富的可视化选项

能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示
网络拓扑图
以仪表盘的样式展现自定义的展现和幻灯片
报告
监控资源的高级(业务)视图

历史数据存储

数据存储在数据库中
可配置历史数据
内置数据管理机制

配置简单

将被监控对象添加为主机
主机被创建用于监控,在数据库中是唯一存在的
应用模板来监控设备

使用模板

在模板中分组检查
模板可以关联其他模板

网络发现

自动发现网络设备
监控代理自动注册
发现文件系统,网络接口和SNMP OID值

简洁的Web界面

Web前端基于PHP
可从任何地方访问
你可以定制自己的操作方式
审核日志

Zabbix API

Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的

权限管理系统

安全用户认证
特定用户可以限制访问特定的视图

功能强大并易于扩展的监控代理

部署在被监控对象上
可以部署在Linux和Windows上

二进制代码

为了性能和更少内存的占用,用C语言编写
便于移植

为复杂环境准备

使用Zabbix proxy代理服务器,使得远程监控更简单

二、部署安装Zabbix

安装yum源

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

可以查看安装哪些组件

rpm -ql  zabbix-release

安装zabbix相关包

yum install zabbix-server-mysql -y
yum install zabbix-proxy-mysql -y
yum install zabbix-web-mysql -y
yum install zabbix-get -y
yum install zabbix-agent -y

说明:

zabbix-server-mysql:提供zabbix-server服务
zabbix-proxy-mysql:提供zabbix的代理服务,可以实现分布式监控,减轻zabbix-server的压力
zabbix-web-mysql:提供httpd服务
zabbix-get:提供检查是否能正确获取到zabbix的监控脚本key的监控值
zabbix-agent:提供zabbix-agent服务

三、安装MariaDB

配置MariaDB的yum源

vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://ipv4.mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://ipv4.mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

更新源

yum update

安装MariaDB

yum -y install MariaDB-server MariaDB-client

设置字符集

vim /etc/my.cnf.d/server.conf
[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

创建zabbix数据库和账户

mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> quit;

导入zabbix相关sql

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

zabbix-server 配置数据库地址 数据库 数据库用户 数据库密码

vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

启动zabbix-server(监听10051端口)

service zabbix-server start

设置开机启动

systemctl enable zabbix-server

zabbix的web配置

vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai

SELinux配置

setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db on

被监控机器zabbix-agent安装(被动模式监听10050端口,主动模式下不监听端口)

yum install zabbix-agent
service zabbix-agent start

上述完成后,访问http://192.168.217.20/zabbix/,安装web提示依次完成下面步骤

欢迎界面—>php需求检–>数据库配置—> zabbix服务端详细信息—>zabbix安装前信息列表—>安装完成—>Finish

访问:http://192.168.217.20/zabbix/index.php开始登陆zabbix

默认用户名:Admin,密码:zabbix

http://192.168.217.20/zabbix/index.php

未分类

zabbix自动化监控三种方式

1、agent自动注册
2、sever端自动发现discovery
3、zabbix api

1、agent自动注册

主动模式自动注册配置
主动模式配置items监控类型要改成zabbix agent active

vim /etc/zabbix/zabbix_agentd.conf
#注释Server
#Server=192.168.217.20
#StartAgents=0表示关闭被动模式
StartAgents=0
ServerActive=192.168.217.20
#主机名唯一
Hostname=compute
HostMetadataItem=system.uname

被动模式配置

vim /etc/zabbix/zabbix_agentd.conf
#注释Server
Server=192.168.217.20
StartAgents=3
#ServerActive=192.168.217.20
#主机名唯一
Hostname=compute
#HostMetadataItem=system.uname

在服务端的web界面配置自动注册事件
configuration—>Actions—>选择事件源Auto registration—->create action
—>选择action–>填写相关信息–>选择operation–>填写相关信息–>enable–>add

保存关闭重启agent

service zabbix-agent restart

2、sever端自动发现discovery

被动模式配置

vim /etc/zabbix/zabbix_agentd.conf
#注释Server
Server=192.168.217.20
StartAgents=3
#ServerActive=192.168.217.20
#主机名唯一
Hostname=compute
#HostMetadataItem=system.uname
配置discovery rule
configuration--->discovery--->create discovery rule---->填写相关信息(主要是checks条件)-->add

配置与discovery的Actions

configuration—>Actions—>选择事件源discovery—->create action–>填写相关信息(主要是Conditions条件)–>选择operation–>填写相关信息(主要是operation条件)–>enable–>add

3、zabbix api

1) 验证
2) 请求API,附带上session id
3) host.create

获取登录的session id

curl -s -X POST -H 'Content-Type:application/json ' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://192.168.217.20/zabbix/api_jsonrpc.php | python -mjson.tool 

输出结果:

{
"id": 1,
"jsonrpc": "2.0",
"result": "40b0c714a09b3eb70c32c596ba2e8514"
}

添加主机

curl -s -X POST -H 'Content-Type:application/json ' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "compute",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.217.20",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "4"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "40b0c714a09b3eb70c32c596ba2e8514",
"id": 1
}' http://192.168.217.20/zabbix/api_jsonrpc.php | python -mjson.tool

使用zabbix监控nginx和php-fpm性能

一、系统环境

1.1 软件及其版本

未分类

1.2 软件安装路径

zabbix安装在/usr/local/zabbix路径下,其相关配置文件及二进制执行程序都放置其中。
nginx安装在/usr/local/nginx下,其相关配置文件及二进制执行程序都放置其中。
php安装在/usr/local/php下,其相关配置文件及二进制执行程序都放置其中。
继续后面的操作前,请确认nginx和php-fpm的服务端口都处于监听状态。

二、配置nginx的status

2.1 确认nginx的status已编译到程序包中

使用nginx -V可以查看nginx是否将模块·http_stub_status_module`编译进包中:

[root@monitor-server2 zabbix_agentd.conf.d]# nginx -V
nginx version: nginx/1.10.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-1.10.3 
--with-http_ssl_module 
--with-http_stub_status_module --with-pcre   
#出现with-http_stub_status_module说明已装载status模块

2.2 启用nginx的status模块

  • 修改nginx.conf文件

一般在默认主机中增加如下location即可:

location /nginx_status {
  stub_status on;
  access_log off;
  allow 127.0.0.1;
  allow 192.168.249.0/24;
  deny all;
  • 查看nginx status

nginx配置文件修改完成以后,使用nginx -t测试配置文件是否有明显逻辑及语法错误,没有问题则重载配置文件。

nginx -t
nginx -s reload

然后使用浏览器或者curl指令查看nginx status:

[root@monitor-server2 zabbix_agentd.conf.d]# curl localhost/nginx_status
Active connections: 2 
server accepts handled requests
 1585 1585 7785 
Reading: 0 Writing: 1 Waiting: 1 

2.3 nginx status数值的含义说明

未分类

三、配置php-fpm的status

php-fpm自带的有用于查询其工作状态的页面,需要进行如下 两步,以启用这一功能。

3.1 启用php-fpm status页面

修改php-fpm.conf文件,去掉status页面的注释,并可以根据需要将其改名。操作如下:

vim /usr/local/php/etc/php-fpm.conf
pm.status_path = /php_fpm-status      
 #去掉了前面的;注释符,并更名为php_fpm-status

3.2 查看php-fpm的status

修改完php-fpm.conf后,使用service php-fpm reload重新加载配置文件,然后在浏览器或者使用curl指令查看php-fpm的status。操作如下:

[root@monitor-server2 zabbix_agentd.conf.d]# curl localhost/php_fpm-status
pool:                 www
process manager:      dynamic
start time:           01/May/2017:15:14:23 +0800
start since:          29536
accepted conn:        5947
listen queue:         0
max listen queue:     3
listen queue len:     128
idle processes:       2
active processes:     1
total processes:      3
max active processes: 3
max children reached: 0
slow requests:        0

php-fpm的status可以查看汇总信息和详细信息,详细信息比汇总信息要多出每一个php-fpm进程的相关信息,同时支持多种格式输出,如xml、html和json,默认情况下分别使用如果指令即可:

Examples for summary status page:
http://example.com/status
http://example.com/status?json
http://example.com/status?html
http://example.com/status?xml
Example for detailed status page:
http://example.com/status?full
http://example.com/status?json&full
http://example.com/status?html&full
http://example.com/status?xml&full

使用何种格式查看status决定了后续使用zabbix进行监控获取status数值的方式。本文以上述curl localhost/php_fpm-status的输出为例。

3.3 php-fpm status的含义

未分类

四、编写status数据提取脚本

在适当的位置,一般是/usr/local/zabbix/bin里准备脚本用于提取status里每个字段的数值。

4.1 nginx的status数值提取脚本

此脚本为/usr/local/zabbix/bin/nginx_status.sh,其内容如下:

#!/bin/bash
#check nginx status
ip=127.0.0.1
function ping() {                              #用于检测nginx进程是否存在
    /sbin/pidof nginx | wc -l
}

function active() {                 #用于提取status中的active数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '1p' | awk '{print $NF}'
}

function accepts() {            #用于提取status中的accepts数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $1}'
}

function handled() {          #用于提取status中的handled数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $2}'
}

function requests() {        #用于提取status中的request数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $3}'
}

function reading() {        #用于提取status中的reading数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $2}'
}

function writing() {        #用于提取status中的writing数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $4}'
}

function waiting() {     #用于提取status中的waiting数值
    /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $6}'
}

$1                           #通过第一个位置参数的值来调用相应的函数  

4.2 php-fpm status数值提取脚本

php-fpm status数值提取脚本为/usr/local/zabbix/bin/php_fpm_status.sh,内容如下:

#!/bin/bash
#check php-fpm status
case $1 in
    ping)                           #检测php-fpm进程是否存在
    /sbin/pidof php-fpm | wc -l
    ;;
    start_since)             #提取status中的start since数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==4{print $3}'
    ;;
    conn)                     #提取status中的accepted conn数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==5{print $3}'
    ;;
    listen_queue)         #提取status中的listen queue数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==6{print $3}'
    ;;
     max_listen_queue)  #提取status中的max listen queue数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==7{print $4}'
    ;;
    listen_queue_len)    #提取status中的listen queue len
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==8{print $4}'
    ;;
    idle_processes)      #提取status中的idle processes数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==9{print $3}'
    ;;
    active_processes)   #提取status中的active processes数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==10{print $3}'
    ;;
     total_processes)    #提取status中的total processess数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==11{print $3}'
    ;;
    max_active_processes)     #提取status中的max active processes数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==12{print $4}'
    ;;
     max_children_reached)    #提取status中的max children reached数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==13{print $4}'
    ;;
    slow_requests)   #提取status中的slow requests数值
    /usr/bin/curl localhost/php_fpm-status 2>/dev/null  | awk 'NR==14{print $3}'  
    ;;
    *)
    echo "Usage: $0 {conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processess|total_processes|max_active_processes|max_children_reached|slow_requests}"
    exit 1
    ;;
esac

五、创建zabbix_agentd的子配置文件

在/usr/local/zabbix/etc/zabbix_agentd.d/中创建关联nginx status和php-fpm status的子配置文件,创建一个,或者在已有的某配置文件中增加也可以,我这里分别为它们创建配置文件,文件名可自定义,只要确保此文件夹全部内容在zabbix_agentd.conf中包含(include)了。

5.1 userparameter_nginx.conf

[root@monitor-server2 zabbix_agentd.conf.d]# cat userparameter_nginx.conf 
#/usr/local/zabbix/bin/nginx_status.sh
UserParameter=nginx.status[*],/usr/local/zabbix/bin/nginx_status.sh $1  
 #这种写法比较简洁,参考zabbix 3.2.4中自带的的userparameter_examples.conf
UserParameter=nginx.version,/usr/local/nginx/sbin/nginx -v     
#让zabbix-agentd获取nginx的版本信息 ,一切shell指令都推荐使用绝对路径 

5.2 userparameter_php-fpm.conf

[root@monitor-server2 zabbix_agentd.conf.d]# cat userparameter_php-fpm.conf 
#/usr/local/zabbix/bin/php_fpm_status.sh
UserParameter=php-fpm.status[*],/usr/local/zabbix/bin/php_fpm_status.sh $1
UserParameter=php-fpm.version,/usr/local/php/sbin/php-fpm -v | awk 'NR==1{print $0}'   
#获取php-fpm版本信息

5.3 确认子配置文件被zabbix_agentd配置文件包含

确认在/usr/local/zabbix/etc/zabbix_agentd.conf中包含:Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/且没有被注释。

六、重启zabbix_agentd服务

service zabbix_agentd restart 让zabbix_agentd加载新的配置文件。

七、测试zabbix_get能否取到数据

在zabbix server上使用如下指令测试能否获取到nginx和php-fpm status数值。

[root@monitor-server2 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'nginx.status[ping]'      
1
[root@monitor-server2 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'nginx.status[active]'
6
[root@monitor-server2 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'nginx.status[requests]'  
1841
[root@monitor-server2 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'php-fpm.status[ping]' 
1
[root@monitor-server2 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'php-fpm.status[conn]'
1247

注意:

  • zabbix_get指令在zabbix server上运行。
  • userparameter_*.conf文件位于zabbix_agentd端。
  • nginx_status.sh和php_fpm_status.sh位于zabbix_agentd端。
  • zabbix-get后-s指定的ip为zabbix-agentd的监听ip。

八、zabbix server上配置相应的模板

这里的模板包含对nginx status和php-fpm status要监控的item、trigger、Graphs等一系列内容。对于在zabbix server上新增要监控的内容,最好的办法就是从模板开始,然后按照顺序依次配置相应内容,无需去网上找现成的模板导入,对于系统的监控按需配置是最好的。下面是相应的操作过程。

8.1 添加nginx status监控模板

未分类

新建nginx status模板

未分类

定义nginx status模板

未分类

新建nginxApplication

未分类

定义nginx status items,这里我使用的是被动临控

未分类

增加nginx status状态码映射

未分类

nginx trigger定义

未分类

定义nginx监控视图

8.2 添加php-fpm status监控模板

php-fpm status的模板添加步骤和上述方法一样,此处不在赘述。

8.3 选择相应的主机或主机组关联上相应的模板

未分类

给主机或主机组关联模板

九、实际监控效果展示

查看监控效果可以通过查看Monitoring—->Latest data,过滤出相应的主机及应用名进行查看,最新收集的各item的监控结果,凡是监控到数据的item会显示数据,出现灰色的表示没有监控到数据,需要排查原因。如下所示:

未分类

nginx的监控数据

也可以通过定义的Graphs查看监控效果:

未分类

nginx statur监控视图

十、小结

zabbix中要实现对用户自定义的item的监控,大致过程如下:

  • 启用相应软件的性能统计功能
  • 编写性能统计数据提取脚本
  • 配置自定义的userparameter conf文件
  • 重启zabbix_agentd服务
  • zabbix server web上添加相应的模板
  • 给主机或主机组调用模板

监控利器Zabbix之主动模式和被动模式

一:zabbix的主动模式和被动模式

zabbix客户端分数据给服务端分为主被动两种模式,主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待客户端来取数据。

主动模式的流程:

客户端每隔一段时间主动向服务端发起连接请求–>服务端收到请求,查询客户端需要取的item信息,发送给客户端–>客户端收集数据发送服务端–>结束。
被动模式的流程:
客户端开一个端口默认10050,等待服务端来取数据,然后客户端收集数据发送到服务端,然后结束。

二:主动模式使用的一个场景

当服务端监控的主机达到一定数量之后,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:

1、当被监控端到达一个量级的时候,Web操作很卡,容易出现502
2、图层断裂
3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题

所以下面主要往两个优化方向考虑:

1、添加Proxy节点或者Node模式做分布式监控
2、调整Agentd为主动模式

由于第一个方案需要增加物理机器,所以首先尝试第二方案。

三:被动模式配置

1、agent配置如下:

[root@zabbix_client ]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=3
Server=10.0.0.64
ServerActive=10.0.0.64
Hostname=zabbix_client
HostMetadataItem=system.uname

重启zabbix:

systemctl restart zabbix-agent

2、zabbix-server端:

因为zabbix监控模板默认使用的就是被动模式,所以zabbix-server端直接添加hosts默认使用的就是被动模式。

未分类

四:主动模式

1、agent配置如下:

[root@zabbix_master zabbix-server-mysql-3.2.7]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=10.0.0.64
Hostname=zabbix_master
Include=/etc/zabbix/zabbix_agentd.d/*.conf

重启zabbix:

systemctl restart zabbix-agent

agent的端口已经没有了:

[root@zabbix_master zabbix-server-mysql-3.2.7]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10215/mysqld        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1160/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3042/master         
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      10366/zabbix_server 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::80                   :::*                    LISTEN      10357/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1160/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      3042/master         
tcp6       0      0 :::10051                :::*                    LISTEN      10366/zabbix_server 
udp        0      0 0.0.0.0:29925           0.0.0.0:*                           975/dhclient        

2、zabbix-server端:

创建一个主动模式的模板:

克隆一个模板,把所有的类型改为Zabbix agent(Active)主动模式:
克隆模板:Configuration–》Template–》Template OS Linux(选择需要克隆的模板)–》Full clone(最下面)–》Template name:Template OS Linux Active–》Add
把这个模板软连接的模板remove掉,,添加一个新的克隆的类型为主动的。另外,克隆模板成功后,记得修改类型,改为主动模式。

未分类

去掉链接模板

未分类

修改模板的items:

未分类

未分类

把改好的模板连接到主机:

未分类

通过查看出图情况,确定了主动模式成功了。

未分类

centos7.4 搭建zabbix-server 3.4.5

监控对服务器的重要性来说已经不需要我来一一赘述了,在众多的监控工具之中选择使用zabbix的原因是觉得它功能强大,可以引用的模板有很多,而且图形化做的草鸡棒。

废话就不多了,直接吃鸡。

本次搭建全部采用虚拟机实现。具体环境如下:

  • system:centos7.4

  • zabbix version:3.4.5

  • database version:mariadb 5.5.56

  • Apache:2.4.6

=================================================================================================

一:存放数据的数据库,本次使用 yum自带版本mariadb 5.5.56

1、直接yum安装

#yum -y install mariadb mariadb-server

2、启动mariadb服务并设置开机启动。安全初始化数据库的相关信息

#systemctl start mariadb

#mysql_secure_installation

# systemctl enable mariadb

3、进入数据库,创建为zabbix存放数据的数据库zabbix,创建登录该数据库的用户,可以登录该数据库的IP以及给该用户授予对应数据库的权限

#mysql -uroot -p

MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin;

MariaDB [(none)]>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';   (密码可以随意设置)

MariaDB [(none)]>exit

4、尝试用zabbix用户登录是否创建成功

#mysql -uzabbix -pzabbix

二:安装Apache

yum源自带的Apache为2.4.6,足够支持了。所以依然yum安装走起

1、安装

#yum -y install httpd

2、启动Apache,设置开机启动

#systemctl start httpd

#systemctl enable httpd

3、检测Apache是否安装成功

#netstat -antulp |grep :80

#curl http://localhost 或者直接在浏览器输入IP地址

三:zabbix-server搭建

1、官方网站安装对应版本的zabbix的yum源

#rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm

2、利用yum源安装zabbix的服务端和支持zabbix的web界面包

#yum -y install zabbix-server-mysql zabbix-web-mysql

3、进入到开始安装服务端时安装的共享文档目录下,找到用于往zabbix数据库导入数据的sql压缩文件件create.sql.gz.

#cd /usr/share/doc/zabbix-server-mysql-3.4.5/

使用zcat命令,加管道重定向,向开始创建的zabbix数据库导入数据

#zcat create.sql.gz |mysql -uroot -pzabbix zabbix

4、修改zabbix的主配置文件.让zabbix-server启动时能读取到数据库中的数据

#vim /etc/zabbix/zabbix_server.conf

未分类

5、启动zabbix-server服务,并将该服务设置为开机启动

#systemctl start zabbix-server

#systemctl enable zabbix-server

6、修改时区,使前端显示的页面时间正确,为亚洲上海

#vim /etc/httpd/conf.d/zabbix.conf 

未分类

7、查看是否创建zabbix用户和zabbix用户组。

#cat /etc/passwd |grep zabbix

#cat /etc/group |grep zabbix

8、浏览器输入IP地址加上zabbix目录,进入zabbix的安装界面

未分类

未分类

9、注意安装完之后登录的账号默认为Admin 密码默认为zabbix

未分类

10、登录成功之后显示出如下的仪表盘信息,则表示zabbix服务端安装成功

未分类

11、安装成功之后,是全英文显示的,可以通过修改个性化设置,修改语言和主题颜色,如下图即可

未分类

未分类

12、zabbix默认是自带简体中文的,但汉化不完整,默认是没有开放的状态,可以手动释放出来

未分类

未分类

13、修改之后重新启动服务, 查看图形的时候,本该显示中文的地方出现方块乱码。

**解决办法,修改字体配置文件

windows操作系统,Win+r 进入命令界面,输入fonts,弹出字体窗口,找到喜欢的字体(简体常规)复制出来,改名为xxxx.tty 注意后缀名一定要为tty. 然后将该文件上传到安装zabbix的服务器上的/usr/share/zabbix/fonts/目录下

未分类

未分类

未分类

未分类

修改完之后,刷新下界面,发现现实中文成功啦!

未分类

zabbix服务端搭建到此就结束了,是不是挺简单的。

zabbix安装配置(LNMP环境)

1、配置参数

zabbix对PHP参数、PHP模块有特殊要求。
如下模块要特别留意加上

bcmath        --enable-bcmath
mbstring    --enable-mbstring
sockets        --enable-sockets
gd            --with-gd
libxml        --with-libxml-dir=/usr/local
xmlwriter    同上
xmlreader    同上
ctype        默认支持
session        默认支持
gettext        默认支持

以下是我PHP的编译配置参数(需要yum install libxml2-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel gd -y)

编译:

[root@M4 ~]# ./configure  --prefix=/usr/local/php56 
--with-config-file-path=/usr/local/php56/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-jis-conv  
--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-mysqli=mysqlnd 
--enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath

安装:

[root@M4 ~]# make && make install

配置:

[root@M4 ~]# cp php.ini-development /usr/local/php56/etc/php.ini
[root@M4 ~]# ln -s /usr/local/php56/etc/php.ini /etc/php.ini
[root@M4 ~]# cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/php-fpm.conf
[root@M4 ~]# vim /usr/local/php/etc/php-fpm.d/www.conf #编辑
user = zabbix #设置php-fpm运行账号为www
group = zabbix #设置php-fpm运行组为www
security.limit_extensions = .php .php3 .php4 .php5 .js .css .jpg .gif .png .jpeg .html .ico .bmp

设置 php-fpm开机启动

[root@M4 ~]# cp /usr/local/src/php-56/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

#拷贝php-fpm到启动目录

[root@M4 ~]# chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限
[root@M4 ~]# chkconfig php-fpm on #设置开机启动
[root@M4 ~]# vi /usr/local/php/etc/php.ini #编辑配置文件
找到:disable_functions =
修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,
shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,
openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,
dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,
getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,
posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,
posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid,
posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,
posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone = PRC #设置时区
找到:expose_php = On
修改为:expose_php = Off #禁止显示php版本的信息
找到:short_open_tag = Off
修改为:short_open_tag = ON #支持php短标签
找到opcache.enable=0
修改为opcache.enable=1 #php支持opcode缓存
找到:;opcache.enable_cli=1 #php支持opcode缓存
修改为:opcache.enable_cli=0
post_max_size=16M
max_execution_time=300
max_input_time=300
always_populate_raw_post_data=off
在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能
:wq! #保存退出

2、nginx编译安装

nginx版本1.12.2,以下我的安装编译参数

编译

[root@M4 ~]# ./configure --prefix=/web/soft/nginx/ --with-http_stub_status_module --with-http_ssl_module

安装:

[root@M4 ~]# make && make install

配置nginx支持php

[root@M4 ~]# vim /web/soft/nginx/conf/nginx.conf   
server {
        listen       8095;
        server_name  zabbix;
        location  / {
           root /web/soft/nginx/zabbix;
        }
       location ~ .php$ {
           root /web/soft/nginx/zabbix;
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           include fastcgi_params;
        }

    } 
[root@M4 ~]# /etc/init.d/nginx restart #重启nginx
[root@M4 ~]# /etc/init.d/php-fpm restart #重启php-fpm

3、zabbix服务端安装

下载安装zabbix
所有版本下载地址:http://www.zabbix.com/download.php
// 一定先安装依赖

[root@M4 ~]# yum install net-snmp-devel libxml2-devel libcurl-devel libevent-devel
[root@M4 ~]# tar xf zabbix-3.4.4.tar.gz

编译

[root@M4 ~]# ./configure --prefix=/web/data/zabbix-3.4.4/ --enable-server 
--enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2

安装

[root@M4 ~]# make && make install

在zabbix server一般充当两个角色:server、angent,所以上面的配置参数也同时加上了–enable-agent。
备注:请安装好MySQL,snmp,curl开发库。
创建用户
为了安全考虑zabbix只使用普通用户运行,假如你当前用户叫ttlsa,那么你运行他,他便使用ttlsa身份运行。但是如果你在root环境下运行zabbix,那么zabbix将会主动使用zabbix用户来运行。但是如果你的系统没有名叫zabbix的用户,你需要创建一个用户,如下:

[root@M4 ~]# groupadd zabbix
[root@M4 ~]# useradd -g zabbix zabbix

配置zabbix_server配置文件,zabbix源码目录下

[root@M4 ~]# mkdir /etc/zabbix
[root@M4 ~]# cp config/zabbix_server.conf /etc/zabbix/
[root@M4 ~]# vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=root
DBPassword=ttlsapwd
DBPort=3306

4、数据库安装配置

安装:数据库安装 http://yangxx.net/?p=154

初始化数据库

zabbix server与proxy需要数据库,angent不需要。尤其要注意的是proxy只需要导入一个sql文件,而server一共要导入3个sql文件。我当时在搭建proxy的时候导入了3个sql,导致出现报错。后来才发现proxy只需要导入一个表结构即可。
我假想你安装好了MySQL,用户名为root,密码为ttlsapwd

[root@M4 ~]# mysql -uroot -pttlsapwd
mysql> create database zabbix default charset utf8;
mysql> quit;
[root@M4 ~]# mysql -uroot -pttlsapwd zabbix < database/mysql/schema.sql

备注:创建数据库请别忘记加default charset utf8,有可能会导致你出现中文乱码问题

如果你仅仅是初始化proxy的数据库,那么够了。如果初始化server,那么接着导入下面两个sql

[root@M4 ~]# mysql -uroot -pttlsapwd zabbix < database/mysql/images.sql
[root@M4 ~]# mysql -uroot -ppttlsapwd zabbix < database/mysql/data.sql

5、登录web开始配置

192.168.30.6:8095

6、开启zabbix中文

原来zabbix默认把对中文的支持给关闭了,我们需要修改zabbix的php源文件. 修改站点根目录下include/locales.inc.php文件.

[root@M4 ~]# vim include/locales.inc.php
function getLocales() {
        return array(
                'en_GB' => array('name' => _('English (en_GB)'),        'display' => true),
                'en_US' => array('name' => _('English (en_US)'),        'display' => true),
                'bg_BG' => array('name' => _('Bulgarian (bg_BG)'),      'display' => true),
                'zh_CN' => array('name' => _('Chinese (zh_CN)'),        'display' => true),
                //原本这里为false,请改为true
                ...........代码省略掉........
        );
}

7、agent安装

监控主机

安装zabbix-agent

首先需要在被监控的主机上安装agent,可以下载预编译好的RPM进行安装,下载地址:http://www.zabbix.com/download
也可以源码安装,类似server的安装,只是一个地方有区别,就是配置的参数只有一个:

[root@M4 ~]# ./configure –prefix=/home/zabbix --enable-agent

配置agent

以RPM安装为例,安装后的agent配置文件位置:/etc/zabbix/zabbix_agentd.conf,主要需要修改下列2项:

Server=192.168.0.41
ServerActive=192.168.0.41:10051
Hostname=M4
#配置成主机名需要在server hosts文件中添加对应信息或者直接使用本机IP

修改完成后,重启zabbix-agent 服务。