ElasticSearch -- Prometheus+Grafana监控

介绍

Prometheus官方提供了ES的exporter:EsExporter
在这里插入图片描述
Github地址:elasticsearch_exporter

部署

在这里插入图片描述

  1. 下载压缩包
  2. 上传服务器,解压
  3. 启动 nohup ./elasticsearch_exporter --es.uri http://xx.x.xx.xx:9200 --es.all > ./logs 2>&1 &
## 参数说明:
--es.uri             默认http://localhost:9200,连接到的Elasticsearch节点的地址(主机和端口)。 这可以是本地节点(例如localhost:9200),也可以是远程Elasticsearch服务器的地址
--es.all                默认flase,如果为true,则查询群集中所有节点的统计信息,而不仅仅是查询我们连接到的节点。
--es.cluster_settings   默认flase,如果为true,请在统计信息中查询集群设置
--es.indices            默认flase,如果为true,则查询统计信息以获取集群中的所有索引。
--es.indices_settings   默认flase,如果为true,则查询集群中所有索引的设置统计信息。
--es.shards             默认flase,如果为true,则查询集群中所有索引的统计信息,包括分片级统计信息(意味着es.indices = true)。
--es.snapshots          默认flase,如果为true,则查询集群快照的统计信息。
  1. 启动成功后,可以访问 http://xx.xx.xxx.xx:9114/metrics/ ,看抓取的指标信息:
    在这里插入图片描述

Prometheus

配置

  1. 修改prometheus组件的prometheus.yml加入elasticsearch节点(targets即是上面机器的连接信息):
    在这里插入图片描述
  2. 重启prometheus服务:sudo systemctl restart prometheus-9090.service
该命令需提前注册系统服务:
cat /etc/systemd/system/prometheus-9090.service 

[Unit]
Description=prometheus service
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
LimitNOFILE=1000000
LimitSTACK=10485760
User=tidb
ExecStart=/bin/bash -c '/data/tidb-deploy/prometheus-8249/scripts/run_prometheus.sh'
ExecReload=/bin/bash -c 'kill -HUP $MAINPID $(pidof /data/tidb-deploy/prometheus-8249/bin/ng-monitoring-server)'

Restart=always

RestartSec=15s

[Install]
WantedBy=multi-user.target
  1. prometheus服务中验证, 注:State=UP,说明成功:
    在这里插入图片描述

Grafana

下载仪表盘

下载地址:https://grafana.com/grafana/dashboards/2322
在这里插入图片描述

导入仪表盘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报警

在这里插入图片描述

核心指标

集群健康和节点可用性

通过cluster healthAPI可以获取集群的健康状况,可以把集群的健康状态当做是集群平稳运行的重要信号,一旦状态发生变化则需要引起重视;API返回的一些重要参数指标及对应的prometheus监控项如下:
在这里插入图片描述

主机级别的系统和网络指标

在这里插入图片描述
如果CPU使用率持续增长,通常是由于大量的搜索或索引工作造成的负载。可能需要添加更多的节点来重新分配负载。

文件描述符用于节点间的通信、客户端连接和文件操作。如果打开的文件描述符达到系统的限制(一般Linux运行每个进程有1024个文件描述符,生产环境建议调大65535),新的连接和文件操作将不可用,直到有旧的被关闭。

如果ES集群是写负载型,建议使用SSD盘,需要重点关注磁盘空间使用情况。当segment被创建、查询和合并时,Elasticsearch会进行大量的磁盘读写操作。

JVM内存和垃圾回收

在这里插入图片描述
主要关注JVM Heap 占用的内存以及JVM GC 所占的时间比例,定位是否有 GC 问题。Elasticsearch依靠垃圾回收来释放堆栈内存,默认当JVM堆栈使用率达到75%的时候启动垃圾回收,添加堆栈设置告警可以判断当前垃圾回收的速度是否比产生速度快,若不能满足需求,可以调整堆栈大小或者增加节点。
在这里插入图片描述

搜索和索引性能

搜索部分:
在这里插入图片描述
索引部分:
在这里插入图片描述
将时间和操作数画在同一张图上,左边y轴显示时间,右边y轴显示对应操作计数,ops/time查看平均操作耗时判断性能是否异常。通过计算获取平均索引延迟,如果延迟不断增大,可能是一次性bulk了太多的文档。

Elasticsearch通过flush操作将数据持久化到磁盘,如果flush延迟不断增大,可能是磁盘IO能力不足,如果持续下去最终将导致无法索引数据。
在这里插入图片描述

资源饱和度

在这里插入图片描述
通过采集以上指标配置视图,Elasticsearch节点使用线程池来管理线程对内存和CPU使用。可以通过请求队列和请求被拒绝的情况,来确定节点是否够用。

每个Elasticsearch节点都维护着很多类型的线程池。一般来讲,最重要的几个线程池是搜索(search),索引(index),合并(merger)和批处理(bulk)。

每个线程池队列的大小代表着当前节点有多少请求正在等待服务。一旦线程池达到最大队列大小(不同类型的线程池的默认值不一样),后面的请求都会被线程池拒绝。
在这里插入图片描述

注册自动重启

注册为系统服务开机自动启动:

## 准备配置文件
cat <<\EOF >/etc/systemd/system/elasticsearch_exporter.service
[Unit]
Description=Elasticsearch stats exporter for Prometheus
Documentation=Prometheus exporter for various metrics about ElasticSearch, written in Go.

[Service]
User=hadoop
ExecStart=/data/services/elasticsearch_exporter-1.4/elasticsearch_exporter --es.uri http://xxx.xx.xx.xx:9200 --es.all
ExecReload=/bin/bash -c 'kill -HUP $MAINPID $(pidof /data/services/elasticsearch_exporter-1.4/elasticsearch_exporter)'

Restart=always
RestartSec=15s

[Install]
WantedBy=multi-user.target
EOF

## 启动并设置为开机自动启动
systemctl daemon-reload
systemctl enable elasticsearch_exporter.service
systemctl stop elasticsearch_exporter.service
systemctl start elasticsearch_exporter.service
systemctl status elasticsearch_exporter.service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值