Monitoring Denodo with Prometheus

Applies to: Denodo 8.0
Last modified on: 21 Jan 2022
Tags: JMX Monitoring Prometheus

Download document

You can translate the document:

Content

This document describes the detailed steps on monitoring Denodo with Prometheus including steps to install, configure and monitor Denodo from Prometheus via the JMX Exporter.

Introduction

Prometheus

Prometheus is an open source monitoring and alerting tool which stores and exposes application metrics, statistics, etc. It collects metrics from targets by scraping HTTP endpoints at given intervals, evaluates rule expressions, displays the results and can trigger alerts when specific conditions are observed.

Prometheus Exporters

Prometheus Exporters are used to export data metrics from Prometheus. These exporters need to be downloaded and installed in order to pull appropriate metrics. Among the different types of Prometheus exporters, a JMX Exporter can be used to perform the integration with Denodo for monitoring.

JMX Exporter

JMX (Java Management Extensions) is a Java-native specification which allows developers to expose a Java application’s metrics, statistics and basic operations. Since most enterprise-class monitoring solutions support gathering JMX metrics, using a Prometheus JMX exporter is considered as the standard and practical way to gather data about running Java applications.

Configuring Prometheus for monitoring Denodo Virtual DataPort

This section explains the detailed steps for configuring Prometheus with the Denodo Virtual DataPort server for monitoring purposes. It includes:

  • Download and Configure Prometheus.
  • Download and Configure JMX Exporter.
  • Configure the JVM Options of the Virtual DataPort server.
  • Starting and Launching Prometheus.

Prerequisites

If the Virtual DataPort server and Prometheus run on the same machine, you can skip this section. However, if the Virtual DataPort server runs on a different machine then the steps mentioned in the following documents may be needed:

Set the Host Name of Virtual DataPort

Enable Authentication on the Monitoring Interface

These steps will allow monitoring a Virtual DataPort server running on a remote machine.

Download and Configure Prometheus

  • Prometheus can be downloaded from https://prometheus.io/download/.
  • To install Prometheus just unzip the download.
  • Next, the prometheus.yml file located in the Prometheus installation folder needs to be configured with a Denodo job.

The Prometheus installation comes with a sample configuration of the prometheus.yml file. In this file, the "scrape_configs" element controls the resources monitored by Prometheus.

In addition to the default configuration, configure a new job for Denodo under the "scrape_configs" block. Below is a sample Denodo job configuration for the prometheus.yml file, where localhost and 8081 are the Prometheus host and the Prometheus default port number:

        

     - job_name: "Denodo"

   static_configs:

         - targets: ["localhost:8081"]

Download and Configure JMX Exporter

  • Download the JMX Exporter jar based on the JAVA version used:.

  • Place the downloaded jar file under the "<DENODO_HOME>/bin" folder.
  • Setup a config.yaml file and place it also under the "<DENODO_HOME>/bin" folder.

You can use the below sample for the config.yaml file:

---

startDelaySeconds: 0

hostPort: localhost:9997

username: admin

password: admin

ssl: false

lowercaseOutputName: false

lowercaseOutputLabelNames: false

rules:

      - pattern: ".*"

NOTE: This is a simple configuration and users can add additional configuration parameters based on their requirements.

  • hostPort: Denodo host name and JMX port (Default 9997)
  • username: Denodo JMX admin user name 
  • password: Denodo JMX admin password        

Configure the JVM Options of the Virtual DataPort server

To use Prometheus, a JVM parameter must be added to the Java application (here, the Denodo Virtual DataPort server) requesting that it loads the agent on application startup. The configuration file for specifying the JVM parameters need to be modified accordingly for integrating Prometheus with the Virtual DataPort server.

For this, the property "java.env.DENODO_OPTS_START" of the VDBConfiguration.properties file under directory "<DENODO_HOME>/conf/vdp" needs to append the following "-javaagent" parameter:

-javaagent:<PATH>/<JAR_NAME>.jar=[HTTP PORT]:<PATH>/config.yaml

If the JMX exporter JAR file and the config.yaml are placed under "<DENODO_HOME>/bin" then configure the value like below (specify the complete path in case of other location):

-javaagent:jmx_prometheus_javaagent-0.16.1.jar=8081:config.yaml

The port 8081 is the same configured in prometheus.yml. The final value of the property will be something like:

java.env.DENODO_OPTS_START=-Xmx4096m -XX\:+DisableExplicitGC -XX\:+UseG1GC -XX\:ReservedCodeCacheSize\=256m -javaagent\:jmx_prometheus_javaagent-0.16.1.jar\=8081\:config.yaml

Once the changes are made, make sure to run the script <DENODO_HOME>/bin/regenerateFiles.bat/.sh in order to propagate the changes in the startup scripts.

To modify the JVM parameter graphically, open the Denodo Platform Control Center, go to Configure > JVM Options and append the "-javaagent" parameter to the existing value (make sure to remove backslashes \).

Finally, restart the Virtual DataPort server.

Starting and Launching Prometheus

  • To start Prometheus with the newly created configuration file, got to the Prometheus installation folder from the command line and run the following command:

prometheus --config.file=prometheus.yml --web.listen-address=:8082

  • Once the message "Server is ready to receive web requests." is returned, you can launch the Prometheus tool in a web browser using the URL "http://[HOSTNAME]:[HTTP_PORT]". For instance: http://localhost:8082   where 8082 is the default Prometheus port for this web interface.

        

To validate the status of the server, navigate to the Status -> Targets section and check if the status of the Denodo server is "Up". Also, you can explore more about the data collected by Prometheus under different sections of the tool.

Troubleshooting

Virtual DataPort server does not start after adding the javaagent parameter

If the javaagent parameter configuration is not correct then the Virtual DataPort server will not start.  

CAUSE: This is due to incorrect JVM configuration.

ACTION: For this, the appended JVM property needs to be reviewed.

Prometheus startup error

The Prometheus startup returns the error "parsing YAML file prometheus.yml: yaml: line 23: did not find expected '-' indicator".

        

CAUSE: This error indicates that the service expects an '-' indicator in the specific line. This usually occurs when the prometheus.yml file has unwanted spaces instead of the expected '-' indicator in the line.

ACTION: Removing extra spaces in the line will resolve the error.

Alert Manager

Prometheus includes an additional optional Alert Manager component. The AlertManager takes care of handling alerts, grouping them, deduplicating them, and routing them to the appropriate services like email, chat, and PagerDuty. It can also silence and inhibit certain alerts during planned events or downtime. For configuring alerts with Prometheus, you can use the How to Configure Prometheus AlertManager for Grafana Alerts and Prometheus Alerts documentation as reference.

References

Expert Trail: Monitoring

FIRST STEPS WITH PROMETHEUS

How to Use Prometheus Monitoring With Java to Gather Data

Questions

Ask a question
You must sign in to ask a question. If you do not have an account, you can register here

Featured content

DENODO TRAINING

Ready for more? Great! We offer a comprehensive set of training courses, taught by our technical instructors in small, private groups for getting a full, in-depth guided training in the usage of the Denodo Platform. Check out our training courses.

Training