Zabbix主服务器进程:把握监控全局! (zabbix主服务器进程)

Zabbix是一款全球知名的开源监控系统,其主服务器进程是整个系统的核心,它负责接收和处理来自各个代理端的监控数据,并存储到数据库中进行分析和展示。Zabbix主服务器进程的工作效率和稳定性对整个系统的监控能力至关重要,本文将对其功能和具体实现进行详细介绍,希望能帮助读者更好地了解Zabbix系统及其监控流程。

一、Zabbix主服务器进程的功能

1.接收并处理监控数据

Zabbix主服务器进程是整个系统与代理端之间的枢纽,负责接收来自代理的监控数据,进行存储和处理。它采用分布式架构,支持多个服务器的部署,能够集中处理来自不同区域、不同网络拓扑的监控数据,经过处理后提供给客户端展示。其处理能力强大,有效提高监控的效率和精度。

2.实现监控配置、触发器和报警机制

Zabbix主服务器进程还实现了监控配置、触发器和报警机制,对监控数据进行整合、分析和处理,根据预设的规则生成事件,并对事件进行分类和处理,如报警、处理、忽略等。Zabbix主服务器能够基于不同级别的事件生成报警信息,通过邮件、短信、微信、钉钉等方式通知运维人员及时响应和处理。

3.提供监控数据统计和分析功能

Zabbix主服务器进程实现了监控数据的统计和分析功能,能够根据监控数据生成各种图表和报表,提供给客户端进行展示。它可实现对监控数据的历史记录和趋势分析,从而更好地了解整个监控系统的运行情况,以便更好地调整和优化监控策略。

二、Zabbix主服务器进程的实现方式

Zabbix主服务器进程的实现方式主要分为以下两种:

1.单节点实现

单节点实现是指将Zabbix主服务器进程放置在单一服务器上进行部署,通常适用于较小规模的监控系统。通过这种方式,可以保证监控数据的稳定性和一致性,并且易于维护。

2.多节点实现

多节点实现是指将Zabbix主服务器进程分布式地部署在多台服务器上,每台服务器分别处理不同区域的监控数据,然后将数据整合起来进行统计和分析。通过这种方式,可以提高监控系统的可扩展性和可用性,保证数据的实时性和完整性。

三、Zabbix主服务器进程的优化方法

为了更好地发挥Zabbix主服务器进程的监控功能,需要优化其运行环境和性能,提高其稳定性和效率。具体而言,可以从以下几个方面进行优化:

1.优化服务器硬件环境

将Zabbix主服务器进程部署在高性能的服务器上,并将服务器的磁盘空间、内存、CPU等资源合理地配置,保证其运行的稳定性和效率。

2.配置Zabbix Server内存参数

在Zabbix Server的配置文件中可以设置内存参数,如Java虚拟机(JVM)堆内存、堆外内存和元空间内存大小等。根据实际情况调整这些参数,可以提高Zabbix Server的运行效率和性能。

3.配置数据库参数

Zabbix Server使用数据库进行数据的存储和处理,在数据库设置中可以调优相关参数来提高数据库的性能和响应速度。例如,可以优化数据库索引、查询缓存等。

4.使用代理的Zabbix Server

Zabbix主服务器进程可以使用代理来采集监控数据,通过代理可以将负载分布到不同的服务器上,减轻Zabbix Server的压力,并提高系统的效率和准确性。

5.合理规划监控策略

在设计监控策略时,需要根据监控对象的实际情况进行合理规划,避免监控范围过大或过小,以免影响监控效果和服务器性能。

四、

Zabbix主服务器进程是整个Zabbix监控系统的核心,它负责接受和处理来自代理端的监控数据,并提供监控配置、触发器和报警机制以及监控数据统计和分析功能。通过单节点实现和多节点实现等不同方式的部署,可以实现对不同规模的监控对象进行监控,为用户提供高效准确的监控服务。在优化其运行环境和性能方面,需要合理配置服务器硬件环境、内存参数、数据库参数等,以提高整个监控系统的稳定性和效率。

相关问题拓展阅读:

如何通过Zabbix获取监控数据

您好,是这样的:

zabbix基本架构:

1.Server

zabbix系统核心进程,轮询并捕获数据、发送通知等。是zabbix agent和zabbix proxy汇报数据的对象。server自身可远程检测网络服务。所有的前后端配置、统计信息、可操作数据存储于此罩培。包含server、前段界面和后端DB几部分。

2.Agent

部署在被监控主机上用于监控本地资源和应用并向zabbix server汇报结果。使用本地系统调用故非常高效。有主动和被动两种检测模式。被动模式下agent根据server或proxy的具体请求来返回数据。主动模式下先主动由server获取监控项列表在检测并返回新的数据。采用主动或被动检测取决于相应监控项的配置。

3.Proxy

可以自由选择部署或者不部署,主要用于分担server的负载。在集中化监控远程位置、分支、网络的场景中是很好的解决方案。可从被监控设备收集数据缓存在proxy本地后传递给其所属的zabbix server。proxy需要单独的数据库。

4.Java gateway

java实现的守护进程用于监控JMX类型的应用程序。

5.Sender

命令行工具zabbix_sender,用于向zabbix server发送性能数据和可用性数据。多用于用户脚本定期向server发送数据。

如:

shell> cd bin

shell> ./zabbix_sender -z zabbix -s “Linux DB3” -k db.connections -o 43

6.Get

命令行工具塌猛zabbix_get,用于同agent通信从agent获取数据。可用于zabbix agents的troubleshooting。

如:

shell> cd bin

shell> ./zabbix_get -s 127.0.0.1 -pk “system.cpu.load”

#zabbix术语表:

host

需要被监控的设备,如交换机、路由器、WEB服务器、DB服务器等

host group

被监控设备的逻辑分组,如DB服务器一组、WEB服务器一组等。可包含主机和模板。用于权限控制

item

需要被监控的项,如CPU空闲率、某一块磁盘的使用率等

trigger

用于评估收到的团闷桥监控值是否超出设定的阈值的逻辑表达式

event

如trigger状态改变等值得注意的事件

action

预先定义的响应event的一系列operations

escalation

执行action中的operations的定制场景;一连串的发送通知、执行远程命令

media

传递notification的方式

notification

通过media发送给用户的关于某个event的消息

remote command

在被监控机器上触发并自动执行的预定义命令

template

用于简化和加速主机上大规模监控任务的部署。包含一系列项目,如items, triggers, graphs, screens, applications, low-level discovery rules

application

逻辑组中的一组items

web scenario

一个或多个HTTP request用以检查web站点可用性

frontend

zabbix的web界面

zabbix api

允许通过ON RPC 协议创建、更新和获取zabbix对象如,hosts, items, graphs and others。或者执行其他任务

zabbix server

zabbix核心,履行监控,与zabbix proxies、zabbix client交互、计算trigger、发送notification、存储数据等任务

zabbix agent

部署在被监控主机上用于监控本地资源和应用

zabbix proxy

可代zabbix server收集数据分担处理负载

#zabbix配置:

可通过WEB界面或者模板进行配置

需配置内容包括users、user groups、hosts、host groups、items、Triggers、Events、notification、templates、visualisation等。

最终配置会被存储在后端database中。

参考:

zabbix取数方式

1.zabbix api

基于WEB的API,通过ON PRC协议获取或更改zabbix配置,并可用于获取历史监控数据。clients和API间的request和response使用ON格式。包含一系列可从功能上分为不同组别的方法。

发起HTTP请求的格式类似如下:

POST

HTTP/1.1

Content-Type: application/json-rpc

{“jsonrpc”:”2.0″,”method”:”apiinfo.version”,”id”:1,”auth”:null,”params”:{}}

其中

是zabbix前端的地址;Content-Type必须指明且为application/json-rpc, application/json or application/jsonrequest三者之一。{“jsonrpc”:”2.0″,”method”:”apiinfo.version”,”id”:1,”auth”:null,”params”:{}}是请求的具体内容。

一些实例:

*登录认证

{

“jsonrpc”: “2.0”,

“method”: “user.login”,

“params”: {

“user”: “Admin”,

“password”: “zabbix”

},

“id”: 1,

“auth”: null

}

其中:

jsonrpc:指明ON-RPC协议版本,这里是2.0版本

method:指明调用的API方法,这里是用户登录

params:需要传递给API method的参数,这里是用户名和密码

id:本次请求的标识符

auth:用户认证令牌,目前尚无所以为null

若参数无误response将会包含用户认证令牌,如:

{

“jsonrpc”: “2.0”,

“result”: “0424bd59be7df33”,

“id”: 1

}

*获取hosts信息

{

“jsonrpc”: “2.0”,

“method”: “host.get”,

“params”: {

“output”:

“hostid”,

“host”

>,

“selectInterfaces”:

“interfaceid”,

“ip”

>

},

“id”: 2,

“auth”: “0424bd59be7df33”

}

本例使用可用的用户认证令牌通过host.get方法获取所配置的主机的ID 、name等信息,返回如下

{

“jsonrpc”: “2.0”,

“result”:

{

“hostid”: “10084”,

“host”: “Zabbix server”,

“interfaces”:

{

“interfaceid”: “1”,

“ip”: “127.0.0.1”

}

>

}

>,

“id”: 2

}

为了考虑性能影响、尽量仅列出所需项而非返回所有数据

*创建新监控项

例如在上一步获取的host上建立新的监控项、监控/home/joe/目录的剩余空间

{

“jsonrpc”: “2.0”,

“method”: “item.create”,

“params”: {

“name”: “Free disk space on $1”,

“key_”: “vfs.fs.size”,

“hostid”: “10084”,

“type”: 0,

“value_type”: 3,

“interfaceid”: “1”,

“delay”: 30

},

“auth”: “0424bd59be7df33”,

“id”: 3

}

其中params参数中的几个关键参数含义如下:

name:监控项的名称,这个可以自己灵活定义,其中的$1代表key_中的之一个参数,此处为/home/joe/

key_:预定义的监控项,zabbix提供了一系列此类监控内容,此处需从其中进行选择。

hostid:即上步获得的hostid

value_type:监控数据值的类型,不同的数字代表不同的类型,此处的3代表整型

delay:zabbix取数时间间隔,此处为30秒取一次

返回结果如下:

{

“jsonrpc”: “2.0”,

“result”: {

“itemids”:

“24759”

>

},

“id”: 3

}

itemid为生成的监控项的id

*获取历史数据:

从历史记录表获取itemids为23296的按clock降序排列的十条记录

history参数可能的取值

0 – float;

1 – string;

2 – log;

3 – integer;

4 – text.

{

“jsonrpc”: “2.0”,

“method”: “history.get”,

“params”: {

“output”: “extend”,

“history”: 0,

“itemids”: “23296”,

“sortfield”: “clock”,

“sortorder”: “DESC”,

“limit”: 10

},

“auth”: “038e1d7b1735c6a5436ee9eae095879e”,

“id”: 1

}

返回结果:

{

“jsonrpc”: “2.0”,

“result”:

{

“itemid”: “23296”,

“clock”: “”,

“value”: “0.0850”,

“ns”: “”

},

{

“itemid”: “23296”,

“clock”: “”,

“value”: “0.1600”,

“ns”: “”

},

…>

}

*错误处理

下例忘记了groups这个参数

{

“jsonrpc”: “2.0”,

“method”: “host.create”,

“params”: {

“host”: “Linux server”,

“interfaces”:

{

“type”: 1,

“main”: 1,

“useip”: 1,

“ip”: “192.168.3.1”,

“dns”: “”,

“port”: “10050”

}

>

},

“id”: 3,

“auth”: “0424bd59be7df33”

}

返回结果如下,包含的不是result属性而是error属性

{

“jsonrpc”: “2.0”,

“error”: {

“code”:,

“message”: “Invalid params.”,

“data”: “No groups for host \”Linux server\”.”

},

“id”: 3

}

对于获取监控数据来说,比较关心的应该是history.get这个方法。这种方式实际上最终还是由后台数据库获取的。方法提供了丰富的参数,使用非常灵活。但对于一次性大规模的取出大量主机大量监控项的大批数据不太适合。

  历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的更大,最小和平均值,即存储监控数据的原始数据。

  趋势数据:trends相关表,趋势数据是经过Zabbix计算的数喊兆据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时更大,最小和平均值,即存储监控数据的汇总数据。

  Zabbix可以通过两种方式获取历史数据:

  1.通过Zabbix前台获取历史数据

  通过Zabbix前台查看历史数据非常简单,可以通过Monitoring->Lastest data的方式查看。也可以点击右上角的As plain test按钮保存成文本文件。

  2.通过前台获取的数据进行处理和二次查询有很多限制,因此可以通过SQL语句直接从后台DB查询数据。

  首先大家应该熟悉SQL语句Select 常用用法:

  SELECT Select_List

FROM { Table_name | View_name}

>

>

  说明:

  1)SELECT子句指定要查询的特定表中的列,它可以是*,表达式,列表等。

  2)INTO子句指定要生成新的表。

  3)FROM子句指定要查询的表或者视图。

  4)WHERE子句用来限定查询的范围和条件。

  5)GROUP BY子句指定分组查询子句。

  6)HAVING子句用于指定分组子句的条件。

  7)ORDER BY可以根据一个或者多个列来排序查询结孝渗颂果,在该子句中,既可以使用列名,也可以使用相对列号,ASC表示升序,DESC表示降序。

zabbix主服务器进程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于zabbix主服务器进程,Zabbix主服务器进程:把握监控全局!,如何通过Zabbix获取监控数据的信息别忘了在本站进行查找喔。


数据运维技术 » Zabbix主服务器进程:把握监控全局! (zabbix主服务器进程)