Elasticsearch出口国
在本页:
简介
下面的快速入门提供了Elasticsearch export的设置说明和预先配置的仪表板、警报规则和记录规则。在运行完这个快速开始的步骤后,你将有:
设置和配置Elasticsearch export来收集Elasticsearch指标,如集群状态、活动碎片、JVM指标、Elasticsearch负载。Elasticsearch export将这些作为普罗米修斯风格的指标公开。
配置Prometheus抓取Elasticsearch export指标,并可选地将其发送到Grafana Cloud。
设置一组预先配置和策划的记录规则,以缓存频繁的Prometheus查询。
导入Grafana仪表板以可视化您的指标数据。
设置Prometheus警报规则,对度量数据进行警报。
指标使用
默认情况下,该出口商发布大约392个普罗米修斯时间序列。要查看此导出器默认附带的指标列表,请下载一个示例指标刮集在这里.
注意,根据它的配置,Elasticsearch export可能收集和发布比这个默认设置多得多的指标。要了解关于配置Elasticsearch export和切换其收集器的更多信息,请参阅Elasticsearch exportGitHub库.
除了切换Elasticsearch export的设置之外,您还可以通过删除不需要存储在Prometheus或Grafana Cloud中的时间序列来减少指标的使用。要了解如何做到这一点,请参见通过重新标签减少Prometheus度量的使用来自Grafana Cloud文档。
Grafana Cloud的Elasticsearch集成
如果您正在使用Grafana Cloud,您可以通过安装Elasticsearch出口商集成来跳过本指南中的所有步骤,它旨在帮助您在一些命令和单击中启动和运行。免费注册.
要了解如何使用Elasticsearch出口商集成设置Elasticsearch出口商,请参见Elasticsearch出口商集成来自Grafana Cloud文档。
在本页:
Elasticsearch出口商快速入门
在本指南中,您将学习如何设置和配置Elasticsearch出口商来收集Elasticsearch指标,如集群状态、活动碎片、JVM指标、Elasticsearch负载,并将它们作为普罗米修斯风格的指标公开。然后进行配置普罗米修斯抓取Elasticsearch指标,并可选地将其发送到Grafana Cloud。最后,您将设置一个预先配置和策划的记录规则, Grafana指示板,报警规则.在本指南的最后,您将拥有可以用来可视化Elasticsearch指标的仪表板,以及一组预先配置的警报。
如果你正在使用Grafana云,Elasticsearch集成可以帮助您快速启动和运行。Elasticsearch集成将Elasticsearch export嵌入到Grafana云剂并且自动提供警报规则和仪表板,因此您不必执行本指南中的步骤。要了解如何使用Elasticsearch集成设置Elasticsearch导出器,请参见Elasticsearch集成来自Grafana Cloud文档。
先决条件
在你开始之前,你应该有以下可用的:
- 与Elasticsearch出口商版本兼容的机器。要查看可用版本的列表,请参见释放.
- Elasticsearch在您的机器上运行。要了解安装和运行Elasticsearch的更多信息,请参阅Elasticsearch安装指南.
- Prometheus在您的环境中运行或直接在机器上运行。要了解如何安装Prometheus,请参见安装来自普罗米修斯的文件。
- Grafana在您的环境中运行或直接在机器上运行。要了解如何安装Grafana,请参阅安装Grafana来自格拉弗纳的文件。
- (可选)Grafana Cloud帐号。Grafana Cloud托管Grafana和a皮质基于Prometheus度量端点。您仍然需要使用安装在您的环境中的Prometheus或Grafana云剂.要了解更多关于Grafana Cloud的信息,请参见Grafana云.
步骤1:设置Elasticsearch export
在这一步中,您将在您的机器上设置Elasticsearch导出器,以Prometheus格式收集和公开Elasticsearch指标。本指南使用带有Elasticsearch 7.12.0的Ubuntu 20.04系统。根据操作系统和Elasticsearch版本的不同,步骤可能略有不同。
首先,登录到您的计算机并下载相关的Elasticsearch exports二进制文件。本指南使用linux-amd64
二进制,但你应该选择一个对应于你的系统操作系统和体系结构:
wget https://github.com/justwatchcom/elasticsearch_exporter/releases/download/v1.1.0/elasticsearch_exporter-1.1.0.linux-amd64.tar.gz
取代v1.1.0
使用您想要安装的版本。这个指南可能会过时,所以最好检查Elasticsearch出口商释放页获取最新的稳定版本。
解压tarball和cd
进入目录:
Tar XVFZ elasticsearch_export -1.1.0.linux-amd64. Tar .gz CD elasticsearch_export -1.1.0.linux-amd64. Tar .gz
如果您在同一台Linux机器上运行Elasticsearch,您的Elasticsearch端点将是http://localhost:9200
.根据您的设置,这可能是不同的,可以使用——es.uri
国旗。
最后,运行export:
/ elasticsearch_exporter - es。uri="http://localhost:9200" level=info ts= 21003-31t10 . 39:42. 180223026z caller=clusterinfo. clusterinfo. uri="http://localhost:9200" level=info。level=info ts= 21-03-31t10:39:42. 180423443z caller=clusterinfo. go:200 msg="trigger initial clusterinfo call"level=info ts= 21-03-31t10:39:42. 18398451z caller=main。go:148 msg="started cluster info retrieve " interval=5m0s level=info ts= 21-03-31t10:39:42. 184156478z caller=main。执行命令msg="starting elasticsearch_exporters " addr=:9114
如果您看到上面的输出,您就成功地运行了Elasticsearch export。
Elasticsearch export在端口9114上以Prometheus格式发布Elasticsearch度量。您可以使用旋度
.您将需要打开一个新的SSH会话,或者将Elasticsearch exports进程置于后台使用旋度
.
curl http://localhost: 9114 /指标
最后一次抓取elasticsearch_node_stats_up节点端点是否成功?# TYPE elasticsearch_node_stats_up gauge elasticsearch_nodes_roles节点角色# TYPE elasticsearch_nodes_roles gauge elasticsearch_nodes_roles{cluster="es-docker-cluster",host="172.29.0.2",name="es01",role="client"} 1 elasticsearch_nodes_roles{cluster="es-docker-cluster",host="172.29.0.2",name="es01",role="data"} 1 elasticsearch_nodes_roles{cluster="es-docker-cluster",host="172.29.0.2",name="es01",role="ingest"elasticsearch_nodes_roles{集群= " es-docker-cluster ",主人=“172.29.0.2 name = " es01 "角色=“大师”}所使用的操作系统# 1 #帮助elasticsearch_os_cpu_percent CPU百分比类型elasticsearch_os_cpu_percent计elasticsearch_os_cpu_percent{集群=“es-docker-cluster es_client_node = " true ", es_data_node = " true ", es_ingest_node = " true ", es_master_node = " true ",主机=“172.29.0.2 name = " es01} 0 #帮助elasticsearch_os_load1短期平均负载#式elasticsearch_os_load1计elasticsearch_os_load1{集群=“es-docker-cluster es_client_node = " true ", es_data_node = " true ", es_ingest_node = " true ", es_master_node = " true ",主机=“172.29.0.2 name = " es01} 0 #帮助elasticsearch_os_load15长期平均负载#式elasticsearch_os_load15计elasticsearch_os_load15{集群=“es-docker-cluster es_client_node = " true ", es_data_node = " true ", es_ingest_node = " true ", es_master_node = " true ",主机=“172.29.0.2 name = " es01} 0.05 #帮助elasticsearch_os_load5中期平均负载#类型elasticsearch_os_load5 gauge elasticsearch_os_load5{cluster="es- dockerer -cluster",es_client_node="true",es_data_node="true",es_ingest_node="true",es_master_node="true",host="172.29.0.2",name="es01"} 0 # HELP elasticsearch_os_mem_actual_free_bytes可用物理内存的字节数# TYPE elasticsearch_os_mem_actual_free_bytes测量elasticsearch_os_mem_actual_free_bytes{集群=“es-docker-cluster es_client_node = " true ", es_data_node = " true ", es_ingest_node = " true ", es_master_node = " true ",主机=“172.29.0.2 name = " es01} 0
如果看到上面的输出,就可以开始使用Prometheus抓取Elasticsearch指标了。
要避免从命令行运行和管理Elasticsearch出口商,您可以创建一个systemd
服务。要了解如何做到这一点,请参见创建systemd服务来管理代理.将代理二进制文件的路径替换为Elasticsearch exports的路径。
Elasticsearch导出器提供了分片级统计信息、集群快照统计信息等功能。要了解更多有关这些功能的信息,请参阅Elasticsearch出口商GitHub仓库.
步骤2:使用Prometheus抓取Elasticsearch出口商
现在Elasticsearch export已经在您的机器上启动并运行了,您可以配置一个Prometheus刮刮作业来收集和存储Elasticsearch export指标。
将以下刮擦作业配置添加到scrape_configs
你的prometheus.yml
配置文件:
—job_name: elasticsearch static_configs:—targets: ['elasticsearch_exporter_machine_IP_address:9114']
取代elasticsearch_exporter_machine_IP_address
上面有运行Elasticsearch export的机器的IP地址。如果你在同一台机器上运行普罗米修斯,这将是本地主机
.要了解有关配置Prometheus的更多信息,请参见配置来自普罗米修斯的文件。
如果你没有prometheus.yml
配置文件,使用您最喜欢的文本编辑器创建一个简单的配置文件。打开您喜欢的文本编辑器,并粘贴以下Prometheus配置:
global: scrape_interval: 15s scrape_configs:—job_name: elasticsearch static_configs:—targets: ['elasticsearch_exporter_machine_IP_address:9114']
这个配置告诉Prometheus每15秒清理一次所有作业。调用唯一配置的抓取作业elasticsearch
并定义了elasticsearch_exporter_machine_IP_address: 9114
目标。默认情况下,普罗米修斯会刮/指标
端点使用HTTP。
保存并关闭该文件。然后您可以使用以下命令运行Prometheus文件:
/ prometheus.yml /普罗米修斯——config.file =
将指标发送到Grafana Cloud
要将MySQL出口商度量从Prometheus发送到Grafana Cloud,请配置remote_write
的参数prometheus.yml
配置文件。要了解更多,请参见米米修斯来自Grafana Cloud文档。要了解更多关于remote_write
参数,请参见remote_write
来自普罗米修斯的文件。
步骤3:配置录音规则
使用记录规则,您可以预计算和缓存频繁查询的指标。例如,如果仪表板面板使用计算密集型查询,如率()
,您可以创建一个记录规则,该规则以固定的缩短间隔运行,并将密集查询的结果保存在一个新的时间序列中。这避免了每次刷新仪表板时获取和计算数据。要了解更多关于普罗米修斯记录规则的信息,请参见记录规则来自普罗米修斯的文件。
在加载本指南中的仪表板之前,您应该加载以下记录规则。仪表板查询和警报规则使用记录规则来减少Prometheus或Grafana Cloud Metrics服务器上的负载,这取决于您在哪里评估规则。
可以获取记录规则YAML文件在这里.
这个记录规则YAML文件是使用Elasticsearch exports生成的mixin.
将记录规则加载到Prometheus中
要将记录规则加载到Prometheus,请将以下内容添加到您的prometheus.yml
配置文件:
Rule_files: - "elasticsearch_exporter_recording_rules.yml"
一定要更换elasticsearch_exporter_recording_rules.yml
与Elasticsearch出口商记录规则YAML文件的路径。
将记录规则加载到Grafana Cloud中
要了解如何将记录规则加载到Grafana Cloud中,请参阅普罗米修斯和洛基用cortextool统治.
步骤4:配置仪表板
这个快速入门包含一个仪表板:
- Elasticsearch概述
要了解如何将这些仪表板导入Grafana,请参阅导入仪表板来自格拉弗纳的文件。
这些仪表板查询可能依赖于上一步中定义的记录规则。一定要在导入仪表板之前导入它们。
你可以获取仪表盘在这里.
步骤5:配置警报
通过使用Prometheus警报规则,您可以定义当PromQL表达式在一段时间内违反某些阈值或满足指定条件时触发的警报。例如,您可以定义aHighRequestLatency
当请求延迟度量在一段时间内大于某个阈值时触发的警报。一旦触发警报条件,警报移动到等待
状态。在满足条件后的一段时间内所规定的为
参数,警报移动到发射
状态。您可以使用类似的工具配置发送警报的路由和通知Alertmanager.Alertmanager也内置在Grafana Cloud中。
您可以获取警报规则YAML文件在这里.
将警报规则加载到Prometheus中
要将警报规则加载到Prometheus中,请将以下内容添加到您的prometheus.yml
配置文件:
Rule_files: - "elasticsearch_exporter_alerting_rules.yml"
一定要更换elasticsearch_exporter_alerting_rules.yml
与Elasticsearch警报规则YAML文件的路径。
将警报规则加载到Grafana Cloud中
要了解如何将警报规则加载到Grafana Cloud中,请参见普罗米修斯和洛基用cortextool统治.
结论
在这个快速入门中,您在Linux机器上安装并运行了Elasticsearch export。然后,您配置Prometheus刮取数据库和Elasticsearch exports公开的Elasticsearch指标。您将记录规则和警报规则加载到Prometheus中,最后导入Grafana仪表板以可视化您的Elasticsearch指标。
如果您正在使用Grafana Cloud,您可以通过在Grafana Cloud Agent中安装Elasticsearch集成来跳过本指南中的所有步骤。该集成将预先配置的Elasticsearch export嵌入到代理中,并自动提供Grafana仪表板和Prometheus警报和记录规则,因此您不必手动导入它们。要了解如何设置Elasticsearch集成,请参见Grafana云集成.
仪表板、记录规则和警报规则是使用Elasticsearch exports Mixin生成的。mixin是由主题专家策划和设计的仪表板、记录规则和警报的可重用模板。要了解更多,请参阅Elasticsearch Mixin存储库。
在本页:
在加载本指南中的仪表板之前,您应该加载以下记录规则。仪表板查询使用记录规则来减少Prometheus或Grafana Cloud Metrics服务器上的负载,这取决于您在哪里评估规则。
这个快速入门包含以下记录规则:
elasticsearch_process_cpu_high
elasticsearch_os_cpu_high
elasticsearch_yellow_cluster_status
elasticsearch_red_cluster_status
elasticsearch_filesystem_data_used_percent
elasticsearch_filesystem_data_free_percent
elasticsearch_node_disk_watermark_reached
elasticsearch_heap_utilization_percentage
组:-名称:elasticsearch_rules规则:记录:elasticsearch_filesystem_data_free_percent expr: 100 - elasticsearch_filesystem_data_used_percent记录:elasticsearch_red_cluster_status expr:由(集群)和(elasticsearch_cluster_health_status = = 2),记录:elasticsearch_yellow_cluster_status expr:由(集群)和(elasticsearch_cluster_health_status = = 1)记录:elasticsearch_process_cpu_high expr:由(集群、实例名称)和(elasticsearch_process_cpu_percent)——记录:Elasticsearch_os_cpu_high expr: sum by (cluster, instance, name) (elasticsearch_os_cpu_percent) - record: elasticsearch_filesystem_data_used_percent expr: sum by (cluster, instance, name) (100 * (elasticsearch_filesystem_data_size_bytes - elasticsearch_filesystem_data_free_bytes) / elasticsearch_filesystem_data_size_bytes) - record: elasticsearch_node_disk_watermark_reached expr:Sum by (cluster, instance, name) (round((1 - (elasticsearch_filesystem_data_available_bytes / elasticsearch_filesystem_data_size_bytes)) * 100, 0.001)) - record: elasticsearch_heap_utilzation_percentage expr: Sum by (cluster, instance, name) (100 * (elasticsearch_jvm_memory_used_bytes{area="heap"} / elasticsearch_jvm_memory_max_bytes{area="heap"}))
这个记录规则YAML文件是使用Elasticsearch exports生成的mixin.
在本页:
注意:这些仪表板可能依赖于上一个选项卡中的记录规则。一定要在导入仪表板之前导入它们。
Elasticsearch概述仪表板
该仪表板包括以下指标的面板:
- 集群的健康
- CPU和内存
- 磁盘使用情况
- 网络使用情况
- 平均负载
- JVM内存使用情况
- JVM垃圾回收
- 断路器被绊倒
- 节点
- 等待任务
- 打开每个集群的文件描述符
- 活跃的主碎片
- 活动,初始化,重定位和延迟碎片
- Translog
- 断路器
- 文件总数和大小
- 节点上的文档计数
- 文档索引、删除和合并率
- 文档合并字节
- 查询、索引和合并时间
- 限制索引存储的时间
- 总操作率,时间和统计
- 线程池
- 缓存
- 段
您可以使用下面的仪表板ID直接导入仪表板:14191
您可以获取仪表板JSON在这里.
这个仪表板是使用Elasticsearch export生成的mixin.
在本页:
这个快速入门包含以下警报规则:
ElasticsearchTooFewNodesRunning
运行的Elasticsearch节点比预期的要少
ElasticsearchHeapTooHigh
堆利用率过高。处理步骤
ElasticsearchClusterNotHealthy
黄色、红色Elasticsearch集群状态
ElasticsearchNodeDiskWatermarkReached
磁盘可用存储即将耗尽
ElasticsearchProcessCPUHigh
Elasticsearch进程占用CPU过多
SystemCPUHigh
Elasticsearch节点CPU使用率过高
下载以下警报规则YAML文件groups:—name: ElasticSearch -alerts rules:—alert: ElasticsearchTooFewNodesRunning expr: elasticsearch_cluster_health_number_of_nodes < 3 for: 5m annotations: description: "There are only {{$value}} < 3 ElasticSearch nodes running" summary: ElasticSearch running on less than 3 nodes labels: severity: critical -alert: ElasticsearchHeapTooHigh expr: elasticsearch_heap_utilzation_percentage > 90 for: 15m annotations: description: The heap usage is over 90% for 15m summary:"ElasticSearch node {{$labels.name}} heap usage is high" labels: severity: critical - alert: ElasticsearchClusterNotHealthy expr: elasticsearch_red_cluster_status for: 2m annotations: message: "Cluster {{$labels.name}} heap usage is high . "cluster}}运行状况至少2m内为RED。集群不接受写,碎片可能缺失或主节点尚未被选中。"摘要:集群健康状态为红色标签:严重性:紧急-警报:ElasticsearchClusterNotHealthy expr: elasticsearch_yellow_cluster_status for: 20m annotations": message": "集群{{$labels. "cluster}}的运行状况状态至少20万年以来一直为黄色。" summary":集群健康状态为YELLOW labels: severity: warning - alert: ElasticsearchNodeDiskWatermarkReached expr: elasticsearch_node_disk_watermark_reached > 85 for: 5m annotations: message: "Disk Low WatermarkReached at {{$labels. "{{$标签中的节点}}节点。Cluster}}集群。不能再为该节点分配碎片。摘要:" disk Low WatermarkReached - disk saturation is {{$value}}%" labels: severity: warning - alert: ElasticsearchNodeDiskWatermarkReached expr: elasticsearch_node_disk_watermark_reached > 90 for: 5m annotations: message: " disk High WatermarkReached at {{$labels. "{{$标签中的节点}}节点。Cluster}}集群。如果可能,一些碎片将被重新分配到不同的节点。summary: " disk High Watermark Reached - disk saturation is {{$value}}%" labels: severity: critical - alert: ElasticsearchJVMHeapUseHigh expr: elasticsearch_heap_utilzation_percentage > 75 for: 10m annotations: message: "节点上的JVM堆使用率{{$labels. "节点}}在{{$标签。cluster}} cluster is {{$value}}%." summary: JVM Heap usage on the node is high labels: severity: critical - alert: SystemCPUHigh expr: elasticsearch_os_cpu_high > 90 for: 1m annotations": message: "System CPU usage on the node {{$labels. "节点}}在{{$标签。cluster}} cluster is {{$value}}%" summary: System CPU usage is high labels: severity: critical - alert: ElasticsearchProcessCPUHigh expr: elasticsearch_process_cpu_high > 90 for: 1m annotations: message: "ES process CPU usage on the node {{$labels. "节点}}在{{$标签。cluster }} cluster is {{ $value }}%" summary: ES process CPU usage is high labels: severity: critical
这个警报规则YAML文件是使用Elasticsearch exports生成的mixin.
在本页:
Grafana Cloud提供了一个不断扩展的集成集,可以在几分钟内快速获得可观察性堆栈并运行。Elasticsearch集成内置到Grafana Cloud Agent中,可以公开和删除必要的Elasticsearch指标,并将它们推送到Grafana Cloud中。代理将使用嵌入的Elasticsearch export来抓取指标,而Grafana Cloud将自动提供定制的Grafana仪表板和警报,以便对这些数据进行可视化和操作。
要了解更多,请查看Grafana Cloud文档.
它是如何工作的
配置、安装、连接和维护Prometheus监视组件通常涉及大量的领域知识。从设置到仪表板和警报可能需要相当长的时间。作为Grafana的创造者——以及Prometheus和Cortex的核心贡献者——我们构建了简单的集成来抽象一些工作,以便快速开始。它是如何工作的:
- 注册(或登录)一个免费Grafana云帐户.
- 选择你想要观察的目标(一个不断扩大的目录)。
- 运行一行命令安装Grafana Agent。代理嵌入abnd预配置出口商以公开默认指标,并将它们推到Grafana云指标后端。
- 瞧!您将看到定制的Grafana仪表板,并将受益于正常的缺省提醒。
寻找不同的出口商或集成?查看我们的不断增长的流行组件集成库比如MySQL, Postgres, Redis, Memcached等等。