zabbix简介

zabbix是完全开源的工具,整合了cacti和nagios等特性

 

SNMP

众多网络工具都支持此协议,比如常见路由交换,常见OS

其既可以做管理端也可以做被管理端

snmp协议大致有3个版本分别是v1 v2 v3

比较通用的版本是v2c的版本

无论是v1 和 v2 的安全性是比较差的,因为传输是明文的,v2c的认证机制也很薄弱

但是好在他们支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是所谓的控制端和agent架构,他们有专属的agent

snmp所谓的监控端也是为我们提供了接口再通过程序去采集,数据采集是否保存是否对趋势做分析,snmp都是不关心的,但是snmp只是一种协议

 

 

zabbix组件

zabbix server 负责接收数据、统计数据及操作数据均有其组织进行

database storage 专用于存储所有配置信息,以及由zabbix收集数据

web interface  zabbix的GUI接口,通常与server运行在同一台主机上,通常被称为frontend

proxy 可选组件

zabbix 自从2.0以后可以直接监控java应用

 

模板 : 配置的集合

item : 监控项,比如监控cpu每秒的阈值,一个特定指标的监控数据,被称为监控项,对于zabbix来讲 item是核心,因为监控对象可能有N个监控项目,那我们定义主机之后接下来就要定义主机之后的指标,定义监控项之后就回根据监控项去采集和存储数据了

一旦发现采集的数据超出了阈值之后,那么如下:

触发器   : 主要定义阈值,用于判定某一次数据采集是否符合条件,比如cpu利用率大于或等于80%,因此用于评估监控对象的某一特定的item所接受的数据是否在合理范围内的,接收数据量大于阈值时,触发器的状态将从ok转为problem,如果一直小于阈值那么一直显示OK的

 

事件: 触发器一旦从ok转为problem,则属于事件发生,一旦某个事件被触发,我们要执行某个动作 

动作: 指对于特定事件事先定义的处理方法,通过条件和操作

报警升级:  发送报警或执行远程命令的自定义方案,如每隔5分钟发送一次报警,共发送5次 

媒介: 发送通知的手段或通道,比如邮件 jabber或者sms

通知:发送邮件或其他信息的内容

远程命令: 预定义的命令,可在被监控的主机处于某种特定条件下时自动执行,说白了就是通知层次上的另外操作

模板:

     用于快速定义被监控的主机的预设条目集合,通常包含了item、trigger、graph、screen

     application以及low-level discovery rule,模板可以直接链接至单个主机

 

安装zabiix


安装zabiix的方式:

·源码安装

同时安装server和agent,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6--with-net-snmp --with-libcurl --with-ssh2

如果仅安装server,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --enable-server --with-mysql --with-net-snmp --with-libcurl

如果仅安装proxy,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql--with-ssh2

如果仅安装agent,可使用类似如下配置命令:
./configure --enable-agent


而后编译安装zabbix即可:
# make
# make install

 

 

·rpm包安装

zabbix为各种平台都提供了编译好的rpm包

同时我们也可以直接指定epel源来安装

[[email protected] tools]# groupadd mockbuild
[[email protected] tools]# useradd mockbuild -g mockbuild

http://repo.zabbix.com/zabbix/2.0/rhel/6/SRPMS/zabbix-2.0.8-3.el6.src.rpm

[[email protected] tools]# rpm -ivh zabbix-2.0.8-3.el6.src.rpm

 

 

规划

将mysql与mysql分割开来

10.12.33.58     mysql

10.12.33.57     zabbix

10.12.33.X      其他监控对象

 

 

安装zabbix

[[email protected] zabbix]# wgethttp://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm

[[email protected] zabbix]# cp zabbix-2.0.8-3.el6.x86_64.rpmzabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-get-2.0.8-3.el6.x86_64.rpmzabbix-sender-2.0.8-3.el6.x86_64.rpm zabbix-server-2.0.8-3.el6.x86_64.rpmzabbix-server-mysql-2.0.8-3.el6.x86_64.rpm zabbix-web-2.0.8-3.el6.noarch.rpmzabbix-web-mysql-2.0.8-3.el6.noarch.rpm anzhuang/

 

先将本地安装为server,先不安装agent组件

[[email protected] anzhuang]# ll
total 5364
drwxr-xr-x 2 root root    4096 Sep  1 14:06 agent
-rw-r--r-- 1 root root  123788 Sep  1 14:04zabbix-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root   51228 Sep  1 14:04zabbix-get-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root   18632 Sep  1 14:04zabbix-server-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root 1463132 Sep  1 14:04zabbix-server-mysql-2.0.8-3.el6.x86_64.rpm
-rw-r--r-- 1 root root 3806960 Sep  1 14:04zabbix-web-2.0.8-3.el6.noarch.rpm
-rw-r--r-- 1 root root   12068 Sep  1 14:04zabbix-web-mysql-2.0.8-3.el6.noarch.rpm 

 

解决依赖关系并安装软件包

[[email protected] anzhuang]# yum -y localinstall *.rpm

 

 

 

对mysql做初始化

需要相关脚本来实现

按顺序导入到mysql数据库中,并且创建相关数据库并授权给zabbix访问的账号密码

[[email protected] anzhuang]# rpm -ql zabbix-server-mysql

看到如下信息,就是我们的脚本

/usr/share/doc/zabbix-server-mysql-2.0.8/create
/usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql
/usr/share/doc/zabbix-server-mysql-2.0.8/create/p_w_picpaths.sql
/usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql

 

 

切换至node1.test.com

授权用户

mysql> grant all on *.* to 'root'@'10.12.33.%'IDENTIFIED  by 'mypass' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

 

 

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

测试是否可以连接

[[email protected] create]# mysql -uroot -pmypass -h10.12.33.58

 

导入库

mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)

 

[[email protected] create]# mysql -uroot -pmypass -h10.12.33.58zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql 

[[email protected] create]# mysql -uroot -pmypass -h10.12.33.58zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/p_w_picpaths.sql
[[email protected] create]# mysql -uroot -pmypass -h10.12.33.58 zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql 

 

授权非管理员范访问

mysql> grant all on zabbix.* to 'zbxuser'@'10.12.33.%'IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

 

配置zabbix
[[email protected] create]# cd/etc/zabbix/
[[email protected] zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf

 

[[email protected] zabbix]# vim zabbix_server.conf 

更改参数:

DBHost=10.12.33.58

DBUser=zbxuser
DBPassword=zbxpass

DBPort=3306

StartPollers=5     #zabbix需要向各agent端取数据的,可以并行启动好几个poller 这样可以并行大规模拉取数据,这个值需要看cpu的核心数,也就是说需要根据当前cpu进行计算

 

保存退出并启动服务

[[email protected] zabbix]# /etc/init.d/zabbix-server start
Starting Zabbixserver:                                   [  OK  ]

 

[[email protected] zabbix]# netstat -lntup

zabbix-server默认监听在10051端口

 

接下来配置web应用接口 

配置web接口

由于我们之前已经安装过zabbix-web,它会默认在httpd服务目录下生成单独的配置文件
[[email protected] zabbix]# ls /etc/httpd/conf.d/
php.conf  README  welcome.conf  zabbix.conf

 

查看zabbix相关路径

[[email protected] zabbix]# rpm -ql zabbix-web

我们能看到,所有的zabbix-web都被放在/usr/share/zabbix/目录下

而这些文件都是只读的

 

想访问zabbix-web 只要直接启动httpd服务即可

[[email protected] conf.d]# /etc/init.d/httpd start

 

 

访问http://10.12.33.57/zabbix/ 

第一次访问的时候会提示如下界面

监控工具Zabbix之原理及部署

 

说明我们必须安装zabiix,上面有个警告,说明直接依赖于php默认配置的时区是不安全的,因此最好手动配置时区,所以我们需要更改时区

[[email protected] conf.d]# vim /etc/php.ini 

date.timezone = Asia/Shanghai

 

/etc/init.d/httpd restart
再次刷新页面,如果没有提示错误信息,则选择下一步

 

监控工具Zabbix之原理及部署

提示检测所有条件是否符合 全部ok则可以进行下一步了

监控工具Zabbix之原理及部署

 

提示后端类型,因为我们安装的是zabbix-mysql 所有只支持mysql数据库,服务器是10.12.33.58 端口为3306   0为默认则不需要更改,数据库为zabbix 用户名和密码为我们刚授权的用户权限,输入完后一定要选择testconnection 不然无法下一步

监控工具Zabbix之原理及部署

 

当前zabbix server在什么地方,因为web需要跟server进行交互的,而server就是本机,所以不用更改,而port就是10051,name是可选的,如果zabbix server比较多的话可以为其取名,这里我们就不对其命名了,直接下一步

 

监控工具Zabbix之原理及部署

 

提示信息,告知我们大概信息是这样是否继续安装

监控工具Zabbix之原理及部署

 

选择finish,直接下一步,接下来跳到登录页面

监控工具Zabbix之原理及部署

 

登录的时候第一次要验证,用户名默认为admin,密码为zabbix

选择登录,可以看到如下界面

监控工具Zabbix之原理及部署

 

zabiix的用户

很显然我们使用zabbix必须得有用户的,如上的菜单每个菜单下面都有子菜单,选择Administration 在子菜单选择User

监控工具Zabbix之原理及部署

默认显示的是组,而默认情况下是有俩用户 一个是admin 另一个则是guest

 

 

主界面

监控工具Zabbix之原理及部署

 

如果提示is running 说明服务器是没有任何问题的

 

Zabbix的状态信息

 

表示监控的主机有多少, 0表示正常(被监控) 1表示没有被监控的 23为模板数

Number of hosts (monitored/not  monitored/templates)

24

0 / 1 / 23

表示没有任何的数据需要采集

Number of items  (monitored/disabled/not supported)

0

0 / 0 / 0

triggers的信息

Number of triggers  (enabled/disabled)[problem/unknown/ok]

0

0 / 0  [0 / 0 / 0]

共有几个用户

Number of users (online)

2

1

 

以上信息是经常需要我们去关注的,但是我们现在没有任何的监控对象,所以首先我们要去添加一个需要监控的主机

 

添加监控节点

[[email protected] zabbix]# scp zabbix-2.0.8-3.el6.x86_64.rpmzabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-sender-2.0.8-3.el6.x86_64.rpmnode1.test.com:/tmp
[email protected]'s password:
zabbix-2.0.8-3.el6.x86_64.rpm      100%  121KB120.9KB/s   00:00   
zabbix-agent-2.0.8-3.el6.x86_64.rp 100%  138KB 138.4KB/s  00:00   
zabbix-sender-2.0.8-3.el6.x86_64.r 100%   57KB 56.8KB/s   00:00   


[[email protected] tmp]# yum localinstall zabbix-*.rpm

 

[[email protected] tmp]# ls /etc/zabbix/
zabbix_agentd.conf  zabbix_agentd.d  

 

[[email protected] zabbix]# ll zabbix_agentd.d/
total 4
-rw-r--r-- 1 root root 1517 Oct  3  2013 userparameter_mysql.conf    #用来监控mysql的额外所需要的补充


编辑配置文件

[[email protected] zabbix]# vim zabbix_agentd.conf 

更改以下参数:

Server=10.12.33.57

对于其他参数后期可以慢慢更改,于是可以正常启动了

[[email protected] zabbix]# /etc/init.d/zabbix-agent restart

 

[[email protected] zabbix]# ss -tanl

State       Recv-QSend-Q   Local Address:Port     Peer Address:Port
LISTEN      0     128                 *:80                 *:*    
LISTEN      0     128                 :::22                :::*    
LISTEN      0     128                 *:22                 *:*    
LISTEN      0     128         127.0.0.1:6010               *:*    
LISTEN      0     128                ::1:6010              :::*    
LISTEN      0     128                :::10050              :::*    
LISTEN      0     128                 *:10050               *:*    
LISTEN      0     80                 :::3306              :::*     

 

接下来就可以对其进行监控了,要想监控其主机,需要新加配置才可以进行

 

添加监控

监控工具Zabbix之原理及部署

提示如下信息栏

监控工具Zabbix之原理及部署

Host               主机自身的属性

Tamplates          关联的模板

IPMI               ipmi的属性配置

Macros             zabbix的宏(变量

Host inyentory     企业资产盘点

 

 

这里我们只更改host这一项即可:

监控工具Zabbix之原理及部署

 

主机一定要归类到组里面去的,如果没有一个适合我们的,我们可以定义新的组

Host name 跟agentinterfaces 需要注意的是监控接口地址定义的主机才是最关键的

端口为10050,表示使用agent进行连接的,如果对端不支持agent,下面也有列出其他连接方式

 

 

 

查看其状态:

监控工具Zabbix之原理及部署

 

回到主页面查看dashboard

查看当前监控信息:

Number of hosts (monitored/not  monitored/templates)

25

1 / 1 / 23

 

监控的主机有1个,没有监控的主机有1个

 

但是我们现在监控的主机的确是在线的而且能连接agent,说明主机只是处于活动状态,但是我们还需要监控对方的其他信息,比如网络网卡发送数据量等等

因此,我们还需要定义其监控的监控项

 

 

定义监控项

监控工具Zabbix之原理及部署

 

 

创建一个监控项

监控工具Zabbix之原理及部署

 

这里显示的是当前已有的items,依旧选择create items

Host

Name

Type          item的类型,使用哪种方法采集而来的数据,我们这里需要使用agent进行监控

key           对zabbix items而言,key用来标记items的键,我们也称之为标示符,监控对象一定是可采集数据的,为了唯一的标示这个指标,我们要为其做标记,就叫做key,所以对于zabbix而言 key是不能重名的

 

监控工具Zabbix之原理及部署

 

Use custom multiplier     #自定义乘以多少倍,需要自定义的,因为我们所要显示的内容在图形里很可能与它的数据单位不一致,所以有些时候采集的数据是按位来处理的,但是显示的是按字节进行显示,所以要乘以8 ,同样的如果以字节为采集单位,显示的为k 那么需要乘以1024

 

Update interval (in sec)    #定义多少秒采集一次数据,当然我们也可以定义在什么时间内采集

Flexible intervals          #定义采集时间段

Keep history (in days)      #数据历史保存多少天

Keep trends (in days)       #数据趋势保存多少天

Store value                 #保存的格式

    As is                   #原封不动保存

    delta (speed per secound)      #使用当前时间点的值减去上个时间点的值并除以时间来计算速率

    delta (simple change)          #只计算差别而不计算平均速率

#对于网卡速率而言要选择第二个

Show value                  #显示的状态

New application             #当前的在状态存放在哪个application里

Description                 #描述信息

Status                      #状态

 

创建完毕后返回configureation --> hosts

监控工具Zabbix之原理及部署

 

看到其自动建立了名为NetTraffic 的application

监控工具Zabbix之原理及部署

 

回到主页面并查看监控项

当前monitored有多少个处于监控的状态 为1个

Number of hosts (monitored/not  monitored/templates)

25

1 / 1 / 23

Number of items  (monitored/disabled/not supported)

1

1 / 0 / 0

查看图形

当每建立一个item会自动创建图形的

依次选择monitoring --> Latest data,每个节点对应的监控项:

 监控工具Zabbix之原理及部署

可以看到其监控项,上次数据是2016 当前数据是+476,我们选择Graph 可以查看图形

监控工具Zabbix之原理及部署

那么我们对这个节点进行ping操作,使其产生一些数据流量,如下所示:

监控工具Zabbix之原理及部署

如果我们想对其监控多个状态只需要再加监控项即可

 

新加监控项

新加监控多个状态

监控工具Zabbix之原理及部署

监控工具Zabbix之原理及部署

添加新监控项

监控工具Zabbix之原理及部署

监控工具Zabbix之原理及部署

添加监控CPU

需要再次创建items

监控工具Zabbix之原理及部署

再添加,使其监控cpu的使用率

监控工具Zabbix之原理及部署

key为system.cpu.intr 意思是cpu的中断次数

Units 不用填写因为这次与上次没有关系,所以不用计算,而且一定是无符号整数

监控工具Zabbix之原理及部署

可看到,我们的一个主机的application 被分为了两个,虽然都是同一个主机

因为这里是根据application为主 建立分组的,此时我们发现所有的application都采集到了数据

使同一application工作在同一张图上

监控工具Zabbix之原理及部署

我们自定义某几个指标放在一个图进行展示

监控工具Zabbix之原理及部署

可以选择Preview先预览一下效果

监控工具Zabbix之原理及部署

选择Save 进行保存

 

使用screens将图整合

监控工具Zabbix之原理及部署

监控工具Zabbix之原理及部署

显示为几行几列,这里为1行2列

加图:

 

监控工具Zabbix之原理及部署

监控工具Zabbix之原理及部署
如下所示:

监控工具Zabbix之原理及部署

 接下来再添加网络图

监控工具Zabbix之原理及部署

监控工具Zabbix之原理及部署

以上,为zabbix的简单部署以及使用方法,感谢各位