首页
学习
活动
专区
圈层
工具
发布
43 篇文章
1
干货 | Elasitcsearch7.X集群/索引备份与恢复实战
2
干货 | Elasticsearch 运维实战常用命令清单
3
腾讯云Elasticsearch集群运维常用命令详解一(集群篇)
4
腾讯云Elasticsearch集群运维常用命令详解二(节点篇)
5
腾讯云Elasticsearch集群运维常用命令详解三(索引篇)
6
如何系统的学习 Elasticsearch ?
7
Elasitcsearch 开发运维常用命令集锦
8
Elasticsearch集群数据备份与恢复 Snapshot & Restore
9
搭建ELFK日志采集系统
10
Kubernetes Helm3 部署 ElasticSearch & Kibana 7 集群
11
使用 Ansible 部署 Elasticsearch 集群
12
技术角 | 在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8部署与认证配置
13
在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8的部署与认证配置
14
Elasticsearch 生产环境集群部署最佳实践
15
ES 7.8 速成笔记(中)
16
ES 7.8 速成笔记(上)
17
如何在CentOS 7上设置生产Elasticsearch集群
18
kubernetes-2:helm实战-1:生产级别的elasticsearch集群部署
19
ElasticSearch 7集群部署
20
在CentOS 7安装ElasticSearch 7.x
21
zabbix 监控 es 集群
22
ELK 日志报警插件 ElastAlert
23
Elasticsearch集群规划最佳实践
24
kubernetes-7:elasticsearch容器化
25
Go Elasticsearch 增删改查(CRUD)快速入门
26
go操作elasticsearch示例
27
在 Kubernetes 上搭建 EFK 日志收集系统
28
一文彻底搞定 EFK 日志收集系统
29
TKE上搭建EFK日志采集系统
30
使用 EFKLK 搭建 Kubernetes 日志收集工具栈
31
腾讯云Elasticsearch集群规划及性能优化实践
32
【干货】Elasticsearch索引性能优化 (2)
33
让Elasticsearch飞起来!——性能优化实践干货
34
【干货】Elasticsearch的索引性能优化(3)
35
Elasticsearch性能优化实战指南
36
ElasticSearch性能优化官方建议
37
Elasticsearch 7.10.1集群压测报告(4核16G*3,AMD)
38
Elasticsearch压测之Esrally压测标准
39
通过 esrally 压测elasticsearch
40
Elasticsearch压测工具esrally部署之踩坑实录(上)
41
Elasticsearch压测工具Esrally部署之踩坑实录(下)
42
Elasticsearch压测工具Esrally部署指南
43
百亿架构之filebeat讲解

zabbix 监控 es 集群

主机清单(es集群生产环境建议三节点以上)

hostname

ip

software

system os

elk-node1

192.168.99.185

elasticsearch-6.8.4zabbix-agent-4.2.7

CentOS 7.5.1804

elk-node2

192.168.99.186

elasticsearch-6.8.4zabbix-agent-4.2.7

CentOS 7.5.1804

zabbix-server

192.168.99.50

zabbix-server-4.2.7zabbix-agent-4.2.7

CentOS 7.5.1804

es _cat/health?v 详解

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# curl -u elastic:qZXo7EkxoxmKvDqQIwn5 -s http://192.168.99.185:9200/_cat/health?v
epoch      timestamp cluster     status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1578208577 07:16:17  elk-cluster green           2         2    998 499    0    0        0             0                  -                100.0%

参数含义

代码语言:javascript
复制
cluster ,集群名称
status,集群状态 green代表健康;yellow代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整;
red代表部分主分片不可用,可能已经丢失数据。
node.total,代表在线的节点总数量
node.data,代表在线的数据节点的数量
shards, active_shards 存活的分片数量
pri,active_primary_shards 存活的主分片数量 正常情况下 shards的数量是pri的两倍。
relo, relocating_shards 迁移中的分片数量,正常情况为 0
init, initializing_shards 初始化中的分片数量 正常情况为 0
unassign, unassigned_shards 未分配的分片 正常情况为 0
pending_tasks,准备中的任务,任务指迁移分片等 正常情况为 0
max_task_wait_time,任务最长等待时间
active_shards_percent,正常分片百分比 正常情况为 100%

_cat/health?h 检查集群状态

(由于es集群开启用户身份认证,user:elastic ,password:qZXo7EkxoxmKvDqQIwn5 )

代码语言:javascript
复制
[root@elk-node1 /]# curl -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://192.168.99.185:9200/_cat/health?h=node.total"
2
[root@elk-node1 /]# curl -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://192.168.99.185:9200/_cat/health?h=cluster"
elk-cluster
[root@elk-node1 /]# curl -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://192.168.99.185:9200/_cat/health?h=active_shards_percent"
100.0%

es 环境变量配置脚本(es集群主机建议三台以上,防止单一节点宕机导致数据丢失)

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# cat es_env.sh
# es监控环境变量配置文件
# es节点ip和端口
ESADDR="192.168.99.185:9200, 192.168.99.186:9200"

es 集群健康检查脚本

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# cat  es_cluster_health.sh 
#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#echo $0
cd $(dirname $0)
HOMEPATH=$(pwd)

source es_env.sh
[ $? -ne 0 ] && echo "ERROR: es_env.sh not not found." >&2 && exit 1

[ X$1 = X ] && echo "ERROR: type empty." >&2 && exit 1

for addr in $(echo ${ESADDR} |sed -e 's/,/ /g')
do
  curl -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://$addr/_cat/health?h=$1" 2>/dev/null
  [ $? -eq 0 ] && break
done

es node 节点自动发现脚本

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# cat es_nodes_discovery.sh
#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#echo $0
cd $(dirname $0)
HOMEPATH=$(pwd)

source es_env.sh
[ $? -ne 0 ] && echo "ERROR: es_env.sh not not found." >&2 && exit 1

# 连接es节点,获取索引,自动发现监控项
for addr in $(echo ${ESADDR} |sed -e 's/,/ /g')
do
  curl  -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://$addr/" &>/dev/null
  [ $? -ne 0 ] && echo "WARN: connect to $addr failed." >&2 && continue

  # 获取索引列表
  # 日索引
  list=( $(curl  -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://$addr/_cat/nodes?h=name" 2>/dev/null) )
  #echo -e "${list[*]}\n\n"

  #[ x$list = x ] && echo "ERROR: no discovery data list found." >&2 && exit 1
  # 将列表list,转换为发送给zabbx的json数据。length=${#list[@]}
  #printf "{\n"
  printf '{\"data\":[ '
  for ((i=0;i<$length;i++))
  do
    printf "{\"{#NAME}\":\"${list[$i]}\"}"

    if [ $i -lt $[ $length-1 ] ];then
      printf ','
    fi
  done
  #printf  "\n\t]\n"
  #printf "}\n"
  printf  " ]}"
  
  break
done

es node 节点监控脚本

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# cat es_node_monitor.sh
#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#echo $0
cd $(dirname $0)
HOMEPATH=$(pwd)

source es_env.sh
[ $? -ne 0 ] && echo "ERROR: es_env.sh not not found." >&2 && exit 1

[ X$1 = X ] && echo "ERROR: node name empty." >&2 && exit 1
[ X$2 = X ] && echo "ERROR: type empty." >&2 && exit 1

for addr in $(echo ${ESADDR} |sed -e 's/,/ /g')
do
  curl  -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://$addr/_cat/nodes?bytes=b&size=b&h=name,$2" 2>/dev/null |grep "^$1" |awk '{print $2}' 
  [ $? -eq 0 ] && break
done

document count 表示可用文档的数量,不包括未被合并进程清理的已删除文档。

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# cat es_index_monitor.sh
#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#echo $0
cd $(dirname $0)
HOMEPATH=$(pwd)

source es_env.sh
[ $? -ne 0 ] && echo "ERROR: es_env.sh not not found." >&2 && exit 1

# index count
indices_count() {
  local indexfilter=$1
  for addr in $(echo ${ESADDR} |sed -e 's/,/ /g')
  do
    curl -u elastic:qZXo7EkxoxmKvDqQIwn5 -XGET "http://$addr/_cat/count/$indexfilter*?h=count" 2>/dev/null
    [ $? -eq 0 ] && break
  done
}


# 检查类型
case $1 in
  count)
    indices_count $2
  ;;
  *)
    echo "ERROR: monitor type $1 error." >&2
esac

zabbix-agent 配置

代码语言:javascript
复制
[root@elk-node1 elasticsearch_monitor]# cat  /etc/zabbix/zabbix_agentd.d/userparameter_elasticsearch.conf 
UserParameter=es_cluster_health[*],/usr/local/zabbix/scripts/elasticsearch_monitor/es_cluster_health.sh $1
UserParameter=es_nodes_discovery,/usr/local/zabbix/scripts/elasticsearch_monitor/es_nodes_discovery.sh
UserParameter=es_node_monitor[*],/usr/local/zabbix/scripts/elasticsearch_monitor/es_node_monitor.sh $1 $2
UserParameter=es_index_monitor[*],/usr/local/zabbix/scripts/elasticsearch_monitor/es_index_monitor.sh $1 $2

zabbix_get 测试

创建索引中文档计数监控项

创建索引中文档计数触发器

索引在周期内文档 count 差异数值为0触发告警,正常情况下索引的文档计数是不断增加累计。

zabbix 监控指标

参考链接

https://github.com/Vastxiao/zabbixMonitorES/tree/master/elasticsearch_monitor

下一篇
举报
领券