Skip to content

Add support for consul catalog #978

@xelite

Description

@xelite

Overview

I would like to request a new feature for Homer - integration with HashiCorp Consul Catalog for automatic service discovery and dynamic dashboard generation.

Problem

Currently, Homer requires manual configuration of each service in the YAML configuration file. In environments using Consul for service discovery, this creates duplication of effort and maintenance overhead as services are added, removed, or changed.

Proposed Solution

Add a new Consul Catalog integration that allows Homer to:

  • Automatically discover services registered in Consul
  • Dynamically generate service cards based on Consul metadata
  • Provide filtering options to select which services to display

Desired Features

  1. Service Discovery from Consul
# Example configuration
consul:
  enabled: true
  url: "http://consul-server:8500"
  refresh_interval: 30000
  1. Advanced Filtering Options
consul:
  enabled: true
  url: "http://consul-server:8500"
  filters:
    - service_name: "^(db|web)*"
    - tags: [ "sla:max"]  # Filter by tags
    - metadata: {"environment": "prod"}  # Filter by custom metadata
  1. Customizable Display Properties
consul:
  enabled: true
  url: "http://consul-server:8500"
  mapping:
    title: "${service.Name}"  # Use Consul service name
    subtitle: "${service.Tags}"  # Display tags
    logo: "/assets/icons/${service.Meta['icon']}.png"  # Custom icons from metadata
    tagline: "${service.Meta['description']}"  # Description from metadata
  1. Health Status Integration
  • Display service health status (passing, warning, critical) from Consul health checks
  • Color-code service cards based on health status
  • Optional: hide healthy services
  1. Additional Considerations
  • Caching: Implement client-side caching to reduce load on Consul servers
  • Authentication: Support for Consul ACL tokens and TLS
  • Fallback: Graceful degradation when Consul is unavailable
  • Customization: Allow custom templates for how services are displayed

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions