企业级 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 

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

配置 server 端

zabbix 的安装

更新yum源

官网下载一个包

[root@server01 ~]# 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源备份一下

[root@server01 yum.repos.d]# mv epel.repo epel.repo.bak

 开始安装软件

[root@server01 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

 配置数据库配置文件

[root@server01 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            #开启二进制日志
 

 重启数据库

[root@server01 ~]# 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 提供什么:

[root@server01 ~]# 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

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

[root@server01 zabbix-server-mysql-3.4.12]# gzip -d create.sql.gz 

[root@server01 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,
 

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

直接导入数据即可

[root@server01 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端的配置文件

[root@server01 ~]# cd /etc/zabbix/
[root@server01 zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
[root@server01 zabbix]# cp zabbix_server.conf{,.bak}
[root@server01 zabbix]# vim zabbix_server.conf
[root@server01 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来实现的。

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

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

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

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

[root@server01 ~]# systemctl start zabbix-server.service

启动陈宫后查看监听端口

[root@server01 ~]# 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 的配置文件在哪里;

[root@server01 ~]# 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   这个配置文件就是做映射的文件,

 时区是一定要设置的 ,这里被注释掉是因为,我们可以咋洗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服务了

[root@server01 ~]# systemctl start httpd.service
[root@server01 ~]# ss -nutl

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

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

 

 

 

 

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


 配置agent 端

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

1.安装zabbix

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

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

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

2.修改配置文件

先查看以下包内有什么

Complete!
[root@server03 ~]# 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
对配合文件做一个备份然后去修改配置文件

[root@server03 ~]# cd /etc/zabbix/
[root@server03 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@server03 zabbix]# cp zabbix_agentd.conf{,.bak}

[root@server03 zabbix]# vim zabbix_agentd.conf

 

 

 

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

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

[root@server02 zabbix]# systemctl start zabbix-agent.service 

 查看端口

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

监控过程详解

1.修改密码及中文版

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

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

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

 

 修改完成更新即可

2.创建主机及主机群组

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

 

 

 

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

我们把agent2 节点也添加进来

3.监控项(items)

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

接下来定义监控项

 

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

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

[root@server01 ~]# zabbix_get -s 192.168.8.20 -p 10050 -k "system.cpu.intr"
481899

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

 

 

 

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

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

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

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

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

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

上传到web的发布路径 

 [root@server01 fonts]# pwd
/usr/share/zabbix/fonts

[root@server01 fonts]# mv simsun.ttc simsun.ttf

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

再打开页面问题解决了

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

定义一个带参数的监控项

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

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

上述内容通过ifconfig 查看

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

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

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

看一下网页的显示情况:

 快速定义类似指标

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

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

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

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

 删除监控项

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

监控项存储的值

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

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

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

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

  

触发器

1.简介

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

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

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

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

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

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

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

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

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

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

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)将返回一周之前的最大值;

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

3.定义一个触发器

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

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

下面来定义一个触发器:

 

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

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

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

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

4.触发器的依赖关系

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

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

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

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

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

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

 

 

 创建完是这样子的

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

 5.定义动作(action)

简介

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

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

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

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

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

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

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

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

定义一个媒介(media)

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

 

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

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

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

我们来添加一条进来:

 

 然后更新就可以了。

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

定义一个动作(action)

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

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

[root@server02 zabbix]# yum -y install redis

 修改一下配置文件

 [root@server02 zabbix]# vim /etc/redis.conf 

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

启动服务,并查看端口

 [root@server02 zabbix]# systemctl start redis
[root@server02 zabbix]# ss -tnul |grep 6379
tcp    LISTEN     0      128       *:6379                  *:*          

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

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

 点击下方的添加

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

 

定义触发器 

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

 

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

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

[root@server02 zabbix]# systemctl stop redis

 

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

[root@server02 zabbix]# systemctl start redis

 

 定义动作(action)

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

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

[root@server02 zabbix]# visudo

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

[root@server02 zabbix]# vim /etc/zabbix/zabbix_agentd.conf

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

[root@server02 zabbix]# systemctl restart zabbix-agent.service 

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

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

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

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

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

[root@server02 zabbix]# systemctl stop redis

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

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

 [root@server02 ~]# ss -tnlu | grep 6379
tcp    LISTEN     0      128       *:6379                  *:*                  

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

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

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

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

为什么 用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服务端邮件报警

 停止redis 服务测试

[root@server02 ~]# systemctl stop redis

 

进入邮箱查看

 2.使用外部邮件账号发送邮件报警

关闭sendmail 或者postfix

systemctl stop sendmail

systemctl disable sendmail

systemctl stop postfic

systemctl disable postfix

安装邮件发送工具mailx 

yum -y install mailx

 配置zabbix-server端外部邮箱

[root@server01 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 服务端邮件发送脚本

[root@server01 ~]# cd /usr/lib/zabbix/alertscripts/
[root@server01 alertscripts]# vim sendmail.sh

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

修改脚本用户为zabbix  

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

脚本需要执行权限 

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

 关闭redis 服务 测试

[root@server02 ~]# systemctl stop redis

 

 

 附件的信息

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


zabbix可视化

1.简介 

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

2.自定义图形(Graphs)

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

具体设置过程如下:

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

 

 

 

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

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

聚合图形(Screens)

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

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

定义好了添加即可。

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

 

 

 

 幻灯片演示(Silde shows)

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

    具体步骤如下

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

 

 

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

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

定义拓扑图(Maps)

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

具体步骤如下:

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

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

模板

创建模板

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

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

具体操作如下:

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

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

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

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

模板的导入导出

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

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

 

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

模板的应用

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

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

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

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

 

移除模板链接

 宏(macro)

简介

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

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

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

详细信息参考官方文档

级别

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

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

 类型

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

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

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

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

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

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

 

定义一个宏

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

定义全局宏

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

 

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

定义监控项,调用宏

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

 关闭redis 服务测试下

[root@server02 ~]# systemctl stop redis

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

修改宏

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

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

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

模板宏

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

点击添加就可以了。

主机宏

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

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

猜你喜欢

转载自blog.csdn.net/weixin_42123737/article/details/81709268