permalink: /techdoc/zabbix/ tags: - 技术文档 - Zabbix - 安装
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
笔者编写的时刻Zabbix的更新已经来到5.2,通过ZabbixAgent2可以实现docker容器的监控。故使用Zabbix 5.2来进行相关搭建。网络拓扑图如下,包含一台Windows服务器以及一台Debian服务器。
推荐使用独立的物理主机来搭建监控服务。
创建前请先确认监控主机中是否已安装配置MySQL或者MariaDB数据库,已安装上述数据库的可掠过此步骤,如尚未安装,执行以下命令以安装:
只要你是 Linux 的 root,登入 MariaDB 不需要密码。
在数据库主机上运行以下代码。
导入初始架构和数据,系统将提示您输入新创建的密码。
为Zabbix server配置数据库。编辑配置文件 /etc/zabbix/zabbix_server.conf
编辑配置文件 /etc/zabbix/nginx.conf
, 取消对'listen' 与 'server_name' 的注释并赋值。
启动Zabbix server进程
连接到新安装的Zabbix前端: http://server_ip_or_name
,打开的界面如下。
选择UTC+08:00的时区,比如Asia/Shanghai。
根据安装向导的执行操作,直至安装完成。
Zabbix的应用提供了Docker镜像,可将Zabbix-Server与Zabbix-Web使用Docker安装。
拉取mysql镜像。
拉取zabbix-server-mysql镜像,这里拉取的是zabbix 5.2版本镜像。
拉取zabbix-web-nginx-mysql镜像,这里拉取的是zabbix 5.2版本镜像。
Docker运行mysql。
运行Zabbix-Server。
运行Zabbix-Web。
访问http://server_ip_or_name:Port
初始的登录用户与密码分别为Admin
与zabbix
。
登录后的典型样例如下。其中可添加面板用于图形化显示监控数据的信息。
如果使用包安装的方式安装的Zabbix,其在安装向导阶段可设置语言,无需再进行语言的修改,如果在安装阶段设置的默认语言,Docker安装初始的语言为英文,在登录界面后,点击Administration-General
,在GUI界面中修改Default Language
为Chinese(zh_CN)
,点击下方的Update
按钮以更新语言。
Zabbix的主界面显示如下,左侧栏为菜单栏,显示可用的菜单选项;右侧为内容栏,显示对应菜单的内容。
在使用Zabbix进行监控前,您有必要了解Zabbix中的一些基本概念,这些概念会对您接下来的操作有所帮助。详细内容可参考https://www.zabbix.com/documentation/4.0/zh/manual/definitions
Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。
Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
一般来讲,Zabbix主机(Host)是指你希望监控的那些设备,例如服务器、工作站、交换机等等。
创建主机是使用Zabbix过程中的一个首要任务。例如,如果你想在一台服务器“X”上监控一些参数,你必须首先创建一个主机称之为“服务器X”,然后就可以查看添加监控项到这台“服务器X”上。
主机群组是由主机群组成的。可能包含主机和模板。一个主机群组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机群组。
监控项是从主机收集的数据信息。
配置主机后,你需要添加一些监控项以开始获取实际数据。
一个监控项是一个独立的指标。快速添加多个监控项的一种方法是将一个预定义的模板附加到主机。然而,为了优化系统性能,您可能需要对模板进行微调,使只有真正需要的监控项被频繁的监控到。
在单个监控项中,你可以指定从主机收集哪些数据。
为此,你可以使用监控项key。 从而,具有名称为system.cpu.load的监控项将收集处理器负载的数据,而名为net.if.in的监控项将收集传入的流量信息。
要用key指定更多的参数,请在key后添加方括号。 例如,system.cpu.load[avg5]将返回最近5分钟的处理器负载平均值,而net.if.in[eth0]将显示接口eth0中的流量。
触发器是“评估”由监控项采集的数据并表示当前系统状况的逻辑表达式。
当监控项用于采集系统的数据时,始终遵循这些数据是非常不切合实际的,因为这些数据始终在等待一个令人担忧或者值得关注的状态。然而这个“评估”数据的工作可以留给触发器表达式。
触发器表达式允许定义一个什么状况的数据是“可接受”的阈值。因此,如果接收的数据超过了可接受的状态,则触发器会被触发 - 或将状态更改为异常。
一个触发器可以拥有下面几种状态:
值 | 描述 |
---|---|
OK | 这是一个正常的触发器状态。在旧版本的Zabbix中称为FALSE。 |
PROBLEM | 通常意味着发生了某些事情。例如,处理器的负载较高。在旧版本的Zabbix中称为TRUE。 |
每当Zabbix server接收到作为表达式一部分的新值时,都会重新计算触发器状态(表达式)。
如果在表达式中使用基于时间的函数(nodata(), date(), dayofmonth(), dayofweek(), time(), now()),触发器就会由Zabbix history syncer进程每30秒重新计算一次。如果在表达式中同时使用基于时间和非基于时间的函数,当接收到一个新值和每隔30秒都会重新计算触发器的状态。
在 监测-问题
中 ,你可看到当前存在什么问题。问题指处在“问题”状态下的触发器。
媒介是用于在Zabbix中发送通知和警报的传送通道。
模板是可以方便地应用于多个主机的一组实体。 实体可以是:
由于现实生活中的许多主机是相同或类似的,所以,您为一个主机创建的一组实体(项目,触发器,图形,…)可能对许多人有用。当然,您可以将它们复制到每个新的主机上,但需要费很大功夫。相反,使用模板,您可以将它们复制到一个模板,然后根据需要将模板应用于尽可能多的主机。
当模板链接到主机时,模板的所有实体(项目,触发器,图形,…)都将添加到主机。模板直接分配给每个单独的主机(而不是主机组)。
模板通常用于为特定服务或应用程序(如Apache,MySQL,PostgreSQL,Postfix …)分组实体,然后应用于运行这些服务的主机。
使用模板的另一个好处是当所有主机都需要更改时。只需要在模板上更改某些内容将会将更改应用到所有链接的主机。
因此,使用模板是减少工作量并简化Zabbix配置的好方法。
应用,是一种用于把监控项分组的逻辑组。
举个例子:这里有一个叫MySQL服务器应用,它关联了MySQL服务器相关的所有监控项:MySQL的可用性、磁盘空间、处理器负载、每秒事务数、慢查询数等。
应用也用于给Web场景分组。
如果你正在使用应用,那么在监控-最新数据
中,你将看到按各应用分组下的监控项和Web场景。
https://www.zabbix.com/documentation/4.0/zh/manual/web_monitoring
从 Zabbix2.2 开始,Web 场景和 Items,Triggers 等一样,是依附在 Hosts/Templates 上的。这意味着 web 场景也可以创建到一个模板里,然后应用于多个主机
任何web场景都会收集下列数据:
对于web场景的所有步骤,都会收集下列数据:
执行 web 场景收集的数据保存在数据库中。数据自动用于图形、触发器和通知。
Zabbix 还支持获取 HTML 内容中是否存在设置的字符串。还可以模拟登录动作和模拟鼠标单击。
Zabbix web 监控同时支持 HTTP 和 HTTPS。当运行 web 场景时,Zabbix 将选择跟踪重定向(请参见下面的选择跟踪重定向)。重定向硬编码的最大数量为 10 (使用 cURL 选项 CURLOPT_MAXREDIRS)。在执行 web 场景时,所有 Cookie 都会保存。
此处推荐安装zabbix-agent2,支持zabbix的新特性。https://www.zabbix.com/cn/download_agents,点击链接后,选择Windows平台中合适的版本zabbix-agent2下载。建议的选择如下:
下载完成后,将文件解压至自定义的目录。比如位于D:\ZabbixAgent
。
修改其中的\bin\zabbix_agent2.win.conf
,修改其中的以下选项:
修改完成后,使用管理员打开Windows Poweshell程序,运行命令以安装和启用服务运行:
运行后,可查看对应的日志以确认是否运行成功。
zabbix_agent运行后,需设置windows防火墙。控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 新建规则“新建出站规则向导”,在向导的第一步,选择要创建的防火墙规则类型,选择第二个“端口,然后一步一步往下走(zabbix客户端的默认端口10050)
使用WinSCP等工具打开编辑debian中的/etc/zabbix/zabbix_agent2.conf
文件。填写以下选项:
保存设置后,使用以下命令重新启动zabbix-agent2。
接下来介绍如何在zabbix中添加主机。
在Zabbix 的网页页面中,点击配置-主机
,进入至主机列表中,列表中会列出当前已添加的主机。
如需要新增主机,点击右上角的创建主机
,进入到创建主机的界面。在改界面中填写主机名称,名称需与zabbix_agent2中设置的名称一致。选择群组,添加Interfaces
。
此处以windowsserver2016为例,添加的内容如下,其中的群组isoface
为自定义群组,可不添加。
在模板页面链接图中所示的模板,链接完成后点击添加
按钮完成。此时如果连接成功可在监测-最新数据
中查询到主机的性能状态。
linux主机的设置方式相似,可按照以下内容参考进行设定,客户端填写debian主机的IP地址。
链接的模板如下:
在模板页面链接图中所示的模板,链接完成后点击添加
按钮完成。此时如果连接成功可在监测-最新数据
中查询到主机的性能状态。根据上述的模板可同时监测docker中容器的运行状况。
IsoFace中的部分产品可通过Web场景进行监控。比如FastWeb、Flying、TARS等相关监控。
在windowsserver2016上,点击Web场景可以查看开启Web场景监控的项目。
点击右上角的创建Web场景
,按照以下格式进行填写
点击至步骤
项目,点击添加
项。
填写以下项目。填写完成后点击更新
。
其他需要添加Web场景的项目依照上述方式进行操作。
对于部分服务,只需要关注端口是否处于运行状态即可。
点击主机名称,进入到对应的主机项目中。选择监控项
。点击右上角的创建监控项
。
以下以MSSQL端口为例,可按照以下内容进行填写,此处仅检查端口是否处于运行状态。填写后点击更新
按钮。
为该监控项目创建触发器。在主机页面中,点击触发器
选项,点击右上角的创建触发器
。
根据以下方式进行填写,表达式栏目中的值通过点击右侧的添加
按钮来选择选择。
添加
按钮点击后,打开条件对话框,点击右侧的选择按钮,在其中选择刚才创建的端口监控,其余项目保持默认即可,点击插入
按钮完成表达式的插入。确认触发器的已启用
已勾选,点击更新
按钮完成触发器的创建。
左侧菜单栏点击管理-报警媒介类型
,此处以电子邮件为例。点击Email(HTML)
。
填写邮箱设置的相关信息,可参考以下选项进行设置,设置完成后,点击更新
按钮。
接下来设置接收报警的用户。点击管理-用户
菜单,显示当前可用的用户,我们以Admin为例。点击Admin
用户。
进入至Admin用户后,点击报警媒介
。
默认的报警媒介内容为空,需要自行定义,点击添加
按钮。
添加报警媒介,类型选择Email(HTML)
,填写收件人邮箱,设置启用报警的时间段,以及设置触发报警媒介严重程度阈值,点击添加
按钮,返回报警媒介按钮,点击更新
按钮。
点击菜单栏的监测-仪表板
,在该页面上点击编辑仪表盘
进入编辑模式,该模式下可以添加仪表盘,自定义仪表的类型,此处仅以显示的图形为例。
将鼠标移动至空白处,显示该内容,单击将页面添加进来。
添加构件的对话框中类型选择图形
,名称可自行设定。
主机样式右侧点击选择
,打开主机选择界面,勾选对应的主机。点击选择
按钮。
监控项模式中点击右侧的选择
,打开监控项界面,勾选对应的监控项目,点击选择
按钮。
监控项选择完成后,点击添加
按钮,将监控项添加至仪表板中。显示的图形参考如下。