网站首页 > 技术文章 正文
一、环境介绍
主机名 | IP |
es-01 | 192.168.10.200 |
es-02 | 192.168.10.201 |
es-03 | 192.168.10.202 |
二、安装elasticsearch_exporter
注:elasticsearch_exporter只运行一个服务,不需要每个node都运行
[root@es-01 ~]# wget https://github.com/justwatchcom/elasticsearch_exporter/releases/download/v1.1.0/elasticsearch_exporter-1.1.0.linux-amd64.tar.gz
[root@es-01 ~]# tar zxvf elasticsearch_exporter-1.1.0.linux-amd64.tar.gz
[root@es-01 ~]# cd elasticsearch_exporter-1.1.0.linux-amd64
[root@es-01 elasticsearch_exporter-1.1.0.linux-amd64]# tree
.
├── CHANGELOG.md
├── dashboard.json #grafana 模板
├── deployment.yml #elasticsearch部署在k8s使用
├── elasticsearch_exporter #exporter执行文件
├── elasticsearch.rules #告警规则
├── LICENSE
└── README.md
[root@es-01 elasticsearch_exporter-1.1.0.linux-amd64]# mv elasticsearch_exporter /usr/local/bin/
[root@es-01 elasticsearch_exporter-1.1.0.linux-amd64]# yum -y install golang
[root@es-01 elasticsearch_exporter-1.1.0.linux-amd64]# cat > /etc/systemd/system/elasticsearch_exporter.service << EOF
[Unit]
Description=Prometheus elasticsearch_exporter
After=local-fs.target network-online.target network.target
Wants=local-fs.target network-online.target network.target
[Service]
User=root
Nice=10
ExecStart = /usr/local/bin/elasticsearch_exporter \
--es.all --es.indices \
--es.cluster_settings \
--es.indices_settings \
--es.shards --es.snapshots \
--web.listen-address ":9114" \
--es.uri http://192.168.10.200:9200
ExecStop= /usr/bin/killall elasticsearch_exporter
[Install]
WantedBy=default.target
EOF
[root@es-01 elasticsearch_exporter-1.1.0.linux-amd64]# cd ~
[root@es-01 ~]# systemctl daemon-reload
[root@es-01 ~]# systemctl enable elasticsearch_exporter
[root@es-01 ~]# systemctl start elasticsearch_exporter
[root@es-01 ~]# ps -ef|grep elasticsearch_exporter
root 95123 1 0 16:45 ? 00:00:00 /usr/local/bin/elasticsearch_exporter --es.all --es.indices --es.cluster_settings --web.listen-address :9114 --es.uri http://192.168.10.73:9200
启动成功后,可以访问 http://192.168.10.200:9114/metrics ,看抓取的信息
参数说明: --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,则查询集群快照的统计信息。
三、添加prometheus configmap
- job_name: 'elasticsearch'
scrape_interval: 60s
scrape_timeout: 30s
metrics_path: "/metrics"
static_configs:
- targets:
- '192.168.10.200:9114'
labels:
service: elasticsearch
relabel_configs:
- source_labels: [__address__]
regex: '(.*)\:9114'
target_label: 'instance'
replacement: '$1'
- source_labels: [__address__]
regex: '.*\.(.*)\.lan.*'
target_label: 'environment'
replacement: '$1'
四、Grafana导入json
4.1、使用Grafana中的Dashboard,ID为:2322
https://grafana.com/dashboards/2322
4.2、使用官方dashboard(解压后的dashboard.json)
五、prometheus.rules告警规则
# alert if too few nodes are running
ALERT ElasticsearchTooFewNodesRunning
IF elasticsearch_cluster_health_number_of_nodes < 3
FOR 5m
LABELS {severity="critical"}
ANNOTATIONS {description="There are only {{$value}} < 3 ElasticSearch nodes running", summary="ElasticSearch running on less than 3 nodes"}
# alert if heap usage is over 90%
ALERT ElasticsearchHeapTooHigh
IF elasticsearch_jvm_memory_used_bytes{area="heap"} / elasticsearch_jvm_memory_max_bytes{area="heap"} > 0.9
FOR 15m
LABELS {severity="critical"}
ANNOTATIONS {description="The heap usage is over 90% for 15m", summary="ElasticSearch node {{$labels.node}} heap usage is high"}
六、exporter 参数说明
指标 | 解析 |
##搜索和索引性能 | |
elasticsearch_indices_search_query_total | 查询总数 吞吐量 |
elasticsearch_indices_search_query_time_seconds | 查询总时间 性能 |
elasticsearch_indices_search_fetch_total | 提取总数 |
elasticsearch_indices_search_fetch_time_seconds | 花费在提取上的总时间 |
##索引请求 | |
elasticsearch_indices_indexing_index_total | 索引的文件总数 |
elasticsearch_indices_indexing_index_time_seconds_total | 索引文档总时间 |
elasticsearch_indices_indexing_delete_total | 索引的文件删除总数 |
elasticsearch_indices_indexing_delete_time_seconds_total | 索引的文件删除总时间 |
elasticsearch_indices_refresh_total | 索引刷新总数 |
elasticsearch_indices_refresh_time_seconds_total | 刷新指数的总时间 |
elasticsearch_indices_flush_total | 索引刷新总数到磁盘 |
elasticsearch_indices_flush_time_seconds | 将索引刷新到磁盘上的总时间 累计flush时间 |
##JVM内存和垃圾回收 | |
elasticsearch_jvm_gc_collection_seconds_sum | GC run time in seconds垃圾回收时间 |
elasticsearch_jvm_gc_collection_seconds_count | Count of JVM GC runs垃圾搜集数 |
elasticsearch_jvm_memory_committed_bytes | JVM memory currently committed by area最大使用内存限制 |
elasticsearch_jvm_memory_max_bytes | 配置的最大jvm值 |
elasticsearch_jvm_memory_pool_max_bytes | JVM内存最大池数 |
elasticsearch_jvm_memory_pool_peak_max_bytes | 最大的JVM内存峰值 |
elasticsearch_jvm_memory_pool_peak_used_bytes | 池使用的JVM内存峰值 |
elasticsearch_jvm_memory_pool_used_bytes | 目前使用的JVM内存池 |
elasticsearch_jvm_memory_used_bytes | JVM memory currently used by area 内存使用量 |
##集群健康和节点可用性 | |
elasticsearch_cluster_health_status | 集群状态,green( 所有的主分片和副本分片都正常运行)、yellow(所有的主分片都正常运行,但不是所有的副本分片都正常运行)red(有主分片没能正常运行)值为1的即为对应状态 |
elasticsearch_cluster_health_number_of_data_nodes | node节点的数量 |
elasticsearch_cluster_health_number_of_in_flight_fetch | 正在进行的碎片信息请求的数量 |
elasticsearch_cluster_health_number_of_nodes | 集群内所有的节点 |
elasticsearch_cluster_health_number_of_pending_tasks | 尚未执行的集群级别更改 |
elasticsearch_cluster_health_initializing_shards | 正在初始化的分片数 |
elasticsearch_cluster_health_unassigned_shards | 未分配分片数 |
elasticsearch_cluster_health_active_primary_shards | 活跃的主分片总数 |
elasticsearch_cluster_health_active_shards | 活跃的分片总数(包括复制分片) |
elasticsearch_cluster_health_relocating_shards | 当前节点正在迁移到其他节点的分片数量,通常为0,集群中有节点新加入或者退出时该值会增加 |
##资源饱和度 | |
elasticsearch_thread_pool_completed_count | 线程池操作完成(bulk、index、search、force_merge) |
elasticsearch_thread_pool_active_count | 线程池线程活动(bulk、index、search、force_merge) |
elasticsearch_thread_pool_largest_count | 线程池最大线程数(bulk、index、search、force_merge) |
elasticsearch_thread_pool_queue_count | 线程池中的排队线程数(bulk、index、search、force_merge) |
elasticsearch_thread_pool_rejected_count | 线程池的被拒绝线程数(bulk、index、search、force_merge) |
elasticsearch_indices_fielddata_memory_size_bytes | fielddata缓存的大小(字节) |
elasticsearch_indices_fielddata_evictions | 来自fielddata缓存的驱逐次数 |
elasticsearch_indices_filter_cache_evictions | 来自过滤器缓存的驱逐次数(仅版本2.x) |
elasticsearch_indices_filter_cache_memory_size_bytes | 过滤器高速缓存的大小(字节)(仅版本2.x) |
elasticsearch_cluster_health_number_of_pending_tasks | 待处理任务数 |
elasticsearch_indices_get_time_seconds | |
elasticsearch_indices_get_missing_total | 丢失的文件的GET请求总数 |
elasticsearch_indices_get_missing_time_seconds | 花费在文档丢失的GET请求上的总时间 |
elasticsearch_indices_get_exists_time_seconds | |
elasticsearch_indices_get_exists_total | |
elasticsearch_indices_get_total | |
##主机级别的系统和网络指标 | |
elasticsearch_process_cpu_percent | Percent CPU used by process CPU使用率 |
elasticsearch_filesystem_data_free_bytes | Free space on block device in bytes 磁盘可用空间 |
elasticsearch_process_open_files_count | Open file descriptors ES进程打开的文件描述符 |
elasticsearch_transport_rx_packets_total | Count of packets receivedES节点之间网络入流量 |
elasticsearch_transport_tx_packets_total | Count of packets sentES节点之间网络出流量 |
猜你喜欢
- 2024-10-21 数据库同步 Elasticsearch 后数据不一致,怎么办
- 2024-10-21 (建议收藏)小白视角总结分布式搜索组件elasticsearch《二》
- 2024-10-21 RabbitMQ消息服务用户手册(rabbitmq消息id)
- 2024-10-21 索引生命周期管理ILM看完不懂你锤我
- 2024-10-21 Elasticsearch技术问答系列-NO3(elasticsearch curator)
- 2024-10-21 从裸机到700亿参数大模型,这里有份教程,还有现成可用的脚本
- 2024-10-21 「一文搞懂」Nacos健康检查机制(nacos修改健康检查模式)
- 2024-10-21 「ceph-deploy」CentOS7部署Ceph-nautilus 14.2.18版本集群学习
- 2024-10-21 Kibana 最常见的“启动报错”的故障原因及解决方案汇总
- 2024-10-21 二进制部署Kubernetes V1.18.X(etcd集群篇)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)