第四章 主机、用户和权限管理
Zabbix中主机作为一个管理单元,用来管理和组织监控项,它可以包含任意数量和类型的监控项,并且每个主机必须属于至少一个主机组。当主机中的监控项获取监控数据后,Zabbix中创建的用户就可以访问这些数据,同样这些用户必须属于至少一个用户组。你可能注意到不管是主机还是用户,在Zabbix中必须属于至少一个主机组或用户组。为什么要这么做呢?这是因为Zabbix中是通过用户组和主机组来实现用户对主机中监控数据进行访问权限的分配和管理。
4.1主机
4.1.1创建主机
Zabbix 中主机是指在网络中一个唯一的、特定的设备(如服务器、交换机等)或者是运行在服务器中的某个应用。例如你想监控Server A 的一些运行指标,首先需要在Zabbixserver中创建一个主机,名称可以是Server A或其他你想使用的名称,然后在这个主机上添加监控项。
创建主机的步骤:
1、 在Hosts页面(Configuration --> Hosts),点击右上角的Create host按钮创建主机。
2、 Host配置页面中对相关参数进行配置。
主机配置页面中,你会看到一排标签(包括Host、Templates、IPMI、Macros、Host inventory和Encryption),点击每个标签会进入不同的配置页面,如下图4-1所示。
图 4-1
你也可以通过Clone(克隆)或Full clone(完全克隆)已有的主机创建一个新主机。当克隆一个主机时,只保留在该主机上配置的所有参数和链接的模板,完全克隆额外还会保留在该主机上配置的监控项组、监控项、触发器、图形、low-level discovery和web 场景。
通过克隆或完全克隆的方式创建一个新主机后,克隆的源主机配置发生变化,例如改变了监控项收集的时间,这种变化只对源主机有效,并不会影响克隆后的新主机。操作很简单,在Hosts页面点击源主机名进入主机配置页面,在Host标签中页面的最下方点击Clone或Full clone按钮就可以,如下图4-2所示。
图 4-2
主机相关的名称、接口等都是在Host标签中进行配置,完成配置后点击页面下方的Add按钮保存,此时在Hosts页面主机列表中你会看到新创建的主机。如下图4-3所示。
图 4-3
Host标签中配置参数的含义:
- Host name:唯一的主机名称。名称中可以使用数字、字母、空格、点、破折号或下划线。如果在主机中安装了Zabbix agent,那么zabbix-agnet.conf配置文件中的参数Hostname必须和此处的配置相同,Zabbix使用active agent监控方式时需要这个参数。
- Visible name:显示名称。配置该名称后,在页面列表、拓扑图等地方会显示该名称,这个参数支持UTF-8,因此在这里你可以输入中文名称。
- Groups:选择添加该主机所属的主机组,一个主机至少属于一个主机组。
- New group:创建该主机的同时也可以创建所属的主机组,可以不填写。
- Interface:Zabbix 中主机支持四种接口类型:Agent、SNMP、JMX和IPMI,在每个接口中点击Add按钮即可添加该类型的新接口。在IP address框中填写主机IP地址,DNS name中填写主机的DNS主机名,Connect to中通过选择IP按钮或DNS按钮来确定我们是使用IP地址还是DNS主机名连接到主机,建议使用IP地址连接主机。Port中填写使用的端口号,Zabbix agent使用10050,SNMP使用161,JMX使用12345,IPMI使用623。Default设置我们使用哪一个做为主连接,在这里我们可以同时添加多个连接,例如一个主机有三个网卡,在这里我们就可以添加三个连接。
- Description:主机的描述信息。
- Monitored by proxy:通过Zabbix server监控主机时选择 no proxy,通过Proxy server监控主机时选择Proxy名称。
- Enabled:勾选为启用对该主机的监控,开始对主机进行监控。未勾选表示对主机不进行监控。
-
链接模板到主机
在Templates标签中,允许我们配置链接到主机的模板,所有在模板中定义的监控项组、监控项、触发器和图形等都会被主机继承。配置页面如下图4-4所示。
图 4-4
Templates标签中配置参数的含义:
- Linked templates:显示已经链接到该主机的模板,在ACTION列中点击Unlink会删除链接的模板,但保留已经存在的监控项、触发器和图形。点击Unlink and clear会删除链接的模板,同时也会删除主机中该模板定义的所有监控项、触发器和图形。点击模板名称可以跳转到该模板的配置页面。
- Link new templates:在输入框中可以输入模板的名称,也可以点击右侧的Select按钮在弹出的模板页面中选择需要链接的模板,完成选择后点击页面左下方的Select按钮返回,然后点击Add按钮添加链接的模板。
-
配置IPMI
在IPMI标签中,包含了IPMI相关的配置参数,如下图4-5所示。
图 4-5
IPMI标签中配置参数的含义:
- Authentication algorithm:选择身份验证算法。
- Privilege level:选择权限级别。
- Username:用于身份验证的用户名称。
- Password:用于身份验证的密码。
-
配置宏变量
在Macros标签中允许我们添加主机级别的宏变量,如下图4-6所示。
图 4-6
如上图所示,点击Host macros按钮后可以看到主机中定义的宏变量,也可以添加新的宏变量。在MACRO字段中输入宏变量的名称,格式为{$MACRO-NAME},在VALUE字段中输入该宏变量的值,点击Add添加。
当点击Inhented and host macros按钮后,不仅可以看到主机中定义的宏变量,还可以看到继承自模板和全局的宏变量。如下图4-7所示。
图 4-7
在这里也可以通过点击全局宏变量{$SNMP_COMMUNITY}右侧的Change快速的建立主机级别的宏变量,也可以点击TEMPLATE VALUE列中的模板名称,打开模板配置页面对宏变量进行编辑。或者点击GLOBLE VALUE后面括号内的configure,打开全局宏变量的配置页面(Administration --> General --> Macros)进行编辑。
4.1.5配置主机资产记录
在Host Inventory标签中你可以点击Manual按钮手工输入主机相关的资产记录信息,也可以点击Automatic按钮自动填写主机相关的资产记录信息。如下图4-8所示。
图 4-8
系统默认是Disabled,这个默认值可以在Administration--> General --> Other页面中修改。如果选择Automatic,在我们创建监控项时,通过设置Populates host inventory field字段就可以自动填充主机资产记录信息,特别是下面列出的一些监控项非常有用。
- system.hw.chassis[full|type|vendor|model|serial]:默认是 [full],需要root权限
- system.hw.cpu[all|cpunum,full|maxfreq|vendor|model|curfreq]:默认是 [all,full]
- system.hw.devices[pci|usb]:默认是 [pci]
- system.hw.macaddr[interface,short|full]:默认是 [all,full], interface是 regexp
- system.sw.arch
- system.sw.os[name|short|full]:默认是 [name]
- system.sw.packages[package,manager,short|full]:默认是 [all,all,full], package是 regexp
资产记录信息也可以通过主机宏变量{INVENTORY.*} 在告警通知中量使用,例如:“位于{INVENTORY.LOCATION1} 的服务器出现故障,负责人是 {INVENTORY.CONTACT1},联系电话是 {INVENTORY.POC.PRIMARY.PHONE.A1}。”
4.1.6配置主机加密通信
在Encryption标签中可以设置被监控主机与Zabbixserver或proxy之间的加密通信,这个是3.0中新增的功能,实际环境中这个功能非常有用也很重要,在以前的版本中需要借助其他工具实现数据的安全传输。如下图4-9所示。
图 4-9
Encryption标签中配置参数的含义:
- Connections to host:Zabbix server或proxy连接该主机上时使用的加密方式,系统默认是No encryption(未加密),也可以选择PSK或Certificate。
- Connections from host:选择从主机连接到Zabbix server或proxy的加密方式,为了测试方便可以同时选择多种方式,系统默认是No encryption。
- PSK identity:预共享密钥的标识字符串。
- PSK:预共享的密钥(十六进制字符串)。最大长度:如果 Zabbix 使用 GnuTLS 或 OpenSSL 库时为512位十六进制数字 (256 字节 PSK),如果 Zabbix 使用嵌入 TLS(PolarSSL) 库时为64 位十六进制数字 (32 字节 PSK)。
- Issuer:允许的证书颁发者。证书首先由证书颁发机构(CA)检验是否有效并由CA签名,如果Zabbix安装使用从多个CAs颁发的证书时,就可以使用Issuer字段中的设置进一步限制允许的CA。如果没有设置Issuer字段(空值)则接受任意CA。
- Subject:允许的证书所有者。证书首先由证书颁发机构(CA)检验是否有效并由CA签名,可以使用Subject字段设置一个所有者字符串,如果没有设置Subject字段(空值)则接受任意被CA配置的有效证书。
有关加密通信的配置会在第十八章《数据加密通信》中做更详细的介绍。
4.1.7更新主机配置
在Hosts页面(Configuration--> Hosts)列表中,点击Name列中想要更新配置的主机名称,进入主机配置界面修改配置参数,然后点击页面下方的Update按钮保存。
如果需要对多个具有相同配置的主机进行更新,Zabbix给我们提供了一个批量更新的功能,当你从主机列表中选中多个主机后,点击页面左下方的Mass update按钮进行批量更新,完成更新后点击Update按钮保存。
可以批量更新的配置包括:
- Host:
- Replace host groups:从主机中移除所有已存在的主机组,并添加字段中选择或输入的主机组名称(支持自动填充)。
- Add new or existing host groups:添加系统中现有的主机组或创建并添加新主机组。输入主机组名称时支持自动填充功能,如果输入的是一个系统中不存在的新主机组名称,你会在名称后面看到一个(new)。如下图4-10所示。
图 4-10
- Description:主机描述。
- Monitored by proxy:配置监控主机的proxy server。
- Status:配置启用或禁用对主机的监控。
- Templates:
- Link templates :选择模板或输入模板名称(支持自动填充),Replace选项将移除已存在的模板链接,并链接到输入的新模板。Clear when unlinking选项不仅移除模板链接,包括所有通过模板创建的监控项、触发器等都会被删除。
- IPMI:
- IPMI authentication algorithm:配置身份验证算法。
- IPMI privilege level:配置权限级别。
- IPMI username:配置用户名称。
- IPMI password:配置用户密码。
- Inventory:配置主机资产记录的模式(Disabled、Manual、Automatic)和相关资产记录(例如Type、OS、Serial number等)
- Encryption:
- Connections:与Zabbix server 或 proxy之间的加密通信方式。
-
删除主机
在Hosts页面主机列表中选中你想删除的主机,点击页面左下方的Delete按钮就可以删除主机。删除主机之前,你可以先将主机设置为Disable,停止对主机的监控,当你确定删除这个主机没有任何问题的时候再删除也不迟。
4.2主机组
4.2.1创建主机组
Zabbix server安装后已经预先设置了一些主机组,其中Templates组中包含了所有的模板,Zabbixservers组中包含了当前的zabbix server。Zabbix通过主机组可以将具有相同特性的主机归属到同一个组中,在Zabbix中使用主机组主要有两个目的,一是便于组织和管理,二是给用户访问授权。
Zabbix中同一个主机可以属于一个或多个不同的主机组,非常灵活,但也增加了管理的复杂性,在实际操作时要注意几个问题:
- 如果你配置了Aggregate 监控方式的监控项,其中使用了一个或多个Calculated 监控方式的监控项,而Calculated监控项的数据来自不同的主机组,在这种情况下你可能不止一次的使用了同一个主机的数据,这样会造成数据的偏差。
- Actions(动作)一般通过主机组进行筛选,这意味着同一个触发器可能会被多次触发,导致大量重复的信息和告警。
- 用户访问权限是基于主机组的,这也意味着一些用户能够看到更多的主机及其监控数据,但实际上并不需要用户去看到这些信息。
创建主机组时,我们可以根据地理位置、业务单元、设备用途、系统版本、应用类型等进行规划。
创建主机组很简单,在Host groups页面(Configuration--> Host groups)中,点击右上角的Createhost group 按钮,创建一个新主机组。如下图4-11所示。
图 4-11
Host groups页面中配置参数的含义:
- Group name:主机组名称,支持UTF-8,在这里可以使用中文名称。
- Hosts:该主机组中包含的主机列表,可以在Other hosts | Group中选择已有的主机,点击 按钮添加到该主机组中。点击 按钮可以从主机组中移除选中的主机。
完成配置后,点击Add按钮保存。你会在Host groups主机组列表中看到新添加的主机组,如下图4-12所示。
图 4-12
在主机组列表中你可能会注意到显示颜色的不同,列表中Hosts列中显示属于主机组的主机数量,数字会用灰色显示。Templates列中显示属于主机组的模板数量,数字会用灰色显示。Members列中显示属于主机组的模板或主机的名称,主机名称显示为红色代表该主机没有被监控,主机名称显示为绿色代表该主机处于被监控状态,模板的名称会用灰色显示。
4.2.2 更新主机组
有时候,可能需要对现有的主机组重新进行配置,例如修改主机组名称,添加或移除主机等。这些操作只需要从Host groups页面的列表中点击需要更新配置的主机组名称,在主机组配置页面中更新配置,然后点击Update按钮保存即可。
如果需要对主机组中所有主机停止监控,只需要从列表中选中相应的主机组,点击左下方的Disable hosts按钮,在弹出窗口中确认后,你会发现Members列中属于该主机组的所有主机名称会变成红色。当你需要对主机组中所有主机启用监控时,只需要选中该组后点击左下角的Enable hosts按钮即可。
4.2.2 删除主机组
需要删除主机组时,在Host groups页面列表中选择主机组,点击左下角的Delete按钮就可以了。当主机组删除后,相应的在用户组的权限配置中也会删除该主机组,如果归属于该主机组的主机没有同时归属于其他主机组时,删除该主机组后用户会访问不到这些主机中的监控数据。
4.3用户
4.3.1 创建用户
Zabbix系统中默认设置了两个用户即admin和guest,admin属于administrators用户组并拥有超级管理员权限,guest是未经身份验证的的用户使用的,不需要登录就可以进入Zabbix,但是基于安全的考虑最好禁用guest用户。在实际环境中往往需要创建多个用户访问不同的监控数据。
Zabbix中每个用户都有唯一的登录名称,用户密码经过加密后保存在数据库中。
在Users页面(Administration -->Users)中点击右上角的Create user按钮,进入Users配置页面,相关配置参数分布在User标签、Media标签和Permissions标签中。如下图4-13所示。
图 4-13
User标签中主要配置用户名称、密码等,Media标签中主要配置告警方式,Permissions标签中主要配置用户的类型和查看权限,权限的配置只能在用户组上进行操作。
User标签中的配置参数如下图4-14所示。
图 4-14
User标签中配置参数的含义:
- Alias:唯一的用户名称,登录系统时使用。
- Name:用户的名字,可选项。如果填写,会在响应信息和通知信息中显示。
- Last Name:用户的姓,可选项。如果填写,会在响应信息和通知信息中显示。
- Groups:用户归属的用户组列表。点击字段右边的Add按钮可以选择添加用户组。当添加用户组后在字段的下面会出现Delete selected按钮可以用来删除选中的用户组。
- Password:用户密码。
- Language:用户登录Zabbix 前端后显示页面使用的语言。
- Theme:前端页面的主题风格。
- Auto-login:如果在登录时勾选了remember选项,会使用浏览器的cookies记住用户名和密码,30天内不需要再输入密码登录。
- Auto-logout(min 90 seconds):允许自动退出登录,最小值是90秒。
- Refresh(in seconds):浏览图形、展示屏、文本等数据时页面自动刷新的频率,设置为0时禁止自动刷新。
- Rows per page:页面列表中每页显示数据的行数。
- URL(after login):登录后自动跳转到其他页面的URL。
完成这些配置后,点击Add按钮保存,你会在Users页面列表中看到新创建的用户。
4.3.2 配置用户告警方式
在Users用户列表中点击用户名称,进入用户配置页面,点击Media标签,在Media字段中可以配置用户使用的告警方式,你可以添加多个告警方式。如下图4-15所示。
图 4-15
点击Media字段内的Add按钮可以添加用户使用的告警方式,如下图4-16所示。
图 4-16
告警方式添加完成后,点击Update按钮保存。
4.3.3 配置用户权限
在Users用户列表中点击用户名称,进入用户配置页面,点击Permissions标签,配置页面如下图4-17所示。
图 4-17
User type中可以配置用户的类型,主要有三种:Zabbix User、Zabbix Admin、Zabbix Super Admin。如下图4-18所示。
图 4-18
三种用户类型的含义:
- Zabbix User:可以访问Monitoring菜单,默认情况下该类用户不能访问其他任何资源,在主机组中必须明确分配访问权限。
- Zabbix Admin:可以访问Monitoring和Configuration菜单。默认情况下该类用户不能访问其他任何资源,在主机组中必须明确指定访问权限。
- Zabbix Super Admin:用户可以访问所有资源,包括Monitoring、Configuration和Administration菜单,用户可以对所有主机组进行读写访问。
Host groups和Hosts有三种类型:Read-write、Read only和Deny,你可以看到分配给主机组和主机的权限信息。Zabbix中访问监控数据的权限是在用户组和主机组的级别上实现的,也就是说一个单独的用户不能直接访问主机(或主机组)。
4.3.3用户解锁与删除
用户在登录Zabbix系统时,因密码错误或其他原因,连续登录失败超过5次时系统会锁定该用户账户,在Users页面用户列表中,选中用户后点击页面左下角Unblock按钮可以将用户账户解锁。当你需要删除用户账户时,点击Delete按钮就可以了。
4.4用户组
4.4.1创建用户组
用户组和主机组类似,用来组织用户和分配权限,在User groups页面(Administration--> User groups)中,点击右上角 Createuser group按钮就可以创建新用户组。如下图4-19所示。
图 4-19
User group标签中配置参数的含义:
- Group name:唯一的用户组名称。
- Users:在In group框中包含了属于该用户组的用户名单,这些用户可以从Other groups中选择添加。
- Frontend access:该用户组中用户使用的身份验证方式。System default为使用默认的身份验证方式(可以在Administration--> Authentication页面中配置);Internal为使用Zabbix进行身份验证,如果设置了HTTP 身份验证方式Zabbix系统会忽略这个设置;Disabled为禁止用户访问Zabbix前端页面。
- Enabled:如果勾选表示启用该用户组;没有勾选表示禁用该用户组。
- Debug mode:勾选后会打开调试模式。
配置好User group标签中的参数后点击Add按钮保存,你会在用户组列表中发现新添加的用户组。
4.4.1配置用户组权限
在用户配置页面的Permissions标签中你可以配置用户组能访问到主机组的权限,如下图4-20所示。
图 4-20
Permissions标签中配置参数的含义:
- Composing permissions:主要有Read-write、Read only和Deny三种权限类型,你可以通过Add按钮添加主机组到相应的权限中。也可以选择权限列表中的主机组,点击Delete selected按钮从权限列表中删除该主机组。在这里你可以添加多个主机组,也许在不同的主机组中包含了相同的主机都没关系,Zabbix系统会自动计算出对主机组或主机的访问权限。
- Calculated permissions:根据Composing permissions中添加的主机组,Zabbix会计算出该用户组对哪些主机组和主机拥有访问权限。
-
权限管理
在前面提到过Zabbix中对监控数据访问的权限是在用户组和主机组这两个组的级别上进行分配,不能对独立的主机或用户分配权限。在Zabbix中一个用户可以属于多个用户组,而这些用户组对主机可能有不同的访问权限。在这种情况下,我们怎么来确定一个用户对某个主机的访问权限呢?
通过例子,让我们来看看Zabbix是如何分配权限的。
假设Host X属于Hostgroup1,user属于UsergroupA和UsergroupB,在以下情况中:
- 如果UsergroupA对Hostgroup1有Read only权限,UsergroupB对Hostgroup1有Read-write权限,那么user对Host X有Read-write权限。
- 如果Host X同时也属于Hostgroup2,UsergroupA或UsergroupB对Hostgroup2的访问权限是Deny,那么user对Host X的访问权限也是Deny。即使在Hostgroup1 上具有Read-write权限。
- 如果UsergroupA没有设置任何访问权限,UsergroupB对Hostgroup1有Read-write权限,那么user对Host X也有Read-write权限。
- 如果UsergroupA对Hostgroup1的访问权限是Deny,UsergroupB对Hostgroup1有Read-write权限,那么user对Host X的权限是Deny。
在遇到比较复杂的权限分配时,可以参考下面的两个原则:
- 优先级高低:Deny > Read-write > Read only
- Deny具有排他性,如果在一个用户组中对主机组的权限是Deny,那么用户的权限也是Deny。
另外,分配权限时可以把用户类型和用户组权限合并到一起来考虑,如下表4-1所示。
表 4-1
用户类型 用户组权限 |
Zabbix User |
Zabbix Admin |
Zabbix Super Admin |
Read-write |
Read only |
Read-write |
Read-write |
Read only |
Read only |
Read only |
Read-write |
Deny |
Deny |
Deny |
Read-write |
从表4-1中可以看到,Zabbix Super Admin用户类型的用户权限是不能被禁用的,而Zabbix User用户类型的用户权限只能是Readonly和Deny,不允许用于Write权限。但是如果你通过Zabbix API可以为属于Zabbix User类型的用户指定Write权限。另外Zabbix Admin级别的用户对主机具有Read-write权限时,不能link/unlink模板。