前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix入门学习

zabbix入门学习

作者头像
全栈工程师修炼指南
发布2020-10-13 00:00:39
9690
发布2020-10-13 00:00:39
举报

0x00 Zabbix介绍

zabbix是一个开源的企业级性能监控解决方案,可以实时监控服务器/网络设备等硬件资源与其相关的各项指标是否是正常的,而且能够更加方便的、集中的监控他们;同时还提供了对被监控主机进行检查、信息收集等操作,保证服务器系统的安全运营,当被监控主机出现异常时,能够及时报警通知管理员;

zabbix由2部分构成:

  • zabbix server
  • 与可选组件zabbix agent。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

A:监控运维工具常常具有的功能:

  • 监控采集信息
  • 存储信息
  • 展示信息
  • 报警通知

B:与Zabbix类似的监控系统工具有那些? 答:cacti、nagios、ganglia等类似的监控系统

1. zabbix通信方式

  • Agent:通过专用的代理程序进行监控与常见的master/agent模型类似,如果被监控对象支持对应的agent([ˈeɪdʒənt] 推荐方式)
  • SSH/telnet:通过远程控制协议进行通讯
  • SNMP:通过SNMP协议(“简单网络管理协议)与被监控对象进行通讯,常使用在路由器、交换机网络硬件设备上安装,其实SNMP协议的工作方式也可以理解为master/agent的工作方,只不过是在这些设备中内置了SNMP的agent而已,所以大部分网络设备都支持这种协议。
  • IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。
  • JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展)监控JVM虚拟机时,使用这种方法也是非常不错的选择(业务推荐方式)
WeiyiGeek.通信方式
WeiyiGeek.通信方式

C:什么是Zabbix Agent她的作用是什么? 我们将zabbix agent部署到被监控主机上由agent采集数据,报告给负责监控的中心主机并将数据存入zabbix database中;

D:当监控规模变得庞大时我们是否需要部署多套zabbix系统进行监控呢? 答案肯定是不用的,因为zabbix支持分布式监控,可以把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机;

  • 当监控规模庞大到需要使用zabbix proxy
  • 区域内的每个被监控对象的信息被agent采集提交给代理主机(zabbix proxy),其作用与zabbix server类似
  • zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样使得zabbix proxy分摊了zabbix server的压力
  • 通过建立统一的监控入口监控所有的对象

zabbix proxy的架构图:

WeiyiGeek.架构图
WeiyiGeek.架构图

E:zabbix各种组件总结

  • zabbix database:用于存储所有zabbix的配置信息、存储agent端接收监控数据的数据库。
  • zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
  • zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等(目前可以采用mysql/postgresql)。
  • zabbix web : 如zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上(php编写的)
  • zabbix proxy:可选组件用于分布式监控环境中,zabbix proxy代表server端完成局部区域内的信息收集,最终统一发往server端。

2. zabbix工作模式

  • 主动模式:Agent端会将采集完的数据主动发送给server端;
  • 被动模式:Agent端也可以不主动发送数据,而是等待server过来拉取数据;
  • 总结:主动/被动模式可以同时存在;

agent端: 使用 zabbix_sender 工具,测试是否能够向Server端发送数据。 server端: 使用 zabbix_get 工具,测试是否能够从Agent端拉取数据。


0x01 Zabbix安装

Zabbix官网地址:https://www.zabbix.com/cn/download 官方文档:https://www.zabbix.com/documentation/4.2/manual/installation/install#installing_frontend 搭建环境:

代码语言:javascript
复制
# 当前Zabbix最新版本:4.2
Server:CentOS Linux release 7.6.1810 (Core) 3.10.0-957.10.1.el7.x86_64 (64)
    IP:192.168.1.99

Agent1:CentOS release 6.10 (Final) 2.6.32-754.12.1.el6.i686 (32)
    IP:192.168.1.100

Agent2:CentOS release 6.10 (Final) 2.6.32-754.12.1.el6.i686 (32)
    IP:192.168.1.100

#Agent 与 server 开放得端口情况
zabbix_agentd : 10050  
zabbix_server : 10051 

# 注意(安装软件前必须进行设置 \ 安装后别忘记启动防火墙)
# 临时关闭selinux
setenforce 0
# 永久关闭selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
#关闭防火墙和开机不启动(生产环境慎用,可以选择开放对应的端口)
systemctl stop firewalld.service
systemctl disable firewalld.service

# 手动配置官方源 yum (需要单独安装php)
[Centos 6.10]$ vim /etc/yum.repos.d/zbbix.repo
[zabbix]
name=zabbix
baseurl=http://repo.zabbix.com/zabbix/4.2/rhel/6/i386/
gpgcheck=0
enabled=1

[Centos 7.10]$ vim /etc/yum.repos.d/zbbix.repo
[zabbix]
name=zabbix
baseurl=http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/
gpgcheck=0
enabled=1

#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
$sudo yum install epel-release.noarch wget vim gcc gcc-c++ lsof net-tools

安装步骤(官方rpm包):

代码语言:javascript
复制
#Step1.Centos 7.x 64 安装步骤
[[email protected] ~]$ rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm


#Step2.Centos 6.x  32安装步骤
[[email protected] ~]$ rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/6/i386/zabbix-release-4.2-1.el6.noarch.rpm


#Step3.执行yum清理
yum clean all 
yum makecache  #生成元数据

#Step4.Centos 7.x 64  Server端安装
[[email protected] ~]$ yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-get
#//zabbix-get:可以进行测试agent端的数据
# 已安装:
#   zabbix-agent.x86_64 0:4.2.1-1.el7        zabbix-server-mysql.x86_64 0:4.2.1-1.el7          zabbix-web-mysql.noarch 0:4.2.1-1.el7
# 作为依赖被安装:
#   OpenIPMI-libs.x86_64 0:2.0.23-2.el7  OpenIPMI-modalias.x86_64 0:2.0.23-2.el7  dejavu-fonts-common.noarch 0:2.33-6.el7  dejavu-sans-fonts.noarch 0:2.33-6.el7  fontpackages-filesystem.noarch 0:1.44-8.el7
#   fping.x86_64 0:3.10-4.el7            libX11.x86_64 0:1.6.5-2.el7              libX11-common.noarch 0:1.6.5-2.el7       libXau.x86_64 0:1.0.8-2.1.el7          libXpm.x86_64 0:3.5.12-1.el7
#   libevent.x86_64 0:2.0.21-4.el7       libtool-ltdl.x86_64 0:2.4.2-22.el7_3     libxcb.x86_64 0:1.13-1.el7               libxslt.x86_64 0:1.1.28-5.el7          libzip.x86_64 0:0.10.1-8.el7
#   net-snmp-libs.x86_64 1:5.7.2-37.el7  php.x86_64 0:5.4.16-46.el7               php-bcmath.x86_64 0:5.4.16-46.el7        php-cli.x86_64 0:5.4.16-46.el7         php-common.x86_64 0:5.4.16-46.el7
#   php-gd.x86_64 0:5.4.16-46.el7        php-ldap.x86_64 0:5.4.16-46.el7          php-mbstring.x86_64 0:5.4.16-46.el7      php-mysql.x86_64 0:5.4.16-46.el7       php-pdo.x86_64 0:5.4.16-46.el7
#   php-xml.x86_64 0:5.4.16-46.el7       t1lib.x86_64 0:5.1.2-14.el7              unixODBC.x86_64 0:2.3.1-11.el7           zabbix-web.noarch 0:4.2.1-1.el7
# 完毕!


#Step5.Centos 6.x 32 Agent端安装
[[email protected] ~]$ yum -y install zabbix-agent zabbix-sender


#Step6.Centos 7.x 64 Server端 数据库账号密码设置
[[email protected] ~]$ yum install mariadb mariadb-server mariadb-libs mariadb-devel  #默认是安装mariadb
[[email protected] ~]$ mysql -uroot -p''
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to [email protected]'192.168.1.%' identified by 'zabbix';
mysql> quit; 
#导入初始架构和数据,系统将提示您输入新创建的密码。 (zabbix 初始化sql脚本) 通过管道导入到数据库中
$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix 
# 查看导入的数据库表
# MariaDB [zabbix]> show tables;
# +----------------------------+
# | Tables_in_zabbix           |
# +----------------------------+
# | acknowledges               |
# | actions                    |
# | alerts                     |
# | application_discovery      |
# | application_prototype      |
# | application_template       |
# | applications               |
# | auditlog                   |


#Step7.Centos 7.x 64  Server端 zabbix web 安装
[[email protected] /]$ yum install -y httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
[[email protected] /]$ rpm -ql "zabbix-web"  #存放的目录/usr/share/zabbix zabbix-web-mysql在上面都已经自动安装了

0x02 Zabbix配置

(1)Zabbix server配置 编辑配置文件 /etc/zabbix/zabbix_server.conf 设置DBPassword=password为我们在数据上设置的密码; 此处列出我们可能会经常修改的参数,如下:

代码语言:javascript
复制
#服务端监听的端口,保持默认即可
ListenPort=10051

#通过SourceIP参数可以指定服务端的源IP,当server端有多个IP地址时,我们可以指定服务端使用固定的IP与agent端进行通讯,为了安全起见,agent端会基于IP进行一定的访问控制,也就是说agent端只允许指定的IP以server端的身份采集被监控主机的数据,如果IP不对应,则不允许采集被监控主机的数据,所以,当server端有多个IP时,我们可以通过SourceIP参数,指定server端通过哪个IP采集被监控主机的数据。
SourceIP=

#通过LogType参数,可以指定通过哪种方式记录日志,此参数可以设置为三种值,system、file、console,system表示将日志发往syslog,file表示使用指定的文件作为日志文件,console表示将日志发往控制台,默认为file。
LogType=file


#当LogType设置为file时,通过LogFile参数设置日志文件位置。
LogFile=/var/log/zabbix/zabbix_server.log


#指明日志文件达到多大时自动滚动,单位为MB,如果设置LogFileSize为50,表示日志大小达到50MB滚动一次,设置为0表示日志文件不会滚动,所有日志保存在一个文件中。
LogFileSize=0

#通过DebugLevel参数可以定义日志的详细程度,即为日志级别。
DebugLevel=3

#通过DBHost参数设置zabbix数据库所在的服务器IP,由于此处zabbix与mysql安装在同一服务器上,所以此处设置为localhost
DBHost=localhost

#通过DBName指定zabbix数据库对应的名称
DBName=zabbix

#通过DBUser指定zabbix数据库用户名
DBUser=zabbix

#通过DBPassword指定zabbix数据库用户的密码/数据库服务监听的端口号
DBPassword=123123
DBPort=3306

#如果数据库服务与server端在同一台服务器上,可以通过DBSocket指定数据库本地套接字文件位置,但是需要注意,即使设置了mysql套接字文件的位置,还是需要配合DBHost参数,否则在登录zabbix控制台时,可能会出现警告,在zabbix server的log中,也可能会出现无法连接到数据库的提示。
DBSocket=/var/lib/mysql/mysql.sock

(2)为Zabbix前端配置PHP 编辑配置文件 /etc/httpd/conf.d/zabbix.conf

代码语言:javascript
复制
#新添加的VirtualHost进行包含
<VirtualHost 192.168.1.99:80>
servername zabbix.weiyigeek.com
documentroot /usr/share/zabbix
    ........
    php_value date.timezone Asia/Shanghai
    ........
</VirtualHost>

启动Zabbix server和agent进程,并为它们设置开机自启:

代码语言:javascript
复制
# systemctl restart zabbix-server zabbix-agent httpd mariadb 
# systemctl enable zabbix-server zabbix-agent httpd mariadb

现在您的Zabbix server已经安装完成并开始运行;

(3)为Zabbix agnet 配置 编辑Agent配置文件:/etc/zabbix/zabbix_agnet.conf ,通用参数配置段参数大多数与zabbix_server配置文件中的常用参数意义相同

代码语言:javascript
复制
#被动模式相关参数
Server:用于指定允许哪台服务器拉取当前服务器的数据,当agent端工作于被动模式,则代表server端会主动拉取agent端数据,那么server端的IP必须与此参数的IP对应,此参数用于实现基于IP的访问控制,如果有多个IP ,可以使用逗号隔开。
ListenPort:用于指定当agent端工作于被动模式时所监听的端口号,默认端口为10050,也就是说,server端默认访问10050端口,从而拉取数据。
ListenIP:用于指定agent端工作于被动模式时所监听的IP地址,默认值为0.0.0.0,表示监听本机的所有IP地址。
StartAgents:用于指定预生成的agent进程数量。

 

## 主动模式的常用参数
ServerActive:此参数用于指定当agent端工作于主动模式时,将信息主动推送到哪台server上,当有多个IP时,可以用逗号隔开。
Hostname:此参数用于指定当前主机的主机名,server端通过此参数对应的主机名识别当前主机。
RefreshActiveChecks:此参数用于指明agent端每多少秒主动将采集到的数据发往server端。

 
#此处,我们同时设置"被动模式"与"主动模式"的如下参数,其他保持默认即可,修改完成后保存退出。
Server=192.168.1.99
ServerActive=192.168.1.99
Hostname=zabbix.weiyigeek.com  #注意这里的主机名称一定要与zabbix创建的主机名称

#配置文件修改完成后,启动agent端进程,修改hosts地址的指向
[[email protected] ~]$ echo "192.168.1.99 zabbix.weiyigeek.com" >> /etc/hosts
192.168.1.99 zabbix.weiyigeek.com

[[email protected] ~]$ service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]

0x03 Zabbix-Web配置与使用
  1. 点击下一步验证环境是否满足安装条件
WeiyiGeek.条件验证
WeiyiGeek.条件验证

2. 点击下一步设置zabbix-database数据库连接信息

WeiyiGeek.数据库设置
WeiyiGeek.数据库设置

3. 点击下一步填写zabbix server信息(Server名称)

WeiyiGeek.
WeiyiGeek.

4. 显示前面Pre-installation summary配置得信息并且完成安装

WeiyiGeek.
WeiyiGeek.

5. 安装完成后出现登陆界面默认得账号:Admin,密码:zabbix

WeiyiGeek.首页
WeiyiGeek.首页

6. 配置界面为中文,点击个人中心 设置 User profile: Zabbix Administrator

WeiyiGeek.中文配置
WeiyiGeek.中文配置

菜单介绍:

  • 管理:一般用于管理zabbix自身及zabbix相关设置。
  • 配置:一般用于配置监控相关设置
  • 监测:一般用于查看被监控的相关数据
  • 报表:可以为管理员生成一段时间内的监控统计信息。
  • 资产:管理员可以查看被管控的主机有哪些,以及相关的资产信息。

(1)在zabbix中添加主机 两个zabbix的常用术语”主机”与”主机组”:

  • host(主机):需要被zabbix监控的对象,被称为主机,主机必须属于某个主机组。
  • hostgroup(主机组):”主机组”也被称为”主机群组”,是由具有相同属性、特征、角色的多个主机组成的逻辑单元。

前面我们将99主机作为了web/database/server,将100/101作为agent主机;所以这里需要将107添加到zabbix主机上;

实战实战:

代码语言:javascript
复制
Step1.配置 -> 主机群组 -> 创建主机群组 -> 输入名称添加即可
#显示:data	主机 1	模板	data1

Step2.配置 -> 主机 -> 创建主机 -> 填入主机名称 -> 选择代理程序接口 -> (由于没有使用zabbix-proxys所以不用改agent代理程序监控)
#data1	应用集	监控项	触发器	图形	自动发现	Web监测	192.168.1.100: 10050		已启用	zbxsnmpjmxipmi无
WeiyiGeek.添加主机
WeiyiGeek.添加主机
WeiyiGeek.主机状态
WeiyiGeek.主机状态

(2)在zabbix添加监控项

在前面我们建立了主机,却没有设置其监控项,所以zab是显示灰色状态,所以:

在zabbix中我们要监控的某一个指标,被称为”监控项”,就像我们的磁盘使用率,在zabbix中就可以被认为是一个”监控项”(item)

如果要获取到”监控项”的相关信息,我们则要执行一个命令,但是我们不能直接调用命令,而是通过一个”别名”去调用命令,这个”命令别名”在zabbix中被称为”键”(key);

所以在zabbix中,如果我们想要获取到一个”监控项”的值,则需要有对应的”键”,通过”键”能够调用相应的命令,获取到对应的监控信息。

实战实战:

代码语言:javascript
复制
Step3. 点击主机选项卡 => data1 -> 监控项进行设置 ->进入监控项配置界面后,可以根据一些条件,筛选出已经存在的一些监控项;

Step4. 但是我们并没有任何监控项,所以此处我们直接点击"创建监控项"按钮,以便新建监控项。
Step5. 在监控项 -> 键值(选择) ->  system.cpu.switches

#关键点1:更新间隔 (数据更新间隔表示每隔多长时间获取一次监控项对应的数据)
#此处默认每隔30秒获取一次192.168.1.100主机的cpu上下文切换次数。
#注意在生产环境中,如果不是特别重要的、敏感的、迅速变化的数据,不要获取的这么频繁,因为如果我们的监控项变得特别多时,获取信息的时间间隔过于频繁会带来巨大的监控压力,同时对数据库的写入也是一种考验。

#关键点2:历史数据保留时长 / 历史数据保留时长
#我们设置历史数据保存8天,此监控项超过180天的数据将会被zabbix删除。
#趋势数据是什么意思呢? 趋势数据就是每个小时收集到的历史数据中的最大值、最小值,平均值以及每个小时收集到的历史数据的数量,所以趋势数据每小时收集一次,数据量不会特别大,一般情况下,历史数据的保留时间都比趋势数据的保留时间短很多,因为历史数据比较多,如果我们监控的主机非常多,而且监控的频率特别频繁,那么数据库的压力则会变得非常大。

#关键点3:查看值
- 不变:表示获取到的值是什么样子的,就在数据库中存储为什么样子。
- 差量(简单变化):表示本次收集到的信息值 减去上一次收集到的信息值得出的差值。
- 差量(每秒速率):表示本次收集到的值减去上次收集到的值以后,再除以两次收集信息的间隔时间。

#关键点3:应用集
- 理解为同一类型的监控项的集合;
- 如果没有可选的合适的应用集,我们可以直接在"新的应用集"文本框中填入要创建的应用集名称,那么对应应用集会自动被创建,当前监控项也会自动归类为这个应用集。

#管理员可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据。 -k 是键值;
[[email protected] ~]$ zabbix_get -s 192.168.1.100 -k system.cpu.switches
97752
WeiyiGeek.监控项
WeiyiGeek.监控项

Step6. 监控菜单 -> 最新数据 -> 选择过滤/主机群

WeiyiGeek.最新数据
WeiyiGeek.最新数据

Step7. 点击上图中的”图形”连接可以看到如下界面,zabbix已经监控到了对应的cpu上下文切换频率,并且绘制出了对应的”图形”

WeiyiGeek.图像监控
WeiyiGeek.图像监控

完成配置后监控成功:

WeiyiGeek.zab恢复正常
WeiyiGeek.zab恢复正常

(3)在zabbix添加带有参数的监控项

在前文解释了 “监控项”(item)、”键”(key)、”应用集”(application)等概念,并且为data-1主机添加了一个监控项,其作用是监控主机的cpu上下文切换速率。

这次我们添加了一个监控项只是与上一次相比,我们这次添加的监控项可以传入参数。(进行监控)

详细的监控项文档:https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/zabbix_agent

同样我们再选择建立一个监控项: vfs.fs.size[fs,] 磁盘容量。如果返回的是字节则是整数,如果返回的是百分比则是浮点。

  • “vfs.fs.size”就是键名
  • “[fs,]”就是这个键需要的参数,而”[fs,]”这两个参数中,fs是不可省参数,mode是可省参数。
  • mode设置为total,free,used
WeiyiGeek.官方文档
WeiyiGeek.官方文档
代码语言:javascript
复制
#示例
vfs.fs.size[/tmp,free]  #表示获取/tmp所对应的文件系统的剩余空间大小。

#使用zabbix_get验证
[[email protected]]$ zabbix_get -s 192.168.1.100 -k vfs.fs.size[/]  #总量
18402373632 #字节 / 1000 / 1000 / 1000 = G

[[email protected]]$ zabbix_get -s 192.168.1.100 -k vfs.fs.size[/,free]
11488763904 #字节
WeiyiGeek.配置案例
WeiyiGeek.配置案例

监控项添加完毕后,等待一分钟左右,查看对应的监控数据,如下点击监控项对应的”图形”连接。

WeiyiGeek.带参数监控
WeiyiGeek.带参数监控

(4)Zabbix 触发器、事件、动作 概念

  1. 触发器(Triggers):
    • 实际上就是一个条件表达式而已,当监控的数据满足某种条件的时候进行触发,当触发器被触发的时候往往意味着系统出现问题;
    • 触发器未被触发时,其的状态为”OK”,当触发器被触发时,触发器的状态为”Problem”,当被监控项的值达到阈值时,触发器的状态从”OK”变为”Problem”,当监控项的值再次回归到合理范围时,触发器的状态会从”Problem”转换回”OK”。

2. 事件(Events):

  • 当触发器的状态发生改变时,则会产生对应的”事件”,当然,由触发器的状态改变而产生的事件被称为”触发器事件”
  • zabbix中事件分为几种类型,除了”触发器事件”,还有一些别的事件,我们可以把”事件”大概理解成一个重要的事情。

3. 动作(Action): 当某个事件产生时,需要对应的处理措施,这种处理措施被称为动作。

(5)Zabbix创建触发器 经过上面理论的介绍,下面我们来进行实际操作如何创建触发器,注意当以前建立过触发器的规则可以直接进行调用;

实战实战:

代码语言:javascript
复制
Step 1. 菜单栏[配置] -> 选项卡[主机] -> 选择要操作的主机行 -> 点击[触发器]
Step 2. 创建触发器即可 -> 触发器 -> 表达式[添加] -> 选择设置表达式 -> 补充完触发器所需要的信息

#表达式:{data1.weiyigeek.com:vfs.fs.size[/,pused].last(#2,100)}=35 
#(解析:100主机上的根分区使用率如果最近两次时间间隔在100内被监控到的值大于35 则触发器将会被触发)

#关键点解释:
- 表达式设置:
1)监控项:我前面建立的控制项我们可以通过此处进行选择(比如RootPartitionUsed),使用通过选择触发器定义被监控项的阈值;
2) 功能:一些处理调用监控项阈值处理的函数,比如(avg平均值,last最后值)
3) 计数:指出现超过指的次数(与时间间隔相互影响)
4) 间隔:设置单位时间实际为了统计出现超过数值的次数;
5) 设置上面采集处理过的数据进行比较的数值,超过则将触发;

- URL :当我们收到报警信息时,可以通过url快速的定位到触发器所对应的监控项,我们可以把对应监控项的"最新数据"对应的图形链接填入url处,我们还可以为触发器定义"严重性",其实就是这个触发器所对应的问题优先级,颜色越深,严重性越大
- 多重问题事件:表示触发器如果处于 Problem 状态,则重复的生成对应的 问题事件,一般不勾选此项。
- 依赖关系:因为现在并没有定义其他触发器,所以我们无法定义触发器的依赖关系过;
WeiyiGeek.
WeiyiGeek.

然后我们能在监控最新数据中进行看见,触发的条件表达式:

WeiyiGeek.显示触发条件
WeiyiGeek.显示触发条件

(6)Zabbix触发器语法详解 我们在建立好触发器规则后可以在 配置 -> 主机 -> 触发器中看见;

WeiyiGeek.触发器规则
WeiyiGeek.触发器规则

其实,上面的5个部分我们可以通过如下语法表示,如下语法描述了一个触发器的条件表达式的基本结构。

代码语言:javascript
复制
#语法:
{<server>:<key>.<function>(<parameter>)}<operator><constant>

#示例:
{data1.weiyigeek.com:vfs.fs.size[/,pused].last(#2)}>35

#Server:代表主机名称;
#key:代表监控主键名称;
#function:代表对监控的阙值进行处理的函数;
#parameter : 函数的参数指定次数和时间间隔
#operator:常用的比较操作符或者运算操作符;
#constant:用于设置控制项对应的阙值;

#function 详细说明:
last(#2) 被称作一个带有参数的函数,last()被我们称之为函数,#2就是其参数【获取监控项最后几次】
#但是需要注意last(0)的含义与last(#1)的含义相同,都表示最近一次

比如avg(#10),则表示最近10次监控项的值的平均值,如果参数值前面没有"#"作为前缀,则表示时间,
比如sum(300),表示300秒内监控项的值的总和,max(#20)则表示最近20次监控项的值的最大值,
比如min(600)则表示最近10分钟内监控项的值的最小值,

#有的函数还支持使用第二个参数,
比如avg(1h,1d) ,表示一天前的一小时内的监控项的值的平均值,假设现在的时间是5点avg(1h)可以理解为4点到5点之间的监控项的值的平均值,而avg(1h,1d) 中的1d表示时间偏移量,那么avg(1h,1d)可以理解为昨天4点到5点的监控项的值的平均值。

(7)Zabbix报警 Q:当zabbix中的某些被监控指标出现异常时,zabbix会通过哪种方式通知运维攻城狮呢? zabbix支持的报警媒介如下:

  • Email邮件:这是最常用也是最传统的一种报警媒介邮件报警,zabbix通过配置好的SMTP邮件服务器向用户发送对应的报警信息。
  • Script脚本: 当zabbix中的某些监控项出现异常时,也可以调用自定义的脚本进行报警。
  • SMS短信 : 如果想要使用短信报警,则需要依赖短信网关(貌似需要北美的运行商)。
  • Jabber:即时通讯服务。
  • Ez Texting:商业的收费的短信服务(北美运营商提供服务)。

我们如何进行设置zabbix报警,从上面几种方式中可以看出Email和Script才是我们最好的选择,Email方式很简单这里不多说,主要解释使用的Script脚本:

WeiyiGeek.EMAIL
WeiyiGeek.EMAIL

实战实战:

代码语言:javascript
复制
Step1. 菜单[管理] -> 选项卡[报警媒介类型] -> 创建媒体类型
Step2. 设置名称 | 类型[选择脚本]  | 脚本名称 | 脚本参数根据需求进行添加(添加三个参数)
#比如这里我们使用脚本来发送信息
Alarm.sh

#!/bin/bash
to=$1
subject=$2
body=$3
cat <<EOF | mail -s "$subject" "$to"
$body
EOF


#Step 3. 然后编辑/etc/mail.rc 搜狐邮箱完美解决
set from=发件人邮箱
set smtp=smtp服务器
set smtp-auth-user=发件人邮箱账户
set smtp-auth-password=发件人邮箱账户密码
set smtp-auth=login

Step4. 编写好了脚本之后,我们还需要将我们编写的脚本放入zabbix默认的脚本目录中
$ cat /etc/zabbix/zabbix_server.conf  #配置文件中可以看见 
#通过AlertScriptsPath属性,可以配置报警脚本的指定位置(建议/tmp/),zabbix会去对应目录中查找报警脚本。
$ mv Alarm.sh  /usr/lib/zabbix/alertscripts

Step5. 在报警媒介类型页面进行添加脚本参数 (注意建议放在/tmp/防止权限问题)
{ALERT.SENDTO}, {ALERT.SUBJECT} and {ALERT.MESSAGE} 宏 在脚本参数中是支持的Zabbix 3.0支持自定义脚本参数. 

AllowRoot=0
User=zabbix

Step6. 设置成功后进行测试发信;
WeiyiGeek.报警配置
WeiyiGeek.报警配置

其实这种由大括号括起,并且由大写字母组成的字符串在zabbix中被称作”宏”,我们可以理解为zabbix内置的变量,当不同的警告发生时,上述的三个”宏”的值会自动发生变化。 宏列表:https://www.zabbix.com/documentation/4.2/manual/appendix/macros/supported_by_location

但是如果想要某个zabbix用户能够接收到从”MailScript报警媒介”发送过来的报警,还需要进一步配置: 比如当”Admin”用户想要通过”MailScript”报警媒介接收警报时,则必须能够”适配”这种媒介,如果”Admin”用户没有使用”MailScript媒介”的能力,那么”Admin”用户将无法接收到由”MailScript媒介”发出的报警信息。

Q:我们应该怎样让用户能够对应的报警媒介呢? 配置步骤如下:确定无误后,点击”更新”按钮【重点】

WeiyiGeek.用户报警触发
WeiyiGeek.用户报警触发

(8)Zabbix动作设置 当我们设置得触发器被触发得时候,将会根据我们运维人员得设置进行执行相应得动作; 实战实战:

代码语言:javascript
复制
Step1. 配置 -> 动作 -> 创建动作
Step2. [动作] -> 动作 -> 设置动作名称 -> 选择触发器和条件 -> 点击触发器下面得添加
Step3. [动作] -> 动作 -> 设置操作(显示发送的信息等待,与持续时间) -> 设置操作细节 -> 仅送到(我们的脚本) -> 注意【也必须点击添加】
Step4. 更加需求设置恢复操作和更新操作(设置与step3相似)
WeiyiGeek.添加动作
WeiyiGeek.添加动作
WeiyiGeek.动作操作
WeiyiGeek.动作操作

动作添加成功:

WeiyiGeek.动作添加成功
WeiyiGeek.动作添加成功

超过阈值触发动作然后发送email到邮箱之中:

WeiyiGeek.
WeiyiGeek.

0x04 Zabbix实战配置

(1)Zabbix自动发现之fping Zabbix自动发现功能从配置流程上比较简单:Discovery与Action。 在做Zabbix的自动发现验证时也可使用”ICMP ping”的check方式时进行自动发现;

步骤流程:

代码语言:javascript
复制
Step1. 配置 -> 自动发现 -> 创建自动发现规则 -> 设置关规则名称 / IP范围 -> 添加ICMP ping类型(必须点添加否则不能成功)

Step2. 配置zabbix_server.conf文件进行取消fping注释
cat /etc/zabbix/zabbix_server.conf | grep -n "fping"
535:# FpingLocation=/usr/sbin/fping
/usr/sbin/fping #取消注释

Step3. 配置 -> 主机 -> 创建主机 -> 输入创建信息 -> ICMP-check -> 创建

Step4. 选择刚才创建的主机IMCP-check那一行中的自动发现 -> 创建发现规则
#ICMP-Check	应用集	监控项	触发器	图形	自动发现	Web监测	127.0.0.1: 10050		已启用	zbxsnmpjmxipmi

Step5. 设置权限fping
chown root:root /usr/sbin/fping
chmod u+s /usr/sbin/fping
WeiyiGeek.自动发现ICMP
WeiyiGeek.自动发现ICMP

检测成功:

WeiyiGeek.ICMP发现
WeiyiGeek.ICMP发现

(2)Zabbix之模板创建和使用

使用模板能根据简化我们的监控操作,多个主机/群可以应用一个模板包括(触发器/动作/图形)等;

zabbix模板下载:https://github.com/monitoringartist/zabbix-searcher

假如我们需要监控agent机器上网卡的出入口流量:

代码语言:javascript
复制
[[email protected] tmp]$ zabbix_get -s 192.168.1.100 -k net.if.in[eth6,bytes]
170914

#监控网络流量的流程为:
1. 配置 -> 模板 -> 创建模板 -> 输入模板名称于选择群组 -> 应用集 -> 创建应用集

2. 应用集建立后 -> 创建监控项 -> 设置监控项键值  
net.if.in[if,<mode>]	网络接口上传流量统。返回 整数

3. 就可以在监控最新数据中查看最新的数据
WeiyiGeek.创建模板
WeiyiGeek.创建模板

设置监控项:

WeiyiGeek.设置监控项
WeiyiGeek.设置监控项

我们将模板应用到主机之中:

WeiyiGeek.模板应用
WeiyiGeek.模板应用
WeiyiGeek.展现效果
WeiyiGeek.展现效果

0x0n Zabbix入坑配置

(1)安装的zabbix3.0.X无法看到中文选项? 解决:

  • /usr/share/zabbix/include/locales.inc.php 找到中文对应的值,将显示属性设置为true即可;
  • 切换后中文显示还是乱码则将,将微软雅黑字体msyh.ttf传入到zabbix web的默认字体目录为/usr/share/zabbix/fonts,,并修改include目录下defines.inc.php中将graphfont.ttf字体改成我们上传的字体调用;
  • define(‘ZBX_FONT_NAME’, ‘msyh_boot’);
  • define(‘ZBX_GRAPH_FONT_NAME’, ‘msyh_boot’); // font file name

(2)访问控制台出现得问题

WeiyiGeek.program
WeiyiGeek.program

产生原因:

  • zabbix-server 未正常启动
  • 已开启selinux但是没有正常设置对应权限
  • zabbix-server未正常连接数据库
  • azbbix.conf.php文件中$ZBX_SERVER参数对应得主机名不能正常解析
  • 其他原因需要查看zabbix_server日志

(3)主机发现问题? 10608:20190424:005029.559 cannot send list of active checks to “192.168.1.100”: host [zabbix.weiyigeek.com] not found 10608:20190424:005100.828 cannot send list of active checks to “192.168.1.101”: host [zabbix.weiyigeek.com] not found 检查项:server端自动发现已经开启,zabbix-server端和agend端防火墙和selinux全部关闭,监听端口全部正常,怀疑是服务器解析存在问题,在vi /etc/hosts

代码语言:javascript
复制
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.100 Master-data1   #这里非常关键(自动发现好要设置)
192.168.2.101 Master-data2
192.168.1.99 zabbix.weiyigeek.com
WeiyiGeek.主机发现
WeiyiGeek.主机发现

(4)主机自动发现设置ICMP ping形式不起作用 原因:”ICMP ping”的check方式,使用/usr/sbin/fping命令检测状态,如果系统没有安装或fping命令执行路径有误,则check方式不能发现设备,自动发现功能失效。

代码语言:javascript
复制
#解决流程
#1.下载fping

#2.zabbix_server配置文件中默认fping的执行路径被注释掉了,此时默认路径就为:
535:# FpingLocation=/usr/sbin/fping
/usr/sbin/fping #取消注释

#3.配置fping执行路径
sed -i 's|# FpingLocation=/usr/sbin/fping|FpingLocation=/usr/local/sbin/fping|g' /usr/local/zabbix/etc/zabbix_server.conf

#4. 配置fping权限
#如果是root账号安装的fping,可以不用修改owner
#但zabbix_server是使用zabbix账号调用命令的,可以为fping设置SUID权限,如下:
chown root:root /usr/local/sbin/fping
chmod u+s /usr/local/sbin/fping

(5)zabbix-web密码忘记修改? 解决办法:

代码语言:javascript
复制
#数据库中执行
update users set passwd=md5('newpassword') where userid = '1';

(6)对于开启防火墙如何让zabbix-agent进行正常连接

代码语言:javascript
复制
#开启10050、10051的TCP和UDP端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -s 192.168.21.127 -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT
-A INPUT -s 192.168.21.127 -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT
:wq! #保存退出
service iptables restart #重启防火墙使配置生效

(7)Windows平台下agent客户端链接报错 错误信息:

代码语言:javascript
复制
9804:20190507:125038.686 no active checks on server [192.168.56.101:10051]: host [zabbix.weiyigeek.com] not found
failed to accept an incoming connection: connection from "10.10.107.112" rejected, allowed hosts: "192.168.56.101"

#原因:由于HOSTNAME与zabbix创建的主机名称不一致导致,没有将主机名称写入到hosts文件之中
#解决方法:编辑agent的配置文件将hostname修改为zabbix主机一致的名称
Hostname=Windows7
WeiyiGeek.windows7
WeiyiGeek.windows7
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 Zabbix介绍
  • 0x01 Zabbix安装
    • 0x02 Zabbix配置
      • 0x03 Zabbix-Web配置与使用
      • 0x04 Zabbix实战配置
      • 0x0n Zabbix入坑配置
      相关产品与服务
      短信
      腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档