zabbix 监控 Elasticsearch

2017年4月18日

Zabbix Elasticsearch 的脚本及模版文件打包 Elasticsearch-zabbix-monitor-master.zip下载

解压后目录结构

├── elasticsearch_mon
│   ├── discovery_es_mon.sh
│   ├── es_mon.conf
│   └── es_mon.sh
├── README.md
└── zabbix_templates
├── es_discovery.conf
└── zbx_elasticsearch_templates.xml

zabbix_templates目录下的es_discovery.conf需要放置在/etc/zabbix/zabbix_agentd.d/目录下,如果zabbix自定义安装路径,则需要按照自己的部署路径调整

zabbix_templates目录下的zbx_elasticsearch_templates.xml需要在zabbix的WEB操作页面下创建模板进行导入 (模版导出文件注意如果希望此模版在 默认的 Temples组中 请自行更改Group)

<groups>
<group>
<name>online_elasticsearch</name>
</group>
</groups>

默认安装的如 debain apt-get 安装的模板中还有一个需要更改的地方
zbx_elasticsearch_templates.xml
找到 elasticsearch_proc_status 这个模块的 KEY proc.num[,es,all,elasticsearch] (第32行)
更改为 : proc.num[java]
原因 :
elasticsearch 启动后进程大概如下:

elastic+ 24275 1 0 06:14 ? 00:00:36 /usr/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-2.4.4.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start -Des.pidfile=/var/run/elasticsearch/elasticsearch.pid -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch -Des.default.path.data=/var/lib/elasticsearch -Des.default.path.conf=/etc/elasticsearch

zabbix_get -s 127.0.0.1 -k proc.num[,es,all,elasticsearch]
zabbix_get -s 127.0.0.1 -k proc.num[elasticsearch]

获取不到数据 将其更改为 zabbix_get -s 127.0.0.1 -k proc.num[java] 可获取到当前ES启动的进程 1

elasticsearch_mon目录下的文件需要放置到es_discovery.conf 文件指定的路径,如需更改,请同时更新es_discovery.conf 文件
es_discovery.conf 需要注意或者修改的地方 FILE_DIR (第30行)
declare -r FILE_DIR="./es_mon.conf" 你存放的路劲 建议更改为绝对路径: declare -r FILE_DIR="/etc/zabbix/shell/es_mon.conf"
es_mon.conf 需要注意或者修改的地方 PORT 更改为当前使用的端口
declare -r PORT=9200

仅适用于Linux及Bash2.0+环境,Elasticsearch 5.0+版本测试可用,其他版本未经测试
脚本依赖的JSON处理工具jq下载页面地址:https://stedolan.github.io/jq/,请下载jq后将其移动到系统的$PATH路径下
如果是 debain or ubuntu 系统可以apt-get 安装 apt-get install jq

我当前zabbix 的目录结构

/etc/zabbix/

├── shell 存放脚本的位置
│   ├── apache_status.sh
│   ├── memcache_low_discovery.sh
│   ├── memcache-tool.pl
│   └── ngx_status.sh
├── zabbix_agentd.conf
└── zabbix_agentd.d
├── apache.conf
├── memcached.conf
├── userparameter_mysql.conf.bak
└── zabbix-nginx.conf

使用方法如下:
将 elasticsearch_mon 中的文件传到 shell中;
将 zabbix_templates 中的 es_discovery.conf 传到 zabbix_agentd.d

将 zbx_elasticsearch_templates.xml 导入zabbix后台模板中;

重启 zabbix-agent 不抱错几本就是没问题了

获取数据测试

root@backup:# zabbix_get -s 127.0.0.1 -k proc.num[java]
1
root@backup:# zabbix_get -s 127.0.0.1 -k discovery_es_cluster_health
{
"data":[{"{#KEY}":"es_cluster.health.","{#ARGV}":"status"},
{"{#KEY}":"es_cluster.health.","{#ARGV}":"active_primary_shards"},
{"{#KEY}":"es_cluster.health.","{#ARGV}":"shards"},
{"{#KEY}":"es_cluster.health.","{#ARGV}":"initializing_shards"},
{"{#KEY}":"es_cluster.health.","{#ARGV}":"number_of_pending_tasks"},
{"{#KEY}":"es_cluster.health.","{#ARGV}":"relocating_shards"},
{"{#KEY}":"es_cluster.health.","{#ARGV}":"unassigned_shards"}
]
}
root@backup:# zabbix_get -s 127.0.0.1 -k discovery_es_node_fs
{
"data":[{"{#KEY}":"es_node.fs.","{#ARGV}":"total_available_in_bytes"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_disk_io_op"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_disk_io_size_in_bytes"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_disk_read_size_in_bytes"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_disk_reads"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_disk_write_size_in_bytes"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_disk_writes"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_free_in_bytes"},
{"{#KEY}":"es_node.fs.","{#ARGV}":"total_total_in_bytes"}
]
}

原文 https://github.com/chaubeau/Elasticsearch-zabbix-monitor

没有评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注