Set Up Prometheus Server without Kubernetes

Published on 01 April 2020 in Administration / Version 4.7 - 2 minutes read - Read in jp

To taste Hue prometheus metrics, you may set up a Prometheus server to scrape the metrics endpoint /metrics on a Hue server (which may not need to run in docker or Kubernetes). Here is the set up example on Ubuntu 16.4.

Prerequisites: a Hue server running at localhost:8000.

  1. Create a service user

    $ sudo useradd --no-create-home --shell /bin/false prometheus
    

    ``

  2. Create a directory in /etc for Prometheus’ configuration files and a directory in /var/lib for its data

    $ sudo mkdir /etc/prometheus
    $ sudo mkdir /var/lib/prometheus
    

    ``

  3. Set the user and group ownership on the new directories to the prometheus user

    $ sudo chown prometheus:prometheus /etc/prometheus
    $ sudo chown prometheus:prometheus /var/lib/prometheus
    

    ``

  4. Download Prometheus binary from https://prometheus.io/download/

    $ cd ~/Downloads
    $ curl -LO https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
    

    ``

  5. Validate checksum value with download

    $ Sha256sum prometheus-2.16.0.linux-amd64.tar.gz 
    

    ``

  6. Unpack the downloaded archive

    $ tar xvf prometheus-2.16.0.linux-amd64.tar.gz
    

    ``

  7. Copy the two binaries to the /usr/local/bin directory

    $ sudo cp prometheus-2.16.0.linux-amd64/prometheus /usr/local/bin/
    $ sudo cp prometheus-2.16.0.linux-amd64/promtool /usr/local/bin/
    

    ``

  8. Copy the consoles and console_libraries directories to /etc/prometheus.

    $ sudo cp -r prometheus-2.16.0.linux-amd64/consoles /etc/prometheus
    $ sudo cp -r prometheus-2.16.0.linux-amd64/console_libraries /etc/prometheus
    

    ``

  9. Set the user and group ownership on the directories to the prometheus user. Using the -R flag will ensure that ownership is set on the files inside the directory as well.

    $ sudo chown -R prometheus:prometheus /etc/prometheus/consoles
    $ sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
    

    ``

  10. Remove the leftover files from your downloads folder

    $ rm -rf prometheus-2.16.0.linux-amd64.tar.gz prometheus-2.16.0.linux-amd64
    
  11. Create a configuration file named prometheus.yml

    $ vi /etc/prometheus/prometheus.yml
    

    Content of prometheus.yml, port 8000 is your Hue server port, and change it if needed.

    global:
      scrape_interval: 15s
    	 
    scrape_configs:
      - job_name: 'prometheus'
        scrape_interval: 5s
        static_configs:
          - targets: ['localhost:9090']
    	 
      - job_name: 'hue'
        scrape_interval: 5s
        static_configs:
          - targets: ['localhost:8000']
    
  12. Set the user and group ownership on the configuration file to the prometheus user

    $ sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
    
  13. Create a new systemd service file.

    $ vi /etc/systemd/system/prometheus.service
    

    Content of service file

    [Unit]
    Description=Prometheus
    Wants=network-online.target
    After=network-online.target
    	
    [Service]
    User=prometheus
    Group=prometheus
    Type=simple
    ExecStart=/usr/local/bin/prometheus \
        --config.file /etc/prometheus/prometheus.yml \
        --storage.tsdb.path /var/lib/prometheus/ \
        --web.console.templates=/etc/prometheus/consoles \
        --web.console.libraries=/etc/prometheus/console_libraries
    	
    [Install]
    WantedBy=multi-user.target
    
  14. To use the newly created service, reload and start systemd.

    $ sudo systemctl daemon-reload
    $ sudo systemctl start prometheus
    

When you open the browser at localhost:9090, you will see the Prometheus server page like the screenshot below.

prometheus_with_metrics_list.png

Any feedback or questions? Feel free to comment here or on the Forum or @gethue and quick start SQL querying!

Ying Chen from the Hue Team


comments powered by Disqus

More recent stories

17 November 2020
Easy Querying of live Kafka data in a Big Table like HBase with SQL
Read More
20 October 2020
Tutorial on querying live streams of data with Flink SQL
Read More
20 October 2020
Tutorial on querying live streams of data with ksql (Kafka SQL)
Read More