centos系统服务器3台、 一台做为监控服务器, 两台台做为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间能够经过主机名互相通讯。
1)全部机器关闭防火墙和selinuxphp
iptables -F && setenforing
2)根据架构图,实验基本设置以下:
node
咱们去官网下载一个包zabbix-release-3.4-2.el7.noarch.rpm
,本地安装至咱们的虚拟机,这样,咱们本地就有了新的yum源,能够直接安装zabbix服务:mysql
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
下载到本地之后,咱们直接安装:linux
rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
然后更新咱们的yum仓库:web
[root@server ~]# yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile zabbix-non-supported 4/4 repo id repo name status base base 9,363 epel epel 11,349 zabbix/x86_64 Zabbix Official Repository - x86_64 80 zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - 4 repolist: 20,796
因为我配置的epel源中,也有zabbix的包,可是版本很旧了,为了避免冲突,咱们在配置文件中把epel源注释掉,而后再来查看咱们的yum仓库:redis
[root@server ~]# vim /etc/yum.repos.d/base.repo [base] name=base baseurl=file:///misc/cd gpgcheck=0 #[epel] #name=epel #baseurl=http://172.17.0.1/fedora-epel/7/x86_64/ #gpgcheck=0 [root@server ~]# yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile repo id repo name status base base 9,363 zabbix/x86_64 Zabbix Official Repository - x86_64 80 zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - x 4 repolist: 9,447
如今,咱们去安装包就能够了:sql
[root@node1 ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql
安装完成,本步骤完成。数据库
首先,咱们修改一下配置文件——/etc/my.cnf.d/server.cnf
:vim
[root@server ~]# vim /etc/my.cnf.d/server.cnf [mysqld] skip_name_resolve = ON #跳过主机名解析 innodb_file_per_table = ON # innodb_buffer_pool_size = 256M #缓存池大小 max_connections = 2000 #最大链接数 log-bin = master-log #开启二进制日志
重启咱们的数据库服务:centos
[root@server ~]# systemctl restart mariadb
建立数据库并受权帐号
MariaDB [(none)]> create database zabbix character set 'utf8'; MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'192.168.37.%' identified by 'keer'; MariaDB [(none)]> flush privileges; #刷新受权
导入表
首先,咱们来查看一下,zabbix-server-mysql
这个包提供了什么:
[root@server ~]# rpm -ql zabbix-server-mysql /etc/logrotate.d/zabbix-server /etc/zabbix/zabbix_server.conf /usr/lib/systemd/system/zabbix-server.service /usr/lib/tmpfiles.d/zabbix-server.conf /usr/lib/zabbix/alertscripts /usr/lib/zabbix/externalscripts /usr/sbin/zabbix_server_mysql /usr/share/doc/zabbix-server-mysql-3.2.6 /usr/share/doc/zabbix-server-mysql-3.2.6/AUTHORS /usr/share/doc/zabbix-server-mysql-3.2.6/COPYING /usr/share/doc/zabbix-server-mysql-3.2.6/ChangeLog /usr/share/doc/zabbix-server-mysql-3.2.6/NEWS /usr/share/doc/zabbix-server-mysql-3.2.6/README /usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz #生成表的各类脚本 /usr/share/man/man8/zabbix_server.8.gz /var/log/zabbix /var/run/zabbix
咱们来使用这个文件生成咱们所须要的表:
[root@server ~]# gzip -d create.sql.gz [root@server ~]# head create.sql #查看一下表头 CREATE TABLE `users` ( `userid` bigint unsigned NOT NULL, `alias` varchar(100) DEFAULT '' NOT NULL, `name` varchar(100) DEFAULT '' NOT NULL, `surname` varchar(100) DEFAULT '' NOT NULL, `passwd` char(32) DEFAULT '' NOT NULL, `url` varchar(255) DEFAULT '' NOT NULL, `autologin` integer DEFAULT '0' NOT NULL, `autologout` integer DEFAULT '900' NOT NULL, `lang` varchar(5) DEFAULT 'en_GB' NOT NULL,
咱们查看表头发现没有建立数据库的命令,这也正是咱们刚刚手动建立数据库的缘由。
而后,咱们直接把这个表导入至咱们的数据库便可:
[root@server ~]# mysql -uzbxuser -h192.168.37.111 -p zabbix < create.sql Enter password:
导入之后,咱们进去数据库查看一下:
[root@server ~]# mysql -uzbxuser -h192.168.37.111 -p Enter password: MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | | zabbix | +--------------------+ MariaDB [(none)]> use zabbix; Database changed MariaDB [zabbix]> show tables; +----------------------------+ | Tables_in_zabbix | +----------------------------+ | acknowledges | | actions | | alerts | …… | usrgrp | | valuemaps | +----------------------------+ 127 rows in set (0.00 sec)
能够看出来,咱们的数据已经导入成功了。
咱们的数据库准备好了之后,咱们要去修改server端的配置文件。
[root@server ~]# cd /etc/zabbix/ [root@server zabbix]# ls web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf #为了方便咱们之后恢复,咱们把配置文件备份一下 [root@server zabbix]# cp zabbix_server.conf{,.bak} [root@server zabbix]# vim zabbix_server.conf ListenPort=10051 #默认监听端口 SourceIP=192.168.37.111 #发采样数据请求的IP
为何要设置SourceIP
,因为咱们的客户端可能一个主机多个IP,咱们又不能容许任意的IP都能从咱们这里读取数据,就会有一个验证方式,而该方式是基于识别SourceIP来实现的。
日志,默认用文件记录,也能够发送给咱们的rsyslog日志记录系统,若是咱们选择默认,则日志存放在LogFile=/var/log/zabbix/zabbix_server.log
中,也能够本身设置。
日志的滚动。默认值为1,表示滚动。咱们设为0则表示不滚动。当数据特别多的时候,咱们也能够设置成为1,而后在Maximum size of log file in MB
设置当数据文件最大到多少时会自动滚动。
日志的级别。一共有6个级别。咱们能够根据本身的须要来设置级别。其中0表示输出最少的信息,5表示输出最详细的信息,默认值为3,设置为3的话就表示,0、一、二、3四个级别都显示。考虑到生产系统中的压力时,这里的信息,若是没有必要的话,越简单越好,只要在出错的时候,咱们能够依据其进行排错便可。
DBHost=192.168.37.111 #数据库对外的主机 DBName=zabbix #数据库名称 DBUser=zbxuser #数据库用户 DBPassword=keer #数据库密码 DBPort=3306 #数据库启动端口
数据库相关的设置。
补充:咱们可使用
grep -i "^####" zabbix_server.conf
来查看配置文件中有哪些大段,也可使用grep -i "^###" zabbix_server.conf
来查看配置文件中每一段中的配置项有哪些
以上,咱们的基本配置已经完成,能够开启服务了:
[root@server zabbix]# systemctl start zabbix-server.service
开启服务之后,咱们必定要去确认一下咱们的端口有没有开启:
[root@server zabbix]# ss -nutl |grep 10051 tcp LISTEN 0 128 *:10051 *:* tcp LISTEN 0 128 :::10051 :::*
若是查到的端口没有开启,咱们就要去检查一下配置文件有没有出问题了。
至此,咱们server端的进程启动已经ok了,接下来就可使用web GUI来打开接口进行设定了
咱们先来查看一下,咱们web GUI的配置文件在哪里:
[root@server ~]# rpm -ql zabbix-web | less /etc/httpd/conf.d/zabbix.conf /etc/zabbix/web /etc/zabbix/web/maintenance.inc.php /etc/zabbix/web/zabbix.conf.php /usr/share/doc/zabbix-web-3.2.6 /usr/share/doc/zabbix-web-3.2.6/AUTHORS /usr/share/doc/zabbix-web-3.2.6/COPYING /usr/share/doc/zabbix-web-3.2.6/ChangeLog /usr/share/doc/zabbix-web-3.2.6/NEWS /usr/share/doc/zabbix-web-3.2.6/README ……
能够看出,有一个/etc/httpd/conf.d/zabbix.conf
文件,这个配置文件就是帮咱们作映射的文件,咱们能够去看一看这个文件:
Alias /zabbix /usr/share/zabbix #咱们访问的时候要在主机后加上/zabbix来访问咱们这个服务
时区是必定要设置的,这里被注释掉是由于,咱们也能够在php的配置文件中设置时区,若是咱们在php配置文件中设置时区,则对全部的php服务均有效,若是咱们在zabbix.conf
中设置时区,则仅对zabbix服务有效。因此,咱们去php配置文件中设置咱们的时区:
vim /etc/php.ini [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Asia/Shanghai
接下来,咱们就能够启动咱们的httpd
服务了:
咱们的服务已经开启,接着咱们就能够用浏览器来访问了。
咱们使用浏览器访问192.168.37.111/zabbix
,第一次访问时须要进行一些初始化的设置,咱们按照提示操做便可:
点击Finish之后,咱们就会跳转到登陆页面,使用咱们的帐号密码登陆便可:
默认用户名为:admin ,密码为:zabbix 。
登录进来就能够看到咱们的仪表盘了:
当咱们把监控端配置启动之后,咱们须要来设置一下咱们的监控端,咱们在被监控的主机安装好agent,设置好他的server,并把他添加到server端,就能将其归入咱们的监控系统中去了。
一样的,咱们先来安装zabbix。下载包,注释epel源,安装所需的包。具体步骤以下:
[root@node1 ~]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm [root@node1 ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm [root@node1 ~]# vim /etc/yum.repos.d/centos7.repo [base] name=base baseurl=http://172.17.0.1/centos/7/ gpgcheck=0 #[epel] #name=epel #baseurl=http://172.17.0.1/fedora-epel/7/x86_64/ #gpgcheck=0 [root@node1 ~]# yum install zabbix-agent zabbix-sender -y
安装完成之后,咱们去修改配置文件。
同样的,咱们先查一下包内有什么:
[root@node1 zabbix]# rpm -ql zabbix-agent /etc/logrotate.d/zabbix-agent /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.d /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf /usr/lib/systemd/system/zabbix-agent.service /usr/lib/tmpfiles.d/zabbix-agent.conf /usr/sbin/zabbix_agentd /usr/share/doc/zabbix-agent-3.4.4 /usr/share/doc/zabbix-agent-3.4.4/AUTHORS /usr/share/doc/zabbix-agent-3.4.4/COPYING /usr/share/doc/zabbix-agent-3.4.4/ChangeLog /usr/share/doc/zabbix-agent-3.4.4/NEWS /usr/share/doc/zabbix-agent-3.4.4/README /usr/share/man/man8/zabbix_agentd.8.gz /var/log/zabbix /var/run/zabbix
对配置文件作一个备份,而后去修改配置文件:
[root@node1 ~]# cd /etc/zabbix/ [root@node1 ~]# cd /etc/zabbix/ [root@node1 zabbix]# ls zabbix_agentd.conf zabbix_agentd.d [root@node1 zabbix]# cp zabbix_agentd.conf{,.bak} [root@node1 zabbix]# vim zabbix_agentd.conf
重点须要修改的仍然是GENERAL PARAMETERS
段:
是否容许别人执行远程操做命令,默认是禁用的,打开的话会有安全风险。
Server=192.168.37.111 #指明服务器是谁的 ListenPort=10050 #本身监听的端口 ListenIP=0.0.0.0 #本身监听的地址,0.0.0.0表示本机全部地址 StartAgents=3 #优化时使用的 ServerActive=192.168.37.111 #主动监控时的服务器 Hostname=node1.keer.com #本身能被server端识别的名称
修改完成以后,咱们保存退出。而后就能够启动服务了:
[root@node1 zabbix]# systemctl start zabbix-agent.service
照例查看端口是否已开启
[root@node1 zabbix]# ss -ntul |grep 10050 tcp LISTEN 0 128 *:10050 *:*
已经开启成功。接着,咱们就能够去server端添加了。
node2也进行一样的操做,惟一不一样的就是配置文件中的Hostname
要设为node2.keer.com
。
做为一只英语很差的程序媛,小编在这里悄悄改为了中文版0.0若是你们英语好的话看英文版便可,英语很差就像小编同样改了吧,毕竟中文版比较适合初学者更快的学习~
按如上操做便可,选择中文之后,点击下面的update便可更新成功,更新事后是这样婶儿的~
一样的,为了安全起见,咱们把密码改掉:
修改完成后一样点击更新便可。
咱们先来定义一个主机群组:
而后咱们就能够去添加主机了:
固然,上面有不少选择卡,有一个加密:
设置完成后,点击添加。咱们就能够看到,咱们添加的这个主机已经出如今列表中了:
一样的,咱们把node2节点也添加进来:
咱们点击上图中node1的监控项,便可建立咱们的监控项,首先,咱们建立三个应用集:
而后咱们来定义监控项:
任何一个被监控项,若是想要可以被监控,必定要在zabbix-server端定义了可以链接至zabbix-agent端,而且可以获取命令。或者在agent端定义了可以让server端获取命令。通常都是内建的命令,都对应的有其名字,被咱们称之为
key
。
关于key值,咱们能够直接在网页上设置(服务器自动执行),也可使用命令行命令(手动执行)来获取:[root@server ~]# zabbix_get -s 192.168.37.122 -p 10050 -k "system.cpu.intr"
在咱们的agent端,也可使用命令来查看intr
的速率变化:
咱们继续来看咱们的监控项:
说了这么多,咱们来简单定义一个:
设置完之后,点击更新,便可加入,并会自动跳转至下图页面:
定义完成,咱们回到全部主机,等待5秒,咱们能够看到,咱们node1节点后面的选项已经有变成绿色的了:
咱们也能够回到咱们的仪表盘,能够看到,咱们的监控项有一个处于启用状态:
那么,咱们的数据在哪里呢?能够点击最新数据
,把咱们的node1节点添加至主机,应用一下,就能够看到下面的状态了:
能够看到,咱们还有一个图形页面,点进去则能够看图形的分布:
事实上,咱们关注的指标有不少种,咱们一一添加进来便可。
刚刚咱们定义的监控项是很简单的,指定一个key
便可,可是有些监控项是带有参数的,这样一来,咱们的监控项就有更多的灵活性。接下来,咱们来简单说明一个须要带参数的监控项:
图中的[]
就是须要参数的意思,里面的值即为参数,带<>
为不可省略的。咱们就以这个例子来讲明:
if
表示是接口名;<mode>
表示是那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)、overuns等等(上述内容经过ifconfig
查看)
咱们来设置一下这个监控值:
一样的,咱们也能够经过命令行来查看:
[root@server ~]# zabbix_get -s 192.168.37.122 -p 10050 -k "net.if.in[ens33,packets]"
咱们来看看网页的显示状况:检测中 ---> 最新数据 ---> Network Interface Stats(图形)
若是咱们想要定义一个相似的指标,咱们能够直接选择克隆,而后简单的修改一点点参数便可。
就以咱们刚刚定义的net.if.in[ens33,packets]
为例,若是咱们想要在定义一个out
的进行以下操做便可:
若是咱们要以字节为单位也要定义的话,进行一样的操做:
若是有须要的话也能够把byte再克隆成out。就不一一演示了~
能够看一下,咱们如今已经定义的指标:
咱们来到 检测中 ---> 最新数据,能够看到,咱们定义的监控项都已经有值了:
若是有一个监控项,咱们用不上了,就能够删除掉。可是若是你直接删除的话,默认数据是会留下的,因此咱们要先清除数据,而后再删除,具体操做步骤以下:
对于监控项存储的值,老一点的版本只有如下三种方式:
当咱们的采集的值定义完了之后,就能够来定义触发器了。
咱们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。一般为逻辑表达式。
逻辑表达式(阈值):一般用于定义数据的不合理区间,其结果以下:
OK
(不符合条件):正常状态 --> 较老的zabbix版本,其为FALSE;
PROBLEM
(符合条件):非正常状态 --> 较老的zabbix版本,其为TRUE;
通常,咱们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来断定结果;这个最后N次一般有两种定义方式:
并且,咱们的触发器存在可调用的函数:
nodata() #是否采集到数据,采集不到则为异常
last() #最近几回的平均值
date()
time()
now()
dayofmonth()
...
注:能用数值保存的就不要使用字符串
基本的触发器表达式格式以下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant>
server
:主机名称;key
:主机上关系的相应监控项的key;function
:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程能够根据采起的数据、当前时间及其它因素进行;parameter
:函数参数;大多数数值函数能够接受秒数为其参数,而若是在数值参数以前使用“#”作为前缀,则表示为最近几回的取值,如sum(300)表示300秒内全部取值之和,而sum(#10)则表示最近10次取值之和; 咱们能够查看一下rate of packets(in)
的值,并以其为标准肯定咱们的非正常的值:
图中咱们能够看出,咱们的最大值为74,最小值为4,平均值为24。这样的话,咱们能够定义50以上的都是非正常的值。
下面咱们来定义一个触发器:
进入:配置 ---> 主机 ---> node1 ---> 触发器 ---> 建立触发器
咱们的表达式能够直接点击右侧的添加,而后定义本身所需的内容,便可自动生成:
生成完毕后,咱们就点击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转:
而后咱们去看一下咱们刚刚定义了触发器的那个监控项:
咱们能够看出,这个里面就有了一根线,就是咱们刚刚定义的值,超过线的即为异常状态,看起来很是直观。
可是,如今即便超过了这根线,也仅仅会产生一个触发器事件而不会作其余任何事。所以,咱们就须要去定义一个动做(action)。
咱们的触发器彼此之间可能会存在依赖关系的,一旦某一个触发器被触发了,那么依赖这个触发器的其他触发器都不须要再报警。
咱们能够来试想一下这样的场景:
咱们的多台主机是经过交换机的网络链接线来实现被监控的。若是交换机出了故障,咱们的主机天然也没法继续被监控,若是此时,咱们的全部主机通通报警……想一想也是一件很可怕的事情。要解决这样的问题,就是定义触发器之间的依赖关系,当交换机挂掉,只它本身报警就能够了,其他的主机就不须要在报警了。这样,也更易于咱们判断真正故障所在。
注意:目前zabbix不可以直接定义主机间的依赖关系,其依赖关系仅能经过触发器来定义。
咱们来简单举一个例子,示范一下如何定义一个依赖关系:
打开任意一个触发器,上面就有依赖关系,咱们进行定义便可:
因为当前咱们只定义了一个触发器,就不演示了,过程就是这样~添加之后点击更新便可。
触发器能够有多级依赖关系,好比咱们看下面的例子:
咱们须要去基于一个对应的事件为条件来指明该作什么事,通常就是执行远程命令或者发警报。
咱们有一个告警升级的机制,因此,当发现问题的时候,咱们通常是先执行一个远程操做命令,若是可以解决问题,就会发一个恢复操做的讯息给接收人,若是问题依然存在,则会执行发警报的操做,通常默认的警报接收人是当前系统中有的zabbix用户,因此当有人须要收到警报操做的话,咱们则须要把它加入咱们的定义之中。
其次,每个用户也应该有一个接收告警信息的方式,即媒介,就像咱们接收短信是须要有手机号的同样。
咱们的每个监控主机,可以传播告警信息的媒介有不少种,就算咱们的每一种大的媒介,可以定义出来的实施媒介也有不少种。而对于一个媒介来讲,每个用户都有一个统一的或者不一样的接收告警信息的端点,咱们称之为目标地或者目的地。
综上,为了可以发告警信息,第一,咱们要事先定义一个媒介,第二,还要定义这个媒介上用户接收消息的端点(固然,在用户上,咱们也称之为用户的媒介)。
咱们能够去看一下系统内建的媒介类型:
这只是大的媒介类型,里面还有更多的细分,咱们以Email
为例:
一样的,同一个类型咱们也能够定义多个,仍是以Email
为例,咱们能够定义一个腾讯的服务器,一个网易的服务器,一个阿里的服务器等等。
咱们仍是以Email
为例。来简单的定义一个媒介:
这样定义之后,咱们去更新一下就能够了。
媒介定义好了,那么咱们怎么才可以而后用户接收到邮件呢?好比让咱们的Admin用户接收邮件,咱们应该怎么操做呢?具体步骤以下:
进入 管理 ---> 用户 ---> Admin ---> 报警媒介
咱们来添加一条进来:
添加事后是这样的:
而后咱们更新就能够了。
一个用户能够添加多个接收的媒介类型。
咱们以前说过了,动做是在某些特定条件下触发的,好比,某个触发器被触发了,就会触发咱们的动做。
如今,我么基于redis来定义一个动做。
首先,咱们在agent端使用yum安装一下redis
:
[root@node1 ~]# yum install redis -y
修改一下配置文件:
[root@node1 ~]# vim /etc/redis.conf bind 0.0.0.0 #不作任何认证操做
修改完成之后,咱们启动服务,并检查端口:
[root@node1 ~]# systemctl start redis [root@node1 ~]# ss -nutlp | grep redis tcp LISTEN 0 128 *:6379 *:* users:(("redis-server",pid=5250,fd=4))
接着,咱们就能够去网站上来定义相关的操做了:
进入 配置 ---> 主机 ---> node1 ---> 监控项(items)---> 建立监控项
填写完毕之后,咱们点击下方的添加。
该监控项已成功添加。
咱们能够去查看一下他的值:
检测中 ---> 最新数据
定义好了监控项之后,咱们亦可来定义一个触发器,当服务有问题的时候,咱们才能及时知道:
进入 配置 ---> 主机 ---> node1 ---> 触发器(trigger)---> 建立触发器
填写完毕之后,咱们点击下方的添加。
该触发器已成功添加。
咱们去查看一下:
监测中 ---> 最新数据
咱们来手动关闭redis服务来检测一下:
[root@node1 ~]# systemctl stop redis.service
进入 监测中 ---> 问题
能够看到,如今已经显示的是问题了。而且有持续的时间,当咱们的服务被打开,会转为已解决状态:
[root@node1 ~]# systemctl start redis.service
如今咱们就能够去定义action了。
进入 配置 ---> 动做 ---> 建立动做(注意选择事件源为触发器)
咱们能够进行操做添加:
咱们能够看出,还须要在虚拟机上进行两项操做,一是修改sudo配置文件使zabbix用户可以临时拥有管理员权限;二是修改zabbix配置文件使其容许接收远程命令。咱们进行以下操做:
[root@node1 ~]# visudo #至关于“vim /etc/sudoers” ## Allow root to run any commands anywhere root ALL=(ALL) ALL zabbix ALL=(ALL) NOPASSWD: ALL #添加的一行,表示不须要输入密码 [root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #容许接收远程命令 LogRemoteCommands=1 #把接收的远程命令记入日志 [root@node1 ~]# systemctl restart zabbix-agent.service
咱们添加了第一步须要作的事情,也就是重启服务,若是重启不成功怎么办呢?咱们就须要来添加第二步:
添加完成之后,咱们能够看一下:
操做添加完了,若是服务自动恢复了,咱们能够发送消息来提示:
至此,咱们的动做设置完毕,能够点击添加了,添加完成会自动跳转至以下页面:
如今咱们能够手动中止服务来进行测试:
[root@node1 ~]# systemctl stop redis.service
而后咱们来到问题页面来查看,发现确实有问题,而且已经解决:
咱们能够去server端查看是否收到邮件:
也能够去agent端查看端口是否开启:
[root@node1 ~]# systemctl stop redis.service [root@node1 ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:6379 *:* LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 128 *:23000 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::*
能够看出端口正常开启,咱们的动做触发已经完成。
补充:咱们也可使用脚原本发送警报,咱们的脚本存放路径在配置文件中能够找到,定义为:
AlterScriptsPath=/usr/lib/zabbix/alertscripts
接下来,咱们来一波完全一点的操做,咱们来手动修改一下redis服务的监听端口,这样,咱们就不能经过重启服务恢复了:
[root@node1 ~]# vim /etc/redis.conf #port 6379 port 6380 #注释掉原来的端口,更换为新的端口 [root@node1 ~]# systemctl restart redis
而后,咱们来网页查看一下状态:
进入 监测中 ---> 问题,能够看到是报错的:
这样,在通过了重启服务之后仍是没能把解决问题,就会发邮件告警:
咱们再把服务端口改回来,而后重启服务。这样,等到问题自动解决了之后,咱们会再次收到邮件:
这样,咱们的动做设定已经所有测试完成。
数据日积月累,若是咱们想要更直观的了解到各项数据的状况,图形无疑是咱们的最佳选择。
zabbix提示了众多的可视化工具提供直观展现,如graph、screen及map等。上文中咱们也看到过一些简单的图形展现。
若是咱们想要把多个相关的数据定义在同一张图上去查看,就须要去自定义图形了~
自定义图形中能够集中展现多个时间序列的数据流。支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不一样形式的图形。
具体的设置过程以下:
进入 配置 ---> 主机 ---> node1 ---> 图形,选择右上角建立图形:
咱们来看一看四种状态:
包括咱们的主机均可以自定义,不过通常来讲,线型是看的最清晰的,咱们一般会使用这个。
咱们也能够克隆一个packets来更改成bytes用~一样的,咱们若是想添加别的内容,也均可以添加的。
咱们一共添加了三个图形,咱们能够在 监测中 ---> 图形 来查看
咱们建立的自定义图形也能够放在一个聚合图里显示,具体的设置方法以下:
进入 监测中 ---> 聚合图形 ---> 选择右上角建立聚合图形
咱们还能够选择分享:
定义好了添加便可。
定义完成之后,咱们须要编辑一下,来指定保存哪些图:
依次添加便可,添加完成以后是这样婶儿的~:
由于咱们只有三张图,因此添加的有重复的,一般状况下是不须要这样的。
若是咱们有多个聚合图形想要按顺序展现的话,咱们就能够定义一个幻灯片。
具体步骤以下:
进入 监测中 ---> 聚合图形 ---> 右上角选择幻灯片演示 ---> 建立幻灯片
而后咱们打开便可。打开之后显示的是图片1,5s之后会自动切换为图片2。
这样就能够实现幻灯片演示,咱们就不须要去手动切换了。
在拓扑图中,咱们能够定义成一个复杂的网络链接图,咱们可使用一台主机来链接另外一台主机,这样的话,咱们就能够查看出究竟是哪一个连接出了问题。
咱们就不来演示了,看一下过程便可:
进入 监测中 ---> 拓扑图 ---> 全部地图 ---> Local network(默认就有的)
经过 Ping 和 Traceroute 就能够实验咱们上述的功能。
以前咱们说过,每个主机的监控项都不少,咱们一个一个的添加实在是太头疼了,更况且,可能不止一个主机。
可是咱们能够把一个redis的监控项添加进一个模板里,这样更方便于咱们之后的添加。
具体操做以下:
进入 配置 ---> 模板 ---> 选择右上角建立模板
填写完之后,咱们点击下方的添加便可。
咱们能够基于组过滤一下,就能看到咱们刚刚定义的模板:
同样的,咱们能够向里面添加应用集、监控项、触发器、图形等等,添加完成之后,后期咱们再有主机须要添加就直接套用模板便可。
须要注意的一点是,咱们如今添加的是模板,因此不会当即采用数据,只有连接到主机上之后,才会真正生效。
咱们也能够直接导入一个模板,在互联网上能够找到不少,导入的步骤以下:
一样的,咱们建立好的模板也能够导出为文件:
咱们任意选中一个准备好的模板,而后页面的最下方就有导出按钮:
所以,咱们就能够很是方便的进行应用了~
咱们的软件已经建立了许多模板,咱们可使用一个模板来看看效果。
进入 配置 ---> 主机 ---> node1 ---> 模板
咱们就能够选择要添加的模板了:
到这里咱们就能够点击更新了。一旦咱们成功连接至模板,咱们的主机数据就会更新了:
注意:一、一个主机能够连接多个模板,但尽可能不要让一个指标被采样两次。
二、若是咱们有多个主机,同时这些主机也在一个主机组里,这样的话,咱们只须要在这个主机组里添加模板,就可以让在主机组里的全部主机进行tongb
当咱们一个主机的模板不想要用了,咱们就能够移除模板连接,具体操做步骤以下:
进入 配置 ---> 主机 ---> node1 ---> 模板
咱们就能够把不须要的模板移除:
咱们来删除掉试试看,移除并清理之后,咱们点击更新。就会自动跳转至以下界面:
能够看出,咱们的模板已经被移除了。
宏是一种抽象(Abstraction),它根据一系列预约义的规则替换必定的文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换。
相似地,zabbix基于宏保存预设文本模式,而且在调用时将其替换为其中的文本。
zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、{TRIGGER.EVENTS.ACK}等。
详细信息请参考官方文档
宏一共有三种级别,分别是全局宏、模板宏、主机宏。
不一样级别的宏的适用范围也不同。
全局宏也能够做用于全部的模板宏和主机宏,优先级最低。
模板宏则能够做用于全部使用该模板的主机,优先级排在中间。
主机宏则只对单个主机有效,优先级最高。
宏的类型分为系统内建的宏和用户自定义的宏。
为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏(user macro)。
系统内建的宏在使用的时候须要{MACRO}
的语法格式,用户自定义宏要使用{$MACRO}
这种特殊的语法格式。
宏能够应用在item keys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中……
宏的名称只能使用大写字母、数字及下划线。
进一步信息请参考官方文档。
若是咱们想要在咱们的监控项(items)上使用宏,咱们就要先去定义一个宏,而后去建立监控项,直接引用定义好的宏便可。具体操做步骤以下:
进入 管理 ---> 通常 ---> 右上角选择宏
这样,咱们的全局宏就添加好了。
进入 配置 ---> 主机 ---> 全部主机 ---> 监控项 ---> 右上角建立监控项
填写完成之后,点击添加。而后咱们就能够看到这个调用宏的监控项已经添加成功:
咱们能够来查看一下这个监控项如今的状态:
进入 监测中 ---> 最新数据
若是咱们把服务停掉。就会变成down
的状态:
[root@node1 ~]# systemctl stop redis
发现咱们的监控项是能够正常使用的。
若是咱们把node1节点上的redis服务监听端口手动改掉的话,咱们刚刚定义的监控项就不能正常使用了,这样的话,咱们就须要去修改宏。
可是,这毕竟只是个例,因此咱们不须要去修改全局宏,只用修改模板宏或者主机宏就能够了。
下面分别说一下,模板宏和主机宏的不一样修改操做:
模板宏
模板宏的修改,咱们须要进入:配置 ---> 模板 ---> redis stats(相应的模板) ---> 宏
在这里点击添加就能够了。
主机宏
主机宏的修改,咱们须要进入:配置 ---> 主机 ---> 全部主机 ---> node1 ---> 宏
在这里点击添加就能够了。