参考zabbix从放弃到入门(3):在zabbix中添加主机
参考zabbix从放弃到入门(4):在zabbix中添加监控项
参考zabbix从放弃到入门(5):在zabbix中添加带有参数的监控项
地址http://192.168.0.91/zabbix
账号/密码Admin/zabbix
假设,我们想要使用zabbix监控一台linux服务器,那么,我们肯定要将这个服务器纳入zabbix的管理范围,而”添加主机”这个操作,就是将被监控的主机纳入zabbix管理范围的一个必须操作,如果我们有10台主机都需要被zabbix监控呢,没错,这10台主机都必须被添加到zabbix的监控列表中。
在zabbix中,我们将被监控的对象称之为”主机”,”主机”不一定是服务器,也可以是路由器,交换机等网络设备,而且,根据主机的属性、角色、特征的不同,我们还能够将主机分组。
比如,我们有10台服务器,10台服务器中,有3台windows服务器,有7台linux服务器,那么,我们可以按照操作系统的不同,将他们分成两组,windos服务器组与linux服务器组。
或者我们不按照操作系统对主机进行分组,而是根据服务器的角色对主机分组,比如,一共10台服务器,3台是是提供ldap服务的,2台是提供web服务的,5台是提供数据库服务的,我们也可以把它们按照角色分成3组,ldap主机组、web主机组、db主机组。
当然,我们只是举个例子,实际应用中,具体怎样分组,是根据实际需求视情况而定的,那么,为什么要将主机分组呢,这是为了方便管理,因为同一类主机需要被监控的指标很有可能都是相同的,所以将他们分为一组方便管理,这是后话,我们到时候再聊。
上面一段话中,我们提到了两个zabbix的常用术语,”主机”与”主机组”,我们再来总结一遍:
(1)host(主机):需要被zabbix监控的对象,被称为主机,主机必须属于某个主机组。
(2)hostgroup(主机组):”主机组”也被称为”主机群组”,是由具有相同属性、特征、角色的多个主机组成的逻辑单元。
我们已经将zabbix-server、zabbix-database、zabbix-web安装在了192.168.0.91上。
同时,我们将zabbix-agent安装在了192.168.0.199上。
所以此处,192.168.0.199就是被监控的对象,我们需要将199添加为zabbix主机。
树莓派自带源,agent版本可以跟server端版本不一致。
sudo apt-get install zabbix-agent
systemctl status zabbix-agent查看状态
$ cd /etc/zabbix/
查看配置文件zabbix_agentd.conf
我们在刚开始介绍zabbix时,说过的”主动模式”与”被动模式”?这两种模式的相关配置,都需要在zabbix_agentd.conf中定义,打开这个文件,我们来配置一下最常用的agent端配置。
(1)通用参数配置段
首先,可以看到配置文件中有很多注释,打开配置文件,首先看到的就是”通用参数配置段”,我们可以在此配置段配置zabbix_agent进程的进程编号文件路径,存储日志方式,日志文件位置,日志滚动阈值等常用设定,细心如你一定已经发现,zabbix_agent配置文件的”通用配置段”中的参数大多数与zabbix_server配置文件中的常用参数意义相同,所以,此处不再过多赘述,如果没有特殊需要,保持默认即可。
(2)”主动模式”与”被动模式”
我们已经在最开始的概念介绍中,描述过,”主动模式”与”被动模式”都是对于agent端来说的,而且它们可以同时存在,并不冲突。
我们先来看看”被动模式”的相关配置参数。
(2-1)Passive checks related
被动模式相关参数如下:
(1)Server:用于指定允许哪台服务器拉取当前服务器的数据,
当agent端工作于被动模式,则代表server端会主动拉取agent端数据,
那么server端的IP必须与此参数的IP对应,此参数用于实现基于IP的访问控制,
如果有多个IP ,可以使用逗号隔开。
(2)ListenPort:用于指定当agent端工作于被动模式时所监听的端口号,
默认端口为10050,也就是说,server端默认访问10050端口,从而拉取数据。
(3)ListenIP:用于指定agent端工作于被动模式时所监听的IP地址,
默认值为0.0.0.0,表示监听本机的所有IP地址。
(4)StartAgents:用于指定预生成的agent进程数量。
(2-2)Active checks related
好了,被动模式的参数说完了,现在聊聊主动模式。
主动模式的常用参数如下:
(1)ServerActive:此参数用于指定当agent端工作于主动模式时,
将信息主动推送到哪台server上,当有多个IP时,可以用逗号隔开。
(2)Hostname:此参数用于指定当前主机的主机名,
server端通过此参数对应的主机名识别当前主机。
(3)RefreshActiveChecks:
此参数用于指明agent端每多少秒主动将采集到的数据发往server端。
此处,我们同时设置”被动模式”与”主动模式”的如下参数,其他保持默认即可,修改完成后保存退出。
Server=192.168.0.91
ServerActive=192.168.0.91
Hostname=raspberrypi
配置文件修改完成后,启动agent端进程。
systemctl restart zabbix-agent
点击 “配置”= =>“主机群组” ,可以看到,系统默认已经为我们准备了一些主机组,如果这些主机组不满足我们的需要,我们也可以创建新的主机组,点击下图中的”创建主机群组”按钮,即可创建主机组,但是,现在我们还不用深入研究主机组,此处只是让大家了解一下,对主机组有一个初步的认识即可。
创建主机群组:raspberry。
同样,点击 “配置”= => “主机” ,即可查看已经被加入zabbix主机列表的主机,可以看到,zabbix默认将zabbix server添加为了一台主机,以便可以自己监控自己。
但是此处,我们需要添加一台我们自己的主机,就是192.168.0.199,点击”创建主机”,点击创建主机之前,可以选择左侧的”群组”下拉菜单,以确定将要创建的主机所在的主机组,当然,我们也可以先不选主机组,直接点击”创建主机”按钮。
(1)我们可以在主机名称的文本框中填写被监控主机的主机名称。
(2)可见名称一般使用简短的、易读的、见名知义的名称表示主机即可。
(3)我们可以选择将要创建的主机属于哪个主机组,当然,如果没有合适的主机组,我们也可以直接在创建主机时,直接新建主机组,我们说过,每个主机必须存在于某个主机组中,所以,主机组是必须的。
(4)选择通过哪种接口监控当前主机,可选的方式有IPMI接口、JMX接口、SNMP接口、agent接口。
我们说过,”主机”在zabbix中,可以是服务器,路由器,交换机等等硬件设备,有的硬件设备只支持某种接口,所以,当我们添加主机时,会让我们选择通过哪种合适的接口监控它。
当然,如果一台主机能被多种接口所监控,也可以同时配置多个接口监控这台主机,但是当前,我们需要监控的主机是一台Linux服务器,而且已经安装了对应的agent端,所以此处,我们只使用agent接口对当前主机进行监控,而使用agent接口时,可以通过IP连接到对应agent,也可以使用主机名连接到对应agent,而此处,我们选择使用IP地址连接到对应的agent,IP地址就是我们将要添加的主机的IP,192.168.0.199 ,对应端口为默认的10050。
如果你想要使用主机名连接到对应的agent,那么需要保证主机名能够被正常解析到192.168.0.199上,此处不再赘述,如果有多个IP可以连接到对应agent,可以点击”添加”,添加一条新的IP。
(5)对将要添加的主机进行描述,添加相应的描述信息即可。
(6)表示是否使用zabbix proxy监控当前主机,虽然上图中,此处翻译为”由agent代理程序监测”,但是实际是用于指定zabbix proxy的,与zabbix agent并没有关系,但是因为我们没有配置zabbix_proxy,所以此处保持默认即可。
好了,按照上述界面中的配置进行设置以后,点击”添加”按钮,即可简单的添加一台主机,可以看到,192.168.0.199已经被添加到了主机列表中。
可以看到我们刚才添加的testzbx1主机,但是testzbx1主机的”可用性”对应的4种接口都是灰色的。
上图中,ZBX就代表agent接口,虽然我们在添加主机时,配置了通过agent监控对应主机,但是,由于我们并没有配置监控主机的任何指标,所以,ZBX仍然是灰色的,也就是说,我们现在只是将192.168.0.199加入了zabbix的监控范围,但是并没有对它进行任何实际的监控,因为我们还没有配置任何”监控项”,至于怎样配置监控项,且听下回分解。
前文中,已经描述了怎样在zabbix中添加主机,但是,我们并没有对主机进行任何指标的实际监控,那么现在,我们来说说,具体怎样监控我们想要监控的指标。
在具体操作之前,我们先聊聊理论,假设我们想要监控磁盘的使用率,在没有zabbix这种监控工具时,我们怎样监控呢,再或者,我们不仅没有zabbix这种监控工具,我们也不会写脚本,更不会写任何程序,我们该如何监控磁盘的使用率呢。
没错,人工监控,当我们无法依赖任何工具或者脚本等外部助力时,我们只能不停的看着屏幕,查看当前磁盘的使用率,如果磁盘使用率达到了我们设定的阈值,我们就会作出相应的处理动作。即使我们是通过人工完成监控的,我们也要想办法能够获取到被监控目标的数据,比如我们想要监控磁盘使用率,那么我们就要不停的获取磁盘的使用率信息,以便我们能够随时的了解磁盘的空间使用情况,那么我们怎样获取磁盘的使用率呢,就拿centos为例,我们可能会通过如下命令,获取每个分区的磁盘使用率。
获取每个分区的磁盘使用率
df -h
没错,我们通过命令,获取到了磁盘使用率的信息,当然,这个命令比较简短,方便我们从键盘键入,如果一条简单的命令,无法获取到磁盘使用率的信息呢,那么我们可能会通过一条稍微复杂的命令去实现监控,比如,如果我们只想要监控”根分区”磁盘使用率,我们可能会使用如下命令实现。
df -h | awk '$6~/^\/$/{print $5,$6}'
我们发现,获取监控信息的命令越来越长了,那么我们能不能尽量简化这些较长的命令呢,必须能啊,设置个别名不就行了,那么,我们把刚才的命令设置一个别名,直接执行命令别名试试。
alias rdu="df -h | awk '\$6~/^\/$/{print \$5,\$6}'"
可以看到,原本比较长的命令只缩减为了rdu三个字符。是不是比原来方便了许多呢,我们只需要三个字符,就能获取到根分区的使用情况。
这个时候,你可能会问,linux的命令别名与zabbix的监控项有关系吗,我们是来看怎么添加zabbix监控项的,不是来听你瞎BB的。
好吧,其实它们并没有什么关系,但是他们有一些类似的地方,比如,我们刚才做的工作,无非就是获取监控信息,需要获取监控信息,就要执行对应的命令,我们也可以通过别名,调用对应的命令,从而获取到我们想要或得到的监控信息。
在zabbix中,我们要监控的某一个指标,被称为”监控项”,就像我们的磁盘使用率,在zabbix中就可以被认为是一个”监控项”(item),如果要获取到”监控项”的相关信息,我们则要执行一个命令,但是我们不能直接调用命令,而是通过一个”别名”去调用命令,这个”命令别名”在zabbix中被称为”键”(key)。
所以,在zabbix中,如果我们想要获取到一个”监控项”的值,则需要有对应的”键”,通过”键”能够调用相应的命令,获取到对应的监控信息,我们暂且这样理解,方便我们入门。
好了,我们此处又提到了两个新的术语,我们来总结一遍:
(1)监控项(item):某个监控指标,在zabbix中就被称之为一个item,某个主机中可能有多个需要被监控的指标,也就是说,某个host中可能有多个item。
(2)键(key 、item key):如果想要获取监控项对应的数据,则必须通过某个key去获取,我们可以把key想象成调用对应命令的”命令别名”,zabbix中自带一些key,这些key往往比较通用,比如,通过这些key,我们可以监控cpu,内存,硬盘等常用指标,获取不同的指标信息,需要不同的key,但是如果这些自带的key无法满足我们的监控需求时,我们也可以自定义key,通过自定义key执行对应的操作,这些都是后话,我们慢慢来。
一、点击pi20211121主机上的”监控项”,如下图所示位置。
二、进入监控项配置界面后,可以根据一些条件,筛选出已经存在的一些监控项,但是我们并没有任何监控项,所以此处,我们直接点击”创建监控项”按钮,以便新建监控项。
三、假如,现在我们想要监控pi20211121这台主机的CPU的上下文切换次数,那么我们可以在此界面进行如下配置。
(1)首先,在名称文本框中设置监控项的名称,我们此处监控的指标为cpu上下文切换次数,所以,命名此监控项为”cpu+context+switches”。
(2)因为我们在pi20211121这台主机上安装了zabbix agent,所以,此处类型保持默认,选择zabbix客户端。
(3)在键值一栏中,我们可以选择对应的key,也就是说,我们通过哪个key,获取到cpu的上下文切换次数的信息,所以,点击”选择”按钮,点击选择按钮以后,可以看到非常多的预先定义好的key,这些key都是zabbix自带的key,这些key一般都是系统级别的通用的监控项所能够用到的key,如果这些”键”不能满足我们的需求,我们则需要自定义key,这是后话,到时再聊,此处,我们选择system.cpu.switches。
(4)我们就是通过agent接口监控数据的,agent监听在10050端口上,此处保持默认即可。
(5)而我们刚才也看到了,通过zabbix_get获取到的system.cpu.switches的数据,都是一些十进制的整数,所以,信息类型选择数字,数据类型选择十进制。
(6)单位,次数。
(7)数据更新间隔表示每隔多长时间获取一次监控项对应的数据,为了演示方便,能够尽快获取到数据,我们设定为每隔30秒获取一次监控信息,此处表示每隔30秒获取一次192.168.0.199主机的cpu上下文切换次数。
但是需要注意,在生产环境中,如果不是特别重要的、敏感的、迅速变化的数据,不要获取的这么频繁,因为如果我们的监控项变得特别多时,获取信息的时间间隔过于频繁会带来巨大的监控压力,同时对数据库的写入也是一种考验。
(8)当然,我们也可以灵活的定义时间间隔,比如,周一到周五我们的业务量比较少,可以10分钟获取一次数据,而周六周日的业务量会剧增,为了实时监控,可以设置5分钟获取一次数据,这里只是举个例子,如果有类似的需求,可以通过”自定义时间间隔”配置段,添加不同时间段的不同监测频率。
(9)因为我们每隔30秒就获取一次数据,那么这些数据都会变成历史数据,存入数据库中,通过上图中的历史数据文本框,可以设置历史数据的保存时长。
上图中,我们设置历史数据保存8天,此监控项超过100天的数据将会被zabbix删除。
从上图中,还可以看到有一个趋势数据保存天数,趋势数据是什么意思呢?趋势数据就是每个小时收集到的历史数据中的最大值、最小值,平均值以及每个小时收集到的历史数据的数量,所以,趋势数据每小时收集一次,数据量不会特别大,一般情况下,历史数据的保留时间都比趋势数据的保留时间短很多,因为历史数据比较多,如果我们监控的主机非常多,而且监控的频率特别频繁,那么数据库的压力则会变得非常大。
(10)继续向下看,可以看到查看值下拉框。
那么查看值是什么意思呢?查看值可以改变监控数据的展示方式,以便监控人员更容易理解,此处我们保持默认即可,在实际用到时我们再做解释。
(11)新的应用集与应用集是什么意思呢?
我们可以把”应用集”理解为同一类型的监控项的集合,”应用集”英文原词为application ,application为一组item(监控项)的集合,比如,我们有3个监控项,它们分别监控”磁盘使用率”,”磁盘写入速率”,”磁盘读取速率”,虽然它们监控的指标不同,但是他们都是监控”磁盘”的监控项,所以,我们可以把它们归类为”磁盘”应用集。
同理,如果有2个监控项,一个是监控nginx连接数量的,一个是监控nginx请求数量的,虽然它们监控的指标不同,但是他们都是监控nginx相关指标的,所以,我们可以把他们归为nginx应用集。
但是,由于我们没有创建过任何应用集,所以上图中,应用集选择框中没有任何可选应用集,如果没有可选的合适的应用集,我们可以直接在”新的应用集”文本框中填入要创建的应用集名称,那么对应应用集会自动被创建,当前监控项也会自动归类为这个应用集。
(12)”填入主机资产纪录栏位”我们后面再聊。
(13)描述信息栏填写关于这个监控项的相关描述。
(14)“已启用”默认被勾选,表示此监控项被创建后,立即生效,即创建此监控项后立即开始监控。
(15)点击添加按钮以后,可以看到,pi20211121主机的第一个监控项已经被添加,而且处于已启用状态。
我们已经创建了一个监控项,那么怎样查看这个监控项的监控情况呢?
(1)点击 “监测中” ==>“最新数据”,但是目前并没有展示出任何数据,因为我们还没有指定要查看哪些监控数据。
(2)筛选查询
(3)点击图形
点击上图中的”图形”连接,可以看到如下界面,zabbix已经监控到了对应的cpu上下文切换频率,并且绘制出了对应的”图形”。
从上图中,可以看到,zabbix除了为我们绘制出了图形以外,还显示出了最大值、最小值、平局值等信息,上图中,正常显示为中文。
如果你的界面不能正常显示中文,那么证明你没有上传中文字体,或者没有正确的配置显示字体选项,我们在 安装zabbix 的文章中已经描述了解决问题的过程,此处不再赘述。
我们已经为主机添加了第一个监控项,并且已经成功监控到了对应的数据,好了,我们已经入门了。
我们在介绍zabbix的概念时已经说过:管理员可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据。
我们可以在服务端安装zabbix_get包,以便向agent端发起测试采集数据请求。
其实,我们可以先通过命令行,看看对应的”键”返回的信息到底是什么样子的。
我们在server端,使用如下命令,获取一下system.cpu.switches这个键对应的值。
zabbix_get -s 192.168.0.199 -k system.cpu.switches
通过-s选项指定被监控主机的IP,
通过-k选项指定对应的KEY,即可获得对应主机的对应监控指标的信息。
上图中,我们在server端通过zabbix_get命令,使用system.cpu.switches这个”键”,获得了192.168.0.199这台主机上的cpu上下文切换次数。
可以看到,cpu的上下文切换次数是在不停的增长的,而且返回的值是一个整数。
这次,我们再为testzbx1主机添加一个监控项,用于监控磁盘分区的使用率。
(1)点击zabbix控制台的 “配置”==>“主机”,点击pi20211121主机的监控项。
(2)点击”创建监控项”按钮。
(3)我们命名监控项名称为RootPartitionUsed。
(4)选择键。
这次我们选择的键,除了键名以外,还多出了传入参数的位置。
对于”vfs.fs.size[fs,<mode>]”这个键来说,
”vfs.fs.size”就是键名,
”[fs,<mode>]”就是这个键需要的参数。
而”[fs,<mode>]”这两个参数中,fs是不可省参数,mode是可省参数。
如果参数被尖括号括起,则代表这个参数是可省参数,例如上述的<mode>。
如果参数没有被尖括号括起,则代表是不可省参数,例如上述的fs。
fs代表对应的文件系统,我们可以理解为对应的文件系统所在的分区。
mode的值可以为:
total,获取对应文件系统的总大小(省略mode参数时,此为默认值)。
free,获取对应文件系统的空余空间大小。
used,获取对应文件系统的已经使用的空间的大小。
pfree,空闲率。
pused,使用率。
还记得这个键返回的两种数据类型吗,如果我们将mode设置为total,free,used,那么,这个键返回的数据类型将为整形(就是一个整数)。
如果我们将mode设置为pfree或者pused,那么这个键返回的信息的数据类型就是浮点型(带有小数点的数字)。
而且,帮助文档中还给出了这个”键”的使用示例vfs.fs.size[/tmp,free],示例表示获取/tmp所对应的文件系统的剩余空间大小。
当我们选择了对应的键以后,我们还需要做出适当的修改,将其参数值改成我们所需要的值vfs.fs.size[/,pused]。
(5)由于我们获取的数据为根分区的使用率,返回的信息为浮点型,所以,信息类型选择浮点型,由于返回的信息为磁盘使用率,所以单位设置为 “%”
(6)为了演示方便,我并没有将数据更新间隔设置为3600,而是设置10秒收集一次磁盘数据,再次强调,这样设置只是为了快速获取演示效果,生产环境中对于类似这样的数据不要监控的如此频繁,配置如下后,点击添加按钮。
(7)监控项添加完毕后,等待一分钟左右,查看对应的监控数据,如下,点击监控项对应的”图形”连接。
如果数据较多,我们可以拖动监控视图的”镜头”,调整”镜头”的远近以及位置,即可看到不同时间段的监控数据,但是因为我们磁盘使用率一直没有多大变化,所以,看不出镜头移动时的效果,如果是长时间的波动的数据,拖动镜头时的效果则比较明显。
次,我们又添加了一个监控项,只是与上一次相比,我们这次添加的监控项可以传入参数。
而且,我们已经了解到,如果想要搞明白zabbix的各种自带key的作用,可以参考zabbix官方在线手册:
在线手册
https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_agent