You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Prometheus收集的Eclipse Ditto指标发送至ElasticSearch?

实现Eclipse Ditto指标发送至ElasticSearch的方案

方案一:通过Prometheus Remote Write直接写入ElasticSearch

ElasticSearch原生支持Prometheus的remote_write协议,可直接配置Prometheus将采集到的Ditto指标写入ES。

1. 配置ElasticSearch启用Prometheus接收端点

在docker-compose的ElasticSearch服务中添加环境变量,开启Prometheus集成:

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.3
    environment:
      - discovery.type=single-node
      - xpack.prometheus.enabled=true  # 启用Prometheus远程写入接收
      - ELASTIC_PASSWORD=changeme  # 设置ES访问密码,按需修改
    ports:
      - "9200:9200"
    volumes:
      - es-data:/usr/share/elasticsearch/data

2. 修改Prometheus配置添加remote_write

更新prometheus.yml,在配置末尾添加远程写入规则,指向ElasticSearch的Prometheus端点:

global:
  scrape_interval: 30s
scrape_configs:
  - job_name: 'ditto'
    scrape_interval: 5s
    scrape_timeout: 5s
    metrics_path: '/metrics'
    scheme: 'http'
    dns_sd_configs:
      - names:
          - 'things'
          - 'things-search'
          - 'policies'
          - 'connectivity'
          - 'gateway'
        type: 'A'
        port: 9095
    relabel_configs:
      - source_labels: [__meta_dns_name]
        target_label: instance
# 新增远程写入配置
remote_write:
  - url: "http://elasticsearch:9200/_prometheus/write"
    basic_auth:
      username: "elastic"
      password: "changeme"  # 与ES配置的密码保持一致

3. 重启Prometheus服务

修改配置后重启Prometheus使设置生效:

docker-compose restart prometheus

方案二:使用Metricbeat中转指标(支持更灵活的处理)

如果需要对指标进行过滤、转换等操作,可使用Metricbeat作为中间件,从Prometheus抓取Ditto指标再发送至ES。

1. 在docker-compose中添加Metricbeat服务

services:
  metricbeat:
    image: docker.elastic.co/beats/metricbeat:8.11.3
    user: root
    volumes:
      - ./metricbeat.yml:/usr/share/metricbeat/metricbeat.yml
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - prometheus
      - elasticsearch

2. 编写Metricbeat配置文件metricbeat.yml

metricbeat.modules:
  - module: prometheus
    metricsets: ["collector"]
    hosts: ["prometheus:9090"]
    period: 5s
    metrics_path: "/federate"
    query:
      match[]: '{job="ditto"}'  # 仅抓取ditto任务的指标

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  username: "elastic"
  password: "changeme"

# 若有Kibana可配置,用于后续可视化
# setup.kibana:
#   host: "kibana:5601"

3. 启动Metricbeat

docker-compose up -d metricbeat

验证数据写入状态

通过ES的API查询是否生成指标索引:

curl -u elastic:changeme http://localhost:9200/_cat/indices?v

若看到.prometheus-metrics-*(方案一)或metricbeat-*(方案二)开头的索引,说明数据已成功写入。

内容的提问来源于stack exchange,提问作者Utkarsh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:57:04