我们经营SAAS业务,我们有数百个进程可以在服务器和服务器之间漫游。它们是.net进程,可以在任何一组机器上创建(启动),运行一段时间(通常是数周),然后迁移到另一台机器。
这些进程有许多不同的时间序列输出(使用RabbitMQ广播),我们有自己的定制系统来监视应用程序进程。
我们有各种各样的监视工具(例如LogicMonitor),但是我们开始使用Zabbix进行服务器监视。
对我来说,我们把来自所有源(交换机、服务器、主机、VM、应用程序)的所有时间序列数据放在一个地方是有意义的,因为这样我们就可以比较服务器范围的数据(例如CPU负载、内存负载)。
我在考虑用Zabbix来做这个。
我可以看到Zabbix支持使用https://www.zabbix.com/documentation/3.0/manual/concepts/sender发送时间序列数据。所以我知道我可以把数据放进去。
我很难理解如何为此设置Zabbix,因为Zabbix是以服务器为中心的,每个时间序列数据都有键。但是,我希望这是一个常见的场景,但我对Zabbix并不熟悉。
我设想一个层次结构,大致如下:
DataCenter (1 of n)
-> Rack (1 of n)
keys (eg power used)
-> Physical Machine (1 of n) "The hosts"
keys (eg CPU, Memory, Network Bandwidth)
-> VM (1 of n)
keys (eg CPU, Memory, Network Bandwidth)
-> Application
keys (eg CPU, Memory, Network Bandwidth, Jobs per second etc) 这是Zabbix支持的吗?我曾想过,也许对主机或密钥使用命名约定,但感觉好像我做错了什么。
发布于 2015-12-09 08:33:41
正如您提到的,Zabbix是为主机/服务器和密钥设计的,因此,作为对层次结构建模的第一步,您可以为每个VM创建主机,然后根据数据中心或机架的需要使用主机组。
Zabbix不支持集群或漫游应用程序。为了监视这些,我通常创建“meta”,基本上是空主机条目,没有任何代理。然后,我使用一些监视脚本将zabbix陷阱项发送到该主机。
例如:使用三个VM app1、app2、app3和正常的系统监视(CPU、内存),以及一个带有应用程序模板的“元主机”service1。然后让我的漫游应用程序用zabbix_sender -z zabbixserver -s service1 -k service.some.stat -o 42发送监视数据(或对编程语言的等效库调用)。
因此,我将拥有所有VM的系统统计数据和连续的应用程序统计数据,而不是分散在三个VM中的中断应用程序统计数据。
https://serverfault.com/questions/741754
复制相似问题