本节以 zabbix 为例,介绍如何使用监控系统完成 Elasticsearch 的监控报警。

github 上有好几个版本的 ESZabbix 仓库,都源自 Elastic 公司员工 untergeek 最早的贡献。但是当时 Elasticsearch 还没有官方 python 客户端,所以监控程序都是用的是 pyes 库。对于最新版的 ES 来说,已经不推荐使用了。

GitHub 地址见:https://github.com/Wasim37/zabbix-es


安装配置

仓库中包括三个文件:

1、ESzabbix.py

2、ESzabbix.userparm

3、ESzabbix_templates.xml

其中,前两个文件需要分发到每个 ES 节点上。如果节点上运行的是 yum 安装的 zabbix,二者的默认位置应该分别是:

/etc/zabbix/zabbix_externalscripts/ESzabbix.py
/etc/zabbix/agent_include/ESzabbix.userparm

然后在各节点安装运行 ESzabbix.py 所需的 python 库依赖:

yum install -y python-pbr python-pip python-urllib3 python-unittest2
pip install elasticsearch

安装成功后,你可以试运行下面这行命令,看看命令输出是否正常:

/etc/zabbix/zabbix_externalscripts/ESzabbix.py cluster status
0

最后一个文件是 zabbix server 上的模板文件,不过在导入模板之前,还需要先创建一个数值映射,因为在模板中,设置了集群状态的触发报警,没有映射的话,报警短信只有 0, 1, 2 数字不是很易懂。

创建数值映射,在浏览器登录 zabbix-web,菜单栏的 Zabbix Administration 中选择 General 子菜单,然后在右侧下拉框中点击 Value Maping。

完成以后,即可在 Templates 页中通过 import 功能完成导入 ESzabbix_templates.xml。

在给 ES 各节点应用新模板之前,需要给每个节点定义一个 {$NODENAME} 宏,具体值为该节点 elasticsearch.yml 中的 node.name 值。从统一配管的角度,建议大家都设置为 ip 地址。


模板应用

导入完成后,zabbix 里多出来三个可用模板:

  • **Elasticsearch Node **

    Cache 其中包括两个 Application:ES Cache 和 ES Node。分别有 Node Field Cache Size, Node Filter Cache Size 和 Node Storage Size, Records indexed per second 共计 4 个 item 监控项。在完成上面说的宏定义后,就可以把这个模板应用到各节点(即监控主机)上了。

  • **Elasticsearch Service **

    只有一个监控项 Elasticsearch service status,做进程监控的,也应用到各节点上。

  • **Elasticsearch Cluster **

    包括 11 个监控项,如下列所示。其中,ElasticSearch Cluster Status 这个监控项连带有报警的触发器,并对应之前创建的那个 Value Map。

    Cluster-wide records indexed per second

    Cluster-wide storage size

    ElasticSearch Cluster Status

    Number of active primary shards

    Number of active shards

    Number of data nodes

    Number of initializing shards

    Number of nodes

    Number of relocating shards

    Number of unassigned shards

    Total number of records

Elasticsearch Cluster模板下都是集群总体情况的监控项,所以,运用在一台有 ES 集群读取权限的主机上即可,比如 zabbix server。

zabbix监控成功后,可以在grafana上进行相关配置,展示图像。下面是我初步搭建的界面:


其他

untergeek 最近刚更新了他的仓库,重构了一个 es_stats_zabbix 模块用于 Zabbix 监控,有兴趣的读者可以参考:https://github.com/untergeek/zabbix-grab-bag/blob/master/Elasticsearch/es_stats_zabbix.README.md

zabbix监控Elasticsearch集群的更多相关文章

  1. Prometheus监控elasticsearch集群(以elasticsearch-6.4.2版本为例)

    部署elasticsearch集群,配置文件可"浓缩"为以下: cluster.name: es_cluster node.name: node1 path.data: /app/ ...

  2. 6.监控elasticsearch集群---放弃采用(获取不到数据),建议看另一篇文章:监控elasticsearch

    prometheus监控es,同样采用exporter的方案. 项目地址: elasticsearch_exporter:https://github.com/justwatchcom/elastic ...

  3. Elasticsearch 集群和索引健康状态及常见错误说明

    之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一.  ...

  4. zabbix通过简单命令监控elasticsearch集群状态

    简单命令监控elasticsearch集群状态 原理: 使用curl命令模拟访问任意一个es节点可以反馈的集群状态,集群的状态需要为green curl -sXGET http://serverip: ...

  5. zabbix通过简单shell命令监控elasticsearch集群状态

    简单命令监控elasticsearch集群状态 原理: 使用curl命令模拟访问任意一个es节点可以反馈的集群状态,集群的状态需要为green curl -sXGET http://serverip: ...

  6. ElasticSearch 集群监控

    要监控哪些 ElasticSearch metrics? Elasticsearch 提供了大量的 Metric,可以帮助您检测到问题的迹象,在遇到节点不可用.out-of-memory.long g ...

  7. Prometheus 监控K8S集群资源监控

    Prometheus 监控K8S集群中Pod 目前cAdvisor集成到了kubelet组件内,可以在kubernetes集群中每个启动了kubelet的节点使用cAdvisor提供的metrics接 ...

  8. 我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知

    摘要:世上有三类书籍:1.介绍知识,2.阐述理论,3.工具书:世间也存在两类知识:1.技术,2.思想.以下是我在部署ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknow ...

  9. Elasticsearch集群搭建

    现有两部机器:192.168.31.86,192.168.31.87   参考以往博文对Elasticsearch进行配置完成:http://www.cnblogs.com/zhongshengzhe ...

随机推荐

  1. C++中的类继承(2)派生类的默认成员函数

    在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() ...

  2. Vuex随笔

    最近在项目中使用到了vuex,但是在配合vue使用时,也还是遇到了不少的问题,最终还是解决了问题,因此写一篇随笔来记录期间遇到的问题吧 项目概要: Vuex中所储存的的状态如下: Vue中:有一个ta ...

  3. WCF和ASP.NET Web API在应用上的选择

    小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/shareto ...

  4. 利刃 MVVMLight 6:命令基础

    在MVVM Light框架中,事件是WPF应用程序中UI与后台代码进行交互的最主要方式,与传统方式不同,mvvm中主要通过绑定到命令来进行事件的处理, 因此要了解mvvm中处理事件的方式,就必须先熟悉 ...

  5. Oracle的登陆问题和初级学习增删改查(省略安装和卸载)

    1:学习Oracle首先需要安装Oracle,网上已经有很多很多教程了,这里不做叙述,自己百度即可,这里安装的标准版,个人根据需求安装学习或者企业开发即可.如果安装出错,自己百度Oracle的卸载即可 ...

  6. iOS开发 socket, 全局socket

    因为项目的要求是全局的socket,  哪里都有可能使用到socket去发消息, 所以我把socket写在了单利里面 项目用的是 pod 'CocoaAsyncSocket'  三方库, 是异步的, ...

  7. 谈一下我们是如何开展code review的

    众所周知,代码审查是软件开发过程中十分重要的环节,楼主结合自己的实际工作经验,和大家分享一下在实际工作中代码审查是如何开展的, 笔者水平有限,若有错误和纰漏,还请大家指正. 代码审查的阻力 我想不通公 ...

  8. bzoj4784 [Zjoi2017]仙人掌

    Description 如果一个无自环无重边无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌.所谓简单环即不经过重复的结点的环. 现在九条可怜手上有一张无自环无重边的无向连通图,但是她觉得 ...

  9. ASP.NET MVC 常用扩展点:过滤器、模型绑定等

    一.过滤器(Filter) ASP.NET MVC中的每一个请求,都会分配给对应Controller(以下简称“控制器”)下的特定Action(以下简称“方法”)处理,正常情况下直接在方法里写代码就可 ...

  10. hdu1281二分图匹配

    小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的"车",并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放, ...