当前位置: 首页 > article >正文

Prometheus(八):Prometheus监控elasticsearch及常用API

目录

  • 1 Prometheus监控elasticsearch
    • 1.1 启动ES自带的监控模块暴露指标数据
    • 1.2 通过Prometheus的插件 Elasticsearch Exporter来获取指标数据
      • 1、简介
      • 2、安装
      • 3、Prometheus配置
  • 2 Prometheus常用API
    • 2.1 查询
    • 2.2 删除
    • 2.3 注册服务

1 Prometheus监控elasticsearch

使用Prometheus获取Elasticsearch的监控指标,一共有两者方法:

  • 通过启动ES自带的监控模块暴露指标数据
  • 通过Prometheus的插件 Elasticsearch Exporter来获取指标数据

1.1 启动ES自带的监控模块暴露指标数据

通过启动ES自带的监控模块暴露指标数据,主要步骤如下:
1、在 Elasticsearch 中启用监控模块修改 Elasticsearch 的配置文件,加入监控相关配置:

xpack.monitoring.collection.enabled: true  # 启用监控收集
http.cors.enabled: true
http.cors.allow-origin: "*"  # 设置跨域访问

重启 Elasticsearch 实例后,监控相关 API 会自动启用。
2、配置 Prometheus 监控 Elasticsearch
在 Prometheus 的配置文件中添加 Elasticsearch 的 job:

scrape_configs:
- job_name: 'elasticsearch'
  metrics_path: "/_prometheus/metrics"
  static_configs:
  - targets: 
    - "es-master:9200"     # Elasticsearch master 节点地址

3、Prometheus 初始抓取后,可以在控制台看到 Elasticsearch 的相关指标,如:

  • es_process_cpu_seconds_total # CPU 时间
  • es_jvm_memory_bytes_committed # JVM 内存占用
  • es_indices_indexing_index_total # 索引次数
  • es_nodes_fs_total_bytes # 节点磁盘空间占用
  • 等等

4、根据指标定义告警规则
当某些关键指标超过阈值时,Prometheus 可以发出告警,如:

groups:
- name: elasticsearch 
  rules:
  - alert: ElasticsearchNodeDown
    expr: up{job="elasticsearch", instance="es-master:9200"} == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Elasticsearch master node is down"  

1.2 通过Prometheus的插件 Elasticsearch Exporter来获取指标数据

1、简介

Elasticsearch Exporter主要是用来获取 Elasticsearch的指标数据,是使用Go语言写的,端口号为:9114

2、安装

# 下载安装
wget https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.6.0/elasticsearch_exporter-1.6.0.linux-amd64.tar.gz
tar -zxf elasticsearch_exporter-1.6.0.linux-amd64.tar.gz -C /usr/local/

# 配置快速启动文件
cat > /lib/systemd/system/elasticsearch_exporter.service << EOF
[Unit]
Description=elasticsearch_exporter
After=syslog.target network.target
[Service]
Type=simple
RemainAfterExit=no
WorkingDirectory=/usr/local/elasticsearch_exporter-1.6.0.linux-amd64/
User=root
Group=root
ExecStart=/usr/local/elasticsearch_exporter-1.6.0.linux-amd64/elasticsearch_exporter  --es.all --es.indices --collector.clustersettings --es.node="elk" --es.indices_settings --es.shards --es.snapshots --es.timeout=5s --web.listen-address ":9114" --web.telemetry-path "/metrics" --es.ssl-skip-verify --es.clusterinfo.interval=5m --es.uri https://elastic:password@192.168.92.100:9200
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
### 参数说明
--es.all:查询集群中所有节点的统计信息
--es.indices:查询集群中所有索引的统计信息
--es.indices_settings:查询集群中所有索引的设置状态
--collector.clustersettings:查询集群设置的统计信息(从v1.6.0开始,此标志已取代" .cluster_settings")
--es.node:需要获取指标的节点min
--es.shards:查询集群中所有索引的统计信息,包括分片级统计信息
--es.snapshots:导出集群快照的统计信息 
--es.timeout=5s:尝试从Elasticsearch获取统计信息超时 
--web.listen-address ":9114":地址监听网络接口,默认是9114
--es.uri http://用户:口令@IP:端口 :应该连接到的Elasticsearch节点的地址(主机和端口)。
--web.telemetry-path "/metrics":指标路径
--es.ssl-skip-verify:连接Elasticsearch时跳过SSL验证
--es.clusterinfo.interval=5m:集群标签的集群信息更新间隔


# 启动
systemctl daemon-reload
systemctl start elasticsearch_exporter.service 

# 查看
192.168.92.100:9555/metrics

3、Prometheus配置

cat prometheus.yml
  - job_name: 'elasticsearch'
    scrape_interval: 15s
    scrape_timeout: 15s
    metrics_path: /metrics
    static_configs:
      - targets: ['192.168.92.100:9555']
      
systemctl restart prometheus

2 Prometheus常用API

在Prometheus中,API的使用很常见,以下是常见的几个

2.1 查询

# 接口查询
curl http://localhost:9090/api/v1

# 查询时间段内的
curl 'http://localhost:9090/api/v1/query_range?query=up&start=2023-12-10T20:10:30.781Z&end=2023-12-11T20:11:00.781Z&step=15s'
 
# 获取到所有job
curl http://127.0.0.1:9090/api/v1/label/job/values
 
 
# 查询10秒内数据
curl http://127.0.0.1:9090/api/v1/query_range?query=my_job&start=1607999428.447&end=1607999468.447&step=10s
 
 
# 查询当前
curl http://127.0.0.1:9090/api/v1/query?query=network_traffic_input
 

    

# 查询元数据
curl -g 'http://localhost:9090/api/v1/series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'

2.2 删除

# 删除某个标签匹配的数据
curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={instance="172.18.0.2:8300"}'

curl -X POST -g 'http://192.168.92.100:9090/api/v1/admin/tsdb/delete_series?match[]=job="pushgateway"}&start<2023-02-26T00:00:00Z&end=2023-12-11T00:00:00Z'

# 删除指定 Metric 名称全部数据.只是将数据标记为删除,实际的数据(tombstones)仍然存在于磁盘上,其在将来的某一时刻会被Prometheus清除释放空间,也可以通过数据清理接口显式地清除。
curl -X PUT -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]=up{job="pushgateway"}&start=2023-08-01T00:00:00.000Z'

# 删除单个instance的数据
curl -X PUT -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]={instance="192.168.92.100:9100"}'
# 删除所有instance的数据,
curl -X PUT -g 'http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]={instance=~".*"}&start>2023-02-26T00:00:00Z&end=2023-12-12T03:30:00Z'

# 从磁盘删除已经被 delete_series 接口删除的数据,并清理现有的 tombstones
curl -X POST http://192.168.92.100:9090/api/v1/admin/tsdb/clean_tombstones

curl -XDELETE -g 'http://localhost:9090/api/v1/series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'

2.3 注册服务

consul注册服务
curl -X PUT -d '{"id": "test1","name": "test1","address": "192.24.17.156","port": 9500,"tags": ["dev"],"checks": [{"http": "http://192.24.17.156:9500/","interval": "5s"}]}'     http://192.24.17.156:8500/v1/agent/service/register

http://www.kler.cn/a/291731.html

相关文章:

  • MacOS安装MySQL
  • Pytorch | 从零构建Vgg对CIFAR10进行分类
  • WeakAuras NES Script(lua)
  • RFdiffusion Sampler类 sample_step 方法解读
  • 基于蓝牙通信的手机遥控智能灯(论文+源码)
  • 二叉搜索树Ⅲ【东北大学oj数据结构8-3】C++
  • Java 异常架构Exception(异常)
  • Docker学习之路【八】安装主从复制MYSQL8
  • 如何使用小乌龟清除认证缓存、还原版本、定位及常用开发工具集成
  • QT运行ROS工程
  • 【赛题已出】2024数学建模国赛A-E题已发布
  • 如何优雅的使用责任链模式?
  • vue3 置空a-select数据
  • 视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势
  • ARM发布新一代高性能处理器N3
  • 【git】git安装方法
  • K8S - 理解volumeMounts 中的subpath
  • 2. GIS数据工程师岗位职责、技术要求和常见面试题
  • HTTP Cookie 和 session
  • 中国次生林林龄分布数据(2020年)
  • 代码随想录冲冲冲 Day37 动态规划Part5
  • 外接串口板,通过串口打开adb模式
  • 今日(2024 年 9 月 4 日)科技新闻
  • macos 系统 降级, 重装, 升级图文教程
  • 【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!
  • Elasticsearch倒排索引