如何将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
相关产品推荐
相关产品推荐

