Skip to content

sapcc/atlas

Repository files navigation

atlas

Atlas, brother of Prometheus.

This is a standalone custom Prometheus service discovery application. It consists of a growing number of discoveries which can be enabled/disabled and configured via a yaml file. The discovered targets are then written into a configmap file, which is consumed by Prometheus.

Architecture overview

Available Discoveries:

  1. Ironic Nodes
discoveries:
      ironic:
        refresh_interval: 600 #How often the discovery should check for new/updated nodes.
        targets_file_name: "ironic.json" #Name of the file to write the nodes to.
        os_auth: # Openstack auth
          auth_url: openstack auth url
          user: openstack user
          password: os user pw
          user_domain_name: openstack user_domain_name
          project_name: openstack project_name
          domain_name: openstack domain_name
  1. Netbox API
  • DCIM-Devices
    netbox:
        refresh_interval: 600 # How often the discovery should check for new/updated devices.
        targets_file_name: "netbox.json"  #Name of the file to write the devices to.
        netbox_host: "netbox_host_url"
        netbox_api_token: "netbox_api_token"
        dcim:
          devices: #Array of device queries
            - custom_labels: #Use to add custom labels to the target
                anyLabel: "anyValue"
                job: "job_name"
              target: 1 #Query Parameters: Any parameters the netbox api ([netbox_url]/api/dcim/devices/) accepts.
              role: "role_name"
              manufacturer: "cisco"
              region: "de1"
              status: "1"
            - custom_labels: ....
    
  • Virtualization-VMs
    netbox:
        refresh_interval: 600 # How often the discovery should check for new/updated devices.
        targets_file_name: "netbox.json"  #Name of the file to write the devices to.
        netbox_host: "netbox_host_url"
        netbox_api_token: "netbox_api_token"
        virtualization:
          vm: #Array of vms queries
            - custom_labels: #Use to add custom labels to the target
                anyLabel: "anyValue"
                job: "job_name"
              target: 1 #Query Parameters: Any parameters the netbox api ([netbox_url]/api/virtualization/virtual-machines/",) accepts.
              manufacturer: "cisco"
              region: "de1"
              tag: "tag_name"
            - custom_labels: ....
    

Install

A Dockerfile is provided to run it on Kubernetes. All necessary ENV VARs/flags can be figured out running ipmi_sd --help:

NAME:
   atlas - discovers custom services, enriches them with metadata labels and writes them to a file or Kubernetes configmap
 USAGE:
   atlas [global options]
 VERSION:
   0.1.7
 COMMANDS:
     help, h  Shows a list of commands or help for one command
 GLOBAL OPTIONS:
  - OS_PROM_CONFIGMAP_NAME: name of the configmap, where the discovered nodes should be written to.
  - K8S_NAMESPACE: name of the K8s namespace atlas is running in.
  - K8S_REGION: name of the k8s region atlas is running in
  - LOG_LEVEL: log level atlas should use:
    - "debug"
    - "error"
    - "warn"
    - "info"

To figure these out you can also just run it locally. Either by building via docker using docker build . and then docker run CONTAINER --help or directly on bare metal if you have a working go environment with go run cmd/atlas/main.go --help.

Prometheus server configuration: A sample prometheus job to read those configmap targets is shown here

About

Custom Prometheus service discovery

Topics

Resources

License

Stars

11 stars

Watchers

42 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages