企业级 zabbix 监控项目实战

此次部署 参考https://www.cnblogs.com/keerya/p/7953695.html#_label0_6_5

目录

一、zabbix 的监控搭建

环境准备

配置 server 端

zabbix 的安装

配置server 

配置web GUI

浏览器的访问并进行初始化设置

 配置agent 端

1.安装zabbix

2.修改配置文件

监控过程详解

1.修改密码及中文版

2.创建主机及主机群组

3.监控项(items)

定义一个带参数的监控项

 快速定义类似指标

 删除监控项

监控项存储的值

触发器

设置邮件报警到163邮箱

zabbix可视化

1.简介 

2.自定义图形(Graphs)

模板

 宏(macro)


 



一、zabbix 的监控搭建

环境准备

系统centos 7 

主机:                            IP:

server01(server)       192.168.8.19

server02(agent)        192.168.8.20

server03 (agent)       192.168.8.21

三台主机同步,关闭防火墙 selinux

systemctl stop firewalld;systemctl disable firewalld

 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 

[[email protected] ~]# grep -n '^[a-Z]' /etc/selinux/config 
7:SELINUX=disabled
12:SELINUXTYPE=targeted 
 

配置 server 端

zabbix 的安装

更新yum源

官网下载一个包

[[email protected] ~]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
 

下载到本地后直接安装

yum -y localinstall zabbix-release-3.4-2.el7.noarch.rpm 

由于配置了epql源 带zabbix 但版本较低为防止冲突把epel源备份一下

[[email protected] yum.repos.d]# mv epel.repo epel.repo.bak

 开始安装软件

[[email protected] yum.repos.d]# yum -y install zabbix-agent.x86_64 zabbix-get.x86_64 zabbix-sender.x86_64 zabbix-server-mysql.x86_64 zabbix-web zabbix-web

 配置数据库配置文件

[[email protected] yum.repos.d]# 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            #开启二进制日志
 

 重启数据库

[[email protected] ~]# systemctl restart mariadb.service 

 创建数据并授权账号

MariaDB [(none)]> create database zabbix character set 'utf8';
MariaDB [(none)]> grant all on zabbix.* to 'zbxadmin'@'192.168.8.%' identified by 'beckham';
MariaDB [(none)]> flush privileges;#刷新权限

导入表

首先我们来看看 zabbix-server-mysql 提供什么:

[[email protected] ~]# 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.4.12
/usr/share/doc/zabbix-server-mysql-3.4.12/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.4.12/COPYING
/usr/share/doc/zabbix-server-mysql-3.4.12/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.4.12/NEWS
/usr/share/doc/zabbix-server-mysql-3.4.12/README
/usr/share/doc/zabbix-server-mysql-3.4.12/create.sql.gz  # 生成表的各种脚本
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

使用这个文件来生成我们需要的表

[[email protected] zabbix-server-mysql-3.4.12]# gzip -d create.sql.gz 

[[email protected] zabbix-server-mysql-3.4.12]# 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`             varchar(32)     DEFAULT '15m'             NOT NULL,
    `lang`                   varchar(5)      DEFAULT 'en_GB'           NOT NULL,
 

 可以看到创建表头的发现并没有创建数据库的命令,这就是为什么需要创建数据库的原因

直接导入数据即可

[[email protected] zabbix-server-mysql-3.4.12]# mysql -uzbxadmin -h192.168.8.19 -p zabbix <create.sql 

Enter password: 

进入数据查看

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zabbix             |
+--------------------+
3 rows in set (0.00 sec)

MariaDB [(none)]> use zabbix
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
| application_prototype      |

.......

| widget_field               |
+----------------------------+

数据就已经导入成功了

 

配置server 

我们数据库准备好了,接下来配置server端的配置文件

[[email protected] ~]# cd /etc/zabbix/
[[email protected] zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
[[email protected] zabbix]# cp zabbix_server.conf{,.bak}
[[email protected] zabbix]# vim zabbix_server.conf
[[email protected] zabbix]# grep -n '^[a-Z]' zabbix_server.conf
13:ListenPort=10051                # 默认监听的端口
21:SourceIP=192.168.8.19      # 发数据采样请求的IP 
40:LogFile=/var/log/zabbix/zabbix_server.log     #日志默认文件记录,也可以发送给我们的rsyslog日志记录系统,也可以自己设置
51:LogFileSize=0   
74:PidFile=/var/run/zabbix/zabbix_server.pid
84:SocketDir=/var/run/zabbix
103:DBName=zabbix
119:DBUser=zabbix
332:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
450:Timeout=4
492:AlertScriptsPath=/usr/lib/zabbix/alertscripts
502:ExternalScripts=/usr/lib/zabbix/externalscripts
538:LogSlowQueries=3000
为什么要设置SourceIP,由于我们的客户端可能一个主机多个IP,我们又不能允许任意的IP 都能从我们这里读取数据就会有一个验证方式,而该方式是基于识别SourceIP来实现的。

企业级 zabbix 监控项目实战

LogFileSize=0  日志的滚动,默认值为0表示不滚动,当数据特别多的时候,我们也可以设置成为1,然后设置当数据文件最大到多少时会自动滚动

企业级 zabbix 监控项目实战

日志的级别,一共有6个级别,我们可以根据自己的需要来设置级别。其中0表示输出最少的信息,5表示输出最详细的信息,默认值为3,设置3的话就表示,0,1,2,3 4个级别都显示。考虑到生产系统中的压力时,这里的信息,如果没有必要的话,越简单越好,只要出错的时候,我们可以依据其进行拍错即可。

DBHost=192.168.8.19     # 数据库对外的主机
DBName=zabbix             # 数据库的名称
DBUser=zbxadmin          # 数据库用户
DBPassword=beckham   # 数据密码
DBPort=3306                  # 数据库启动端口

 以上,我们的基本配置已经完成,可以开启服务了;

[[email protected] ~]# systemctl start zabbix-server.service

启动陈宫后查看监听端口

[[email protected] ~]# ss -tnlu | grep 10051
tcp    LISTEN     0      128       *:10051                 *:*                  
tcp    LISTEN     0      128      :::10051                :::*             

如果端口没有起来的话 仔细查看配置文件,或cat /var/log/zabbix/zabbix_server.log 查看日志信息

一般常见两种问题 mysql.sock的 位置 与数据库登录账号密码的问题

配置web GUI

查看web GUI 的配置文件在哪里;

[[email protected] ~]# 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.4.12
/usr/share/doc/zabbix-web-3.4.12/AUTHORS
/usr/share/doc/zabbix-web-3.4.12/COPYING
/usr/share/doc/zabbix-web-3.4.12/ChangeLog
/usr/share/doc/zabbix-web-3.4.12/NEWS
/usr/share/doc/zabbix-web-3.4.12/README
/usr/share/zabbix
.......

可以看到 /etc/httpd/conf.d/zabbix.conf   这个配置文件就是做映射的文件,

企业级 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 =
date.timezone = Asia/Shanghai

 接下来我们就可以启动httpd服务了

[[email protected] ~]# systemctl start httpd.service
[[email protected] ~]# ss -nutl
企业级 zabbix 监控项目实战

 服务已经开启,接下来我们就可以用浏览器来访问了

浏览器的访问并进行初始化设置

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 登录进来及可以看到仪表盘了

企业级 zabbix 监控项目实战

 


 配置agent 端

当我们把监控端配置启动以后,我们需要来设置一下我们的监控端,我们在被监控的主机安装好agent,设置好他的server毛病把他添加到server端,就能将其纳入我们的监控系统中去了。

1.安装zabbix

同样,先安装zabbix。下载包 备份epel 源,安装所需的包,具体如下

[[email protected] ~]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[[email protected] ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm 
[[email protected] ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak
[[email protected] ~]# yum -y install zabbix-agent zabbix-sender

安装完成我们去修改配置文件

2.修改配置文件

先查看以下包内有什么

Complete!
[[email protected] ~]# 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.12
/usr/share/doc/zabbix-agent-3.4.12/AUTHORS
/usr/share/doc/zabbix-agent-3.4.12/COPYING
/usr/share/doc/zabbix-agent-3.4.12/ChangeLog
/usr/share/doc/zabbix-agent-3.4.12/NEWS
/usr/share/doc/zabbix-agent-3.4.12/README
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix
对配合文件做一个备份然后去修改配置文件

[[email protected] ~]# cd /etc/zabbix/
[[email protected] zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[[email protected] zabbix]# cp zabbix_agentd.conf{,.bak}

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

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 重点需要修改的依然是 GENERAL PARAMETERS段:

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 修改完成后,保存退出,然后就可以启动服务了

[[email protected] zabbix]# systemctl start zabbix-agent.service 

 查看端口

企业级 zabbix 监控项目实战

 已经启动成功,接着我们就可以去server 端去添加了,两台agent 做同样的操作唯一不同的就是 Hostname 要设为各自的主机名

监控过程详解

1.修改密码及中文版

本身英语不好,这里改成中文版如果英语好的话看英文版即可,中文版适合快速的学习

企业级 zabbix 监控项目实战

选择中文后,点击下面的update即可更新成功

企业级 zabbix 监控项目实战

 为了安全起见,我们把密码改掉

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 修改完成更新即可

2.创建主机及主机群组

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

然后我们就可以添加主机了

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 完成后,就可以看到,我们添加的这个主机已经出现在列表中了

企业级 zabbix 监控项目实战

我们把agent2 节点也添加进来

企业级 zabbix 监控项目实战

3.监控项(items)

点击上图中kibana的监控项,即可创建监控项,先创建三个应用集

企业级 zabbix 监控项目实战

接下来定义监控项

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent 端,并且能够获取命令。或者在agent端定义了能够让server 端获取命令。一般都是内建的命令,都对应的有起名字,称之为key。

企业级 zabbix 监控项目实战

 关于key 值,我们可以直接在网页上设置(服务器自动执行)也可以使用命令行命令(手动来执行)来获取:

[[email protected] ~]# zabbix_get -s 192.168.8.20 -p 10050 -k "system.cpu.intr"
481899

在agent 端,也可以使用命令来查看intr的速率变化

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 定义完成回到主机,等待5秒,可以看到kibana后面的选项已经有变成绿色了

企业级 zabbix 监控项目实战

回到仪表盘,可以看到我们监控项有2个处于启用状态

企业级 zabbix 监控项目实战

 那么,我们的数据在哪里呢,点击最新数据,把我们的agent节点添加到主机,应用以下就可以看到下面的状态了

因为zabbix 改中文后会出现乱码 先解决这个问题

企业级 zabbix 监控项目实战

 从Windows 电脑上获取字体的文件simsun.ttc

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

将获取到的字体文件上传到zabbix 的web 服务器上,

上传到web的发布路径 

 [[email protected] fonts]# pwd
/usr/share/zabbix/fonts

[[email protected] fonts]# mv simsun.ttc simsun.ttf

修该下面文件中字体graphfont 为 simsun
[[email protected] fonts]# vim /usr/share/zabbix/include/defines.inc.php 

再打开页面问题解决了

企业级 zabbix 监控项目实战

事实上,我们关注的指标有很多种,我们一一添加进来即可。刚刚我们定义的监控项是很简单,指定一个key 即可,但是有些监控项是带有参数的,这样一来我们的监控项就有更多灵活性。接下来我们来简单说明一个需要带参数的监控项:

定义一个带参数的监控项

企业级 zabbix 监控项目实战

图中的[ ] 就是需要参数的意思,里面的值即为参数,带<>为不可省略的。我们就以这个为例子来说明:

  if 表示借口名; <mode> 表示那种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)、overuns等等

上述内容通过ifconfig 查看

我们来设置一下这个监控值

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 同样,我们也可以通过命令来查看:

[[email protected] fonts]# zabbix_get -s 192.168.8.20 -p 10050 -k "net.if.in[ens33,packets]"
14626

看一下网页的显示情况:

企业级 zabbix 监控项目实战

 快速定义类似指标

如果我们想定义一个类似的指标,我们可以直接选择克隆,然后见的而修改一点点参数即可

就以我们刚刚定义的 net.if.in[ens33,pachets] 为例,如果我们想要在定义一个out 的进行如下操作即可:

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 可以根据需要选择key 和克隆 看一下我们现在已经定义的指标:

企业级 zabbix 监控项目实战

 查看最新数据,可以看到,定义的监控项都有已经有值了

企业级 zabbix 监控项目实战

 删除监控项

如果一个监控项,我们用不上了, 就可以删除掉,但是如果你直接删除的话,默认数据是会留下的。所以我们要先清除数据,然后在删除,具体操作如下:

企业级 zabbix 监控项目实战

监控项存储的值

对于监控项存储的值,老一点的版本只有一下三种方式:

  • As is: 不对数据做任何处理(存储的为原始值)
  • Delta:(simple change)(变化),本次采样减去前一次采样的值得结果
  • Delta:(speed per second)(速率),本次采样减去前一次采样的值,再除以经过的时长;

而在3.4版本以后就有了更多的表现形式:

我们还可以定义多个步骤,对采样数据进行多步处理,这样一来,灵活性就更强了

企业级 zabbix 监控项目实战  

触发器

1.简介

当我们的采集的值定义完了以后,就可以来定义触发器了。

我们触发器的定义是:界定某特定的item 采集到数据的非合理区间非合理状态。通常为逻辑表达式。

逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下:

OK (不符合条件):正常状态--> 较老的zabbix版本,其为FALSE;

PROBLEM(符合条件):正常状态--> 较老的zabbix 版本,其为TRUE;

一般 ,我们评定蔡妍数据是否为合理区间的比较稳妥的方式是---根据最后N次的平均值来判定结果;这个N词通常有两种定义方式:

1.最近N分钟所得结果的平均值

2.最近N词所得结果的平均值

而且,我们的触发器存在可调用的函数:

企业级 zabbix 监控项目实战

注:能用数值保存的就不要使用字符串

2.触发器表达式

 基本的触发器表达式格式如下所示

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

  •  server:主机名称
  • key:主机上关系的相应的监控项的key;
  • function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据,当前时间及其他因为进行;
  • 目前,触发器所支持的函数有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
  • parameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#“作为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
  • 此外avg、count、last、min和max还支持使用第二个参数,用于完成时间限定;例如。max(1h.7d)将返回一周之前的最大值;

表达式所支持的运算符及其功能如下图所示

企业级 zabbix 监控项目实战

3.定义一个触发器

我们可以查看以下 rate of interrupt 的值,并以其为标准确定我们的非正常值:

企业级 zabbix 监控项目实战

 图中可以看到,最大值为110.最小值为58 平均值为67。这样的话,可以定义90以上都是非正常的值。

下面来定义一个触发器:

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 我们的表达式可以直接点击右侧的添加,然后定义自己所需要的内容,即可自动生成:

企业级 zabbix 监控项目实战

 生成完毕后,点击添加,即成功定义了一个触发器,同时页面自动跳转

企业级 zabbix 监控项目实战

然后去看一下刚刚定义了触发器的那个监控项:

企业级 zabbix 监控项目实战

 可以看出。这个里面就有了一根线,就是我们刚刚定义的值,超过线的即为异常状态,看起来非常只管,但是,现在即使超过了这根线,也仅仅会产生一个触发器事件而不会做其他任何事,因此我们需要去定义一个动作(action)。

4.触发器的依赖关系

我们的触发器彼此之间可能会存在依赖关系的,一旦某一个触发器被出发了,那么依赖这个触发器的其余触发器都不需要再报警。

我们可以来试想一下这样的场景:

我们在多台主机是通过交换机的网络连接线来实现被监控的。如果交换机处了故障,我们的主机自然也无法继续被监控,如果此时,我们的所有主机统统报警。。。想想也是是一件可怕的事情,要解决这样的问题,就是定义触发器之间的依赖关系,当交换机挂掉,只它自己报警就可以了,其余的主机就不需要报警了。这样,也更易于我们判断真正故障所在。

注意:目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义。

我们来简单举一个例子,示范一下如何定义一个依赖关系:

打开任意一个触发器,上面就有依赖关系。我们进行定义即可:

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 创建完是这样子的

触发器可以有多级依赖关系,比如下面的例子

企业级 zabbix 监控项目实战

 5.定义动作(action)

简介

我们需要去基于一个对应的事件为条件来指明该做什么事,一般就是执行远程命令或者发警报。

我们有一个告警升级的机制,所以,当发现问题的时候,我们一般是先执行一个远程操作命令,如果能够解决问题,就发一个恢复操作的讯息给接收人,如果问题依然存在,则会执行发警报的操作,一般默认的警报接受人是当前系统中能够的zabbix用户,所以当有人需要收道警报的话,我们则需要把它加入我们的定义之中。

其次,每一个用户也应该有一个接受告警信息的方式,即媒介,就像我们接受短信是需要手机号的一样。

我们每一个监控主机,能够传播告警信息的媒介有很多种,就算我们的每一种大的媒介,能够定义出来的实施媒介也有很多种,而对于一个媒介来说,每一个用户都有一个统一的或者不同的接收告警信息的端点,我们称之为目标地或者目的地。

综上,为了能够发告警信息,第一我们要事先定义一个媒介,第二,还要定义这个媒介上用户接收信息的端点(当然,在用户上,我们也称之为用户的媒介)

我们可以去看一下系统内建的媒介类型:

企业级 zabbix 监控项目实战

这只是大的媒介类型,里面还有更多的细分,我们以Email为例:

企业级 zabbix 监控项目实战

同样的,同一个类型我们也可以定义多个,还是以Email为例,我们可以定义一个腾讯的服务器,一个网易的服务器,一个阿里的服务器等等。

定义一个媒介(media)

还是以Email为例来简单定义一个媒介:

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 这样定义以后,更新一下就可以了。

媒介定义好了,那么我们怎么才能让用户接受到邮件呢?比如让我们的admin用户接受邮件,我们应该怎么操作?具体步骤如下“:

进入管理-->用户-->Admin-->报警媒介

我们来添加一条进来:

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 然后更新就可以了。

一个用户可以添加多个接受的媒介类型。

定义一个动作(action)

我们之前说过了,动作是在某些特定条件下处罚的,比如,某个触发器触发了,机会吃醋发我们的dong动作。现在,基于redis来定义一个动作。

首先,在我们的agent端使用yum安装一个redis:

[[email protected] zabbix]# yum -y install redis

 修改一下配置文件

 [[email protected] zabbix]# vim /etc/redis.conf 

[[email protected] zabbix]# grep -i '^[a-Z]' /etc/redis.conf 
bind 0.0.0.0                  #不做任何认证操作

启动服务,并查看端口

 [[email protected] zabbix]# systemctl start redis
[[email protected] zabbix]# ss -tnul |grep 6379
tcp    LISTEN     0      128       *:6379                  *:*          

接着,就可以去网页上定义相关的操作了:

进入 配置-->主机-->kibana--监控项(items)-->创建监控项

企业级 zabbix 监控项目实战

 点击下方的添加

企业级 zabbix 监控项目实战

该监控项成功添加去看一下他的值

 企业级 zabbix 监控项目实战

定义触发器 

定义好了监控项以后,再来定义一个触发器,当服务有问题的时候,我们才能及时知道:

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 触发器成功添加 去看一下最新数据

企业级 zabbix 监控项目实战

 接下来我们关闭redis 服务来检测一下

[[email protected] zabbix]# systemctl stop redis

 企业级 zabbix 监控项目实战

 可以看到,现在已经显示的是问题,并且有持续的时间,当我们的服务被打开,就会转为已解决状态

[[email protected] zabbix]# systemctl start redis

 企业级 zabbix 监控项目实战

 定义动作(action)

现在我们就可以去丁一一action 了。

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 可以看出,还需要在虚拟机上进行两个操作意识修改sudo配置文件使zabbix用户能够临时拥有管理员权限;而是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:

[[email protected] zabbix]# visudo

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD: ALL   #添加一行,表示不需要密码

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

EnableRemoteCommands=1             #允许接受远程命令
LogRemoteCommands=1                  #把接受的远程命令记入日志

[[email protected] zabbix]# systemctl restart zabbix-agent.service 

我们添加第一步需要做的时间,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二部:

企业级 zabbix 监控项目实战

 添加完成后我们可以看一下:

企业级 zabbix 监控项目实战

 操作添加完了,如果服务自动回复了,我们可以发送消息来提示:

企业级 zabbix 监控项目实战

 至此,我们的动作设置完毕,可以点击添加了,添加完成会自动跳转至如下页面

企业级 zabbix 监控项目实战

 现在我们可以手动停止服务来进行测试

[[email protected] zabbix]# systemctl stop redis

然后我们来到问题页面来查看发现确实有问题并且已解决

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

看一下redis端口 已经起来了  说明动作已经出发完成。

 [[email protected] ~]# ss -tnlu | grep 6379
tcp    LISTEN     0      128       *:6379                  *:*                  

 在发送邮件的过程中出现额一个错误

企业级 zabbix 监控项目实战

 发送邮件失败排查了各种问题 起初 zabbix服务端没有安装mailx 和sendmail  安装完成后 ,手动发送邮件到qq邮箱和root 都可以 但是zabbix 的报警就是发送失败 

第一次把 邮件服务端的loclhost 改为了‘zabbix-server端的IP 结果还是不行 ,查看服务端 SMTP服务的25端口发现了问题

企业级 zabbix 监控项目实战

可以看到监听的是127.0.0.1的25端口 把localhost 改为127.0.0.1问题解决

企业级 zabbix 监控项目实战

为什么 用localhost 不行 只能用127.0.0.1 还有待研究 

补充:也可以使用脚本来发送报警,我们的脚本存放路径在配置文件中找到,定义为

AlertScriptsPath=/usr/lib/zabbix/alertscripts

设置邮件报警到163邮箱

1.用本地邮箱发送邮件

zabbix-server 端安装 mailx 、sendmail或者psotfix 服务

系统默认安装好了postfix

yum -y install sendmail

systemctl start sendmail

systemctl enable sendmail

yum -y install mailx

测试发送邮件,标题 zabbix 邮件内容zabbix test mail,

echo "zabbix test mail" | mail -s "zabbix" [email protected]

2.配置zabbix服务端邮件报警

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 停止redis 服务测试

[[email protected] ~]# systemctl stop redis

 企业级 zabbix 监控项目实战

进入邮箱查看

企业级 zabbix 监控项目实战 2.使用外部邮件账号发送邮件报警

关闭sendmail 或者postfix

systemctl stop sendmail

systemctl disable sendmail

systemctl stop postfic

systemctl disable postfix

安装邮件发送工具mailx 

yum -y install mailx

 配置zabbix-server端外部邮箱

[[email protected] alertscripts]# vim /etc/mail.rc

在最底部添加一下内容

 set [email protected]    # 邮箱地址
set smtp=smtp.163.com    # smtp服务
set [email protected]  #登录邮箱的用户名
set smtp-auth-password=123456    # 客户端授权密码 下面介绍怎么设置
set smtp-auth=login                     #方式

保存退出

配置zabbix服务端邮件报警

企业级 zabbix 监控项目实战

 创建新的报警媒介

企业级 zabbix 监控项目实战

添加zabbix用户报警邮箱地址

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 

 修改动作中的报警媒介

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 添加zabbix 服务端邮件发送脚本

[[email protected] ~]# cd /usr/lib/zabbix/alertscripts/
[[email protected] alertscripts]# vim sendmail.sh

#!/bin/bash
echo "$3" | mail -s "$2" $1

修改脚本用户为zabbix  

[[email protected] alertscripts]# chown zabbix:zabbix sendmail.sh
[[email protected] alertscripts]# ll
total 4
-rw-r--r-- 1 zabbix zabbix 40 Aug 17 11:02 sendmail.sh

脚本需要执行权限 

[[email protected] alertscripts]# chmod +x sendmail.sh 
[[email protected] alertscripts]# ll
total 4
-rwxr-xr-x 1 zabbix zabbix 40 Aug 17 11:02 sendmail.sh

 关闭redis 服务 测试

[[email protected] ~]# systemctl stop redis

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 附件的信息

企业级 zabbix 监控项目实战

 邮件报警动作已经全部测试完了 


zabbix可视化

1.简介 

     数据日积月累,如果我们想要更直观的了解到各项数据的情况,图形无疑是我们的最佳选择。zabbix提示了众多的可视化工具,提供直       观展示,如graph、screen及map等。上面我们也看到一些简单的图形展示。如果我们想要把多个相关的数据定义在同一张图上去查           看,就需要去自定义图形了

2.自定义图形(Graphs)

自定义图形中可以集中展示多个事件序列的数据源流。支持“线状图(normal)”、"堆叠面积图(stacked)"、“饼图(pie)”和“分离饼图(exploded)”四中不同形式的图形

具体设置过程如下:

进入配置-->主机-->kibana--->图形选择右上角创建图形:

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 包括我们的主机都可以自定义,不过一般来说,线型是最清晰的,我们通常会使用这个。

我们也可以克隆一个packets来更改为bytes用同样的,我们如果想添加别的内容,也都可以添加的.

聚合图形(Screens)

  我们创建自定义图形也可以放在一个聚合图里显示,具体的设置方法如下:

  进入检测中---->聚合图形----->选择右上角创建聚合图形

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

定义好了添加即可。

定义完成以后,我们需要编辑一下,来指定保存那些图片

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 幻灯片演示(Silde shows)

    如果我们又多个举个图形想要按顺序展示的话,我们就可以到定义一个幻灯片。

    具体步骤如下

     进入 检测中---->聚合图形---->右上角选择幻灯片演示----->创建幻灯片

企业级 zabbix 监控项目实战

 

 企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 打开即可,打开以后显示的是图片1,5s以后就会自动切换为图片2.

这样就可以实现幻灯片演示了,我们就不需要去手动切换了

定义拓扑图(Maps)

在拓扑图中,我们可以定义成一个复杂的网络连接图,我们可以使用一台主机来链接另一台主机,这样的话,我们就可以查出到底是哪个链接出了问题。

具体步骤如下:

进入监测中--->拓扑图---->所有地图---->local network (默认有效)

企业级 zabbix 监控项目实战

 通过ping和Traceroute 就可以试验我们上述的功能。具体不做演示了!

 

模板

创建模板

之前我们说过,每一个主机的监控项都很多,我们一个一个的添加实在太头疼了,更何况可能不止一个主机,但是我们可以把

一个redis的监控项加进一个模板里,这样方便于我们以后添加。

具体操作如下:

进入配置----->模板----->选择右上角创建模板

企业级 zabbix 监控项目实战

填写完成会,我们点击下方的添加即可。

添加完 自动跳转 可以看到定义好的模板了

企业级 zabbix 监控项目实战

 

 同样,我们也可以向里面添加应用集,监控项,触发器,图形等等,添加完成以后,后期我们再有主机需要监控redis直接套用模板即可,需要注意一点,我们现在添加的是模板。所以不会立即采用数据,只有链接到主机后,才会真正的生成数据。

模板的导入导出

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

同样的我们创建好的模板也可以导出为文件:

我们任意选中一个准备好的模板,然后页面最下方就有导出按钮:

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 因此,我们就可以非常方便的进行应用了

模板的应用

我们软件已经创建了许多模板,我们可以使用一个模板来看看效果。

进入配置--->主机----->kibana -----> 模板 我们就可以选择要添加的模板了:

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 注意:1,一个主机可以连接多个模板,但尽量不要让一个指标被采样两次。

2.如果有多个主机,同时这些主机也在一个主机组里,这样的话,我们只需要这个主机组里添加模板,能够能让主机组里的所有主机进行tongb

 

移除模板链接

企业级 zabbix 监控项目实战

 宏(macro)

简介

宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换。类似地

zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本。

zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGR.NAME}、{TRIGGER.EVENTS.ACK}等。

详细信息参考官方文档

级别

宏一共有三种级别,分别是全局宏、模板宏观,主机宏

不同级别的宏的使用范围不一样。

企业级 zabbix 监控项目实战

 类型

宏的类型分为系统内建的宏和用户自定义的宏。

为了更强的灵活性,zabbix还支持在全局,模板,或主机级别使用用户自定义的宏(user macro).

系统内建的宏在使用的时候需要{MACRO}的语法格式,用户自定义一的宏要使用{$MACRO}这种特殊的语法格式。

宏可以应用哎item keys和descriptions、trigger名称和表达式、主机结构IP/DNS及端口、discovery机制的SNMP协议的相关信息中

宏的名称只能是哟经大写字母,数字及下划线。

进一步信息请参考官方文档

 

定义一个宏

如果我们想要在我们的监控项(items)上使用宏,我们就要先去定义一个红,然后去创建监控项,直接引用定义好的宏即可,具体操作步骤如下:

定义全局宏

进入管理---->一般---->右上角选择宏

企业级 zabbix 监控项目实战

 企业级 zabbix 监控项目实战

 这样,全局宏就添加好了。

定义监控项,调用宏

进入配置--->主机---->所有主机----->监控项----->右上角创建监控项

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

企业级 zabbix 监控项目实战

 关闭redis 服务测试下

[[email protected] ~]# systemctl stop redis

企业级 zabbix 监控项目实战

 可以看到我们定义的宏可以正常使用

修改宏

如果我们把server02节点上的redis服务器端口手动改掉的话,我们刚定义的监控项就不能正常是使用了,这样的话我们就需要去

修改宏。但是这毕竟只是 个例,所以我们不需要去修改全局宏,只用修改模板工或者主机宏就可以了。

下面分别说一下,模板宏和主机宏的不同修改操作:

模板宏

模板宏的修改,我们需要进入:配置-->模板--->redis stats(相应的模板)--->宏

企业级 zabbix 监控项目实战

点击添加就可以了。

主机宏

主机宏的修改,我们需要进入:配置---->主机----->所有主机---->kibana----->宏

企业级 zabbix 监控项目实战

 监控的基本知识就到这里了。