zabbix搭建


环境:RHEL7

selinux and iptables disabled


192.168.122.21   zabbix1   zabbix-server

192.168.122.22   zabbix2   zabbix-client


Screenshot from 2018-08-21 17-12-57.png


一、安装 zabbix

下载软件包,及依赖包

fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
zabbix-agent-3.4.6-1.el7.x86_64.rpm
zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm
zabbix-web-3.4.6-1.el7.noarch.rpm
zabbix-web-mysql-3.4.6-1.el7.noarch.rpm


a)安装数据库

[root@zabbix1 ~]# yum install -y mariadb mariadb-server
[root@zabbix1 ~]# mysql_secure_installation     #安全初始化(设置密码)

登录数据库并授权

[root@zabbix1 ~]# mysql -p

Screenshot from 2018-08-21 14-28-12.png


create database zabbix character set utf8 collate utf8_bin;       #创建数据库

grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat';    #授权


b)将数据导入zabbix数据库


zcat create.sql.gz | mysql -uzabbix -predhat zabbix      #不要着急,有可能会慢点

Screenshot from 2018-08-21 14-37-13.png


如下,进入数据库去查看

Screenshot from 2018-08-21 14-39-26.png



c)配置 php

修改php date.timezone

[root@zabbix ~]# vim /etc/php.ini

Screenshot from 2018-08-21 14-44-31.png

[root@zabbix1 ~]# vim /etc/httpd/conf.d/zabbix.conf

Screenshot from 2018-08-21 15-00-22.png



d)建立zabbix与数据库的联系 


[root@zabbix1 zabbix]# pwd
/etc/zabbix
[root@zabbix1 zabbix]# vim zabbix_server.conf
DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=password


开服务开机自启动

[root@zabbix1 ~]# systemctl start zabbix-server zabbix-agent httpd
[root@zabbix1 ~]# systemctl enable zabbix-server zabbix-agent httpd


二、登陆 zabbix web

http://192.168.122.21/zabbix 按照提示完成安装并登陆:      (做好解析)

输入用户名 Admin 以及密码 zabbix 以作为Zabbix超级用户登陆。

Username: Admin
Password: zabbix

Screenshot from 2018-08-21 15-08-04.png




Screenshot from 2018-08-21 15-10-45.png

Screenshot from 2018-08-21 15-11-42.png

Screenshot from 2018-08-21 15-11-54.png

Screenshot from 2018-08-21 15-12-34.png



三、添加 agent 主机
在被监控端安装软件包:

[root@zabbix2 ~]# yum install -y zabbix-agent-3.4.6-1.el7.x86_64.rpm

[root@zabbix2 ~]# cd /etc/zabbix/
[root@zabbix2 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@zabbix2 zabbix]# vim zabbix_agentd.conf

Screenshot from 2018-08-21 15-24-13.png


Screenshot from 2018-08-21 15-25-11.png

Screenshot from 2018-08-21 15-27-39.png

[root@zabbix2 zabbix]# systemctl start zabbix-agent     #开启服务

[root@zabbix2 zabbix]# systemctl enable zabbix-agent

查看端口:

Screenshot from 2018-08-21 15-30-40.png


点击“小人头像”可修改语言

Screenshot from 2018-08-21 15-33-32.png


四、zabbix网页配置

zabbix完整的监控配置流程大体上由如下步骤组成:并非必须
Host group –> Host –> Application –> Items –> Trigger –> Events –> Action –> User group –> User –> Media –> graph –> screen
application:可以将多个功能相近的item定义在一起,以便统一管理。
每一个被监控主机主机上都有N各监控项,每个监控项都要通过或主动或被动方式向服务器端发送数据,服务器上收集到的数据,都要保存在database 中,database中的数据可以通过graph展示,graph展示的数据可以通过screen用一个机和的方式予以显示。   我们定义的这些监控项所产生的数据有一个合理区间,所以我们需要去定义一个Trigger,由Trigger来触发事件,从而由action当中的 operation采取某个操作。


(有三种方式,手动加入,自动发现,自动注册) 


新建主机

Screenshot from 2018-08-21 16-25-47.png

Screenshot from 2018-08-21 16-26-35.png

Screenshot from 2018-08-21 16-27-05.png

1、item(监控项)

item是zabbix服务用于监控一个特定对象上的一个特定指标,并负责针对其收集相关的监控数据。比如CPU每分钟的平均负载可以是一个 item,每五分钟的平均负载是一个item,某特定网络接口接收报文的速率又是一个item等。每一个item都拥有相应的类型。例如“zabbix agent“,“SNMP“,“External check“,“IPMI agent“,“SSH agent“,“JMX agent“等。zabbix服务器会使用相应类型的协议或机制同被监控端通信。

item key

每一个item都有其专用的“Key“,zabbix服务器在与被监控端通信时就使用相应的协议或机制取询问被监控端这个Key的值,被监控端则调 用与此key对应的监控脚本获取数据并返回给服务器端。zabbix有许多预定义的key,详细信息请访问官网。对于每一个item,zabbix服务器 还定义了怎么存储这个item的数据,以及数据采集的频率和历史数据的保存时长等。多个item还可以归类为一个由“application“定义的逻辑 组。

item
默认的item有多种类型:
    网卡流量相关:
        net.if.in[if,<mode>]    []:可选   <>:必须
            if:接口,如eth0
            mode:bytes,packets,errors,dropped
        net.if.out[if,<mode>]
        net.if.total[if,<mode>]
    端口相关:  监控端口是否处于打开状态
        net.tcp.listen[port]  tcp协议监听了哪些端口
        net.tcp.port[<ip>,<port>]
        net.service[service,<ip>,<port>]  基于tcp协议的某个服务
        net.udp.listen[port]
    进程相关:
        kernel.maxfiles  内核所允许打开文件的最大数
        kernel.maxproc   内核所允许当前用户运行的最大进程数
    cpu相关:
        system.cpu.intr   中断次数
        system.cpu.load[<cpu>,<mode>]   负载
        system.cpu.num[<type>]  cpu的核数
        system.cpu.switches  上下文切换的次数
        system.cpu.util[<cpu>,<type>,<mode>]  利用率
    磁盘I/O相关:
        vfs.dev.read[<device>,<type>,<mode>]
        虚拟文件接口哪个设备什么类型什么模式进行读取
        vfs.dev.write[<device>,<type>,<mode>]
        哪个设备什么类型什么模式写入
        vfs.fs.inode[fs,<mode>]
        哪个文件系统的哪个模式的inode可用量12345678910111213141516171819202122232425262728

一旦默认item无法实现想要的功能,就可以自定义item实现
自定义item:  关键:选取唯一的key;  命令:收集数据的命令或脚本;

创建item

Configuration--->Hosts

点击上步新建主机后面的items-->create iteam

Screenshot from 2018-08-21 17-08-01.png


历史数据:采样生成的数据
趋势数据:每小时的最大值,最小值,平均值,等


Screenshot from 2018-08-21 17-10-13.png



2、graph

配置 –> 主机 –> 图像 –> 创建图像 Configuration-->items-->graphs-->create graph

将上面创建出来的两个item同时放进一个图中:

Screenshot from 2018-08-21 17-51-01.png


图像类型: 线状图,堆叠图,饼图,渐变图


3、触发器(Trigger)

“监控项“仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,“触发器“正是用于为监控项所收 集的数据定义阈值。zabbix server每次接收到items新数据时,就会对item当前采样值进行判断,即与trigger的表达式进行比较;
每一个触发器仅能关联至一个监控项,但可以为一个监控项同时使用多个触发器。事实上,为一个监控项定义多个具有不同阈值的触发器,可以实现不同级别的报警功能。
一个触发器由一个表达式构成,它定义了监控项所采取的数据的一个阈值。
一旦某次采集的数据超出了此触发器定义的阈值,触发器状态会转换为“Problem“;而当采取的数据再次回归至合理范围内时,其状态将重新返回到“OK“
触发器表达式高度灵活,可以以之创建除非常复杂的测试条件。基本的触发器表达式格式如下所示:

{<server>:<key>.<function>(<parameter)}<operator><constant>1

server:主机名称
key:主机上关系的相关监控项的key;
function:评估在及道德数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据,当时的事件以及其他因素进行;
目前,触发器所支持的函数有avg,count,change,date,dayofweek,delta,diff,iregexp,last,max,min,nodata,now,sum等
parmeter:函数参数:大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#“作为前缀,则表示为最近几次的取值,如sun(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
一个例子: {high1:system.cpu.load[all,avg1].last(0)}>3
high1主机上所有CPU的过去一分钟内的平均负载的最后一次取值大于3时将触发状态变换
对于last函数来说,last(0)相当于last(#1)

创建trigger(触发器)

配置 –>主机 –>触发器 –> 创建触发器
创建表达式的时候可以自己手动写入,也可以通过选择系统已存在的配置进行设置。点击添加即可配置。


Configuration-->items-->Triggers-->create Trigger

Screenshot from 2018-08-21 18-15-06.png