Skip to main content
This integration guide provides step-by-step instructions for setting up and configuring Prometheus and Grafana to monitor advanced metrics from the Futurex VirtuCrypt cloud-based cryptographic services. It covers the overall architecture, prerequisites, and CryptoTunnel configuration through the VirtuCrypt Intelligence Portal (VIP). The topics also include installation and setup of Prometheus and Grafana, metric references, and visualization techniques to enable real-time monitoring, alerting, and dashboarding for enhanced system reliability and compliance.

Architecture

The overall architecture of this integration involves the following components:
  • Customer Grafana
  • Customer Prometheus
  • CryptoTunnel Guardian
  • Prometheus Proxy
  • Futurex Prometheus
The following sections contain steps for configuring each of these components.

VirtuCrypt CryptoTunnels

In the VirtuCrypt world, trust is a two-way street. The CryptoTunnel uses three components to establish trust, starting with a private key local to your device. When you generate the PKI, which creates the private key, the system signs the key under a VirtuCrypt CA tree, the second component. The VirtuCrypt CA tree that signed the key is the authority that establishes trust between the server and the client. After the CA tree signs the private key, it becomes a signed certificate, the final component. When you send the signed certificate through the CryptoTunnel, the server knows the certificate is signed under the VirtuCrypt CA tree and thus is authentic. That is how the server establishes trust in the application. To establish trust in the opposite direction, from the application to the server, the server sends the server-side signed certificate to the application. The application client then validates the server identity, establishing the trusted relationship with mutual authentication. After this handshake, you can encrypt all the data, satisfying PCS-DSS compliance requirements.

Prometheus

Prometheus is an open-source systems monitoring and alerting toolkit. Originally developed by SoundCloud in 2012, it is now a graduated project of the Cloud Native Computing Foundation, which is part of the Linux Foundation and also hosts projects like Kubernetes and Fluentd. The following list describes the main features of Prometheus:
  1. Multi-dimensional data model: Prometheus stores all data as time series, and each time series is uniquely identified by its metric name and a set of key-value pairs, also known as labels.
  2. PromQL (Prometheus Query Language): Prometheus provides a flexible query language to leverage its dimensional data model. PromQL allows you to select and aggregate time series data in real time.
  3. No reliance on distributed storage: The Prometheus main unit of reliability is the individual node, which is fully standalone and does not depend on network storage or other remote services.
  4. Collection happens through a pull model: Prometheus collects metrics from monitored targets by scraping HTTP endpoints on these targets. However, it also supports an intermediary gateway for scenarios where a pull model is unsuitable.
  5. Targets are discovered through service discovery or static configuration: Prometheus employs various service discovery mechanisms to identify scrape targets dynamically.
  6. **Multiple modes of graphing and dashboarding support:**While Prometheus provides a built-in expression browser for exploring metrics, it also seamlessly integrates with the graphical dashboard builder s such as Grafana for advanced visualization.
  7. Alerting functionality: Prometheus has a highly flexible alerting system. It enables you to define alerting rules for your metrics, and if those conditions are met, it sends alert notifications through its Alertmanager component.
Designed for reliability, Prometheus can be the system you use during an outage to diagnose problems quickly. Many organizations use it to monitor their IT infrastructure, from microservices, containers, and Kubernetes at scale to IoT devices. It also supports a robust ecosystem of exporters for extending its monitoring capabilities.

Grafana

Grafana is a popular open-source tool for visualizing large-scale measurement data. It provides a powerful and elegant way to create, explore, and share dashboards and data with your team and the world. Grafana commonly helps visualize time series data for infrastructure and application analytics, but you also use it in other domains, including industrial sensors, home automation, weather, and process control. It supports various data sources, including but not limited to Prometheus, InfluxDB, Elasticsearch, AWS CloudWatch, MySQL, and PostgreSQL. The following list describes some key features of Grafana:
  1. Dashboard and Visualizations: Grafana provides a feature-rich data-modeling interface for creating dashboards. These dashboards can contain a variety of visualization widgets or panels (such as graphs, tables, single stats, gauges, maps, and so on). You can easily switch the visualization type to compare different visual formats of the same data.
  2. Data Source Support: Grafana supports many databases and data sources, from time-series databases to relational databases and cloud services. You can create dashboards that pull data from multiple sources for a unified view.
  3. Alerting: Grafana provides robust alerting functionality. You can define alert rules for your data and get notified via several channels when an alert is triggered.
  4. Annotations: Grafana enables you to annotate graphs with rich events when something noteworthy happens. This function helps correlate the insights between different events and metrics.
  5. Dashboard Sharing: You can share a dashboard as a link, a snapshot, a PDF, or by embedding it in other web pages. This makes it easy to collaborate with your team.
  6. Teams and Authentication: Grafana supports user authentication, allowing you to control access to your dashboards. It also has a multi-tenant architecture, so you can set up and manage multiple independent organizations, each with its own users, dashboards, and data sources.
  7. Plugins: Grafana features a plug-in architecture and offers various plugins that enable you to extend and customize the Grafana capabilities.
Grafana is a powerful tool for building visual dashboards to observe metrics in real-time that various industries use widely.

VirtuCrypt monitoring metric reference

This section provides a reference for VirtuCrypt metrics and mappings.

V2 monitoring

The following table shows V2 monitoring metrics:
Metric NameTypeDescriptionLabels
vcctmax_connectionsGauge intCT Instance max allowed connectionstunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vcctconnected_clientsGauge intCT Instance current connected client counttunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vcctrun_statusGauge intCT Instance run status (“status active” → 1 or “status inactive” → 0)tunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str), status
vcctenabled_statusGauge intCT Instance enabled (“enabled” → 1 or “disabled” → 0)tunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vcctanonymous_statusGauge intCT Instance allows anonymous TLS (“allows anonymous” → 1 or “does not allow anonymous” → 0)tunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vctlscert_expiryGauge int (days)CT Instance number of days until certificate expirytunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vctlsversion_infoGauge floatCT Instance TLS version (e.g., 1.2, 1.1)tunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vcprobesuccessGauge intCT Instance port probe (“connection success” → 1 or “connection failed” → 0)tunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vcprobeduration_secondsGauge float (s)CT Instance number of seconds required for connection creationtunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str)
vcechoduration_secondsGauge float (s)CT Instance echo latency in secondstunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str), phase (str)
vcconnectionerror_counterGauge intCT Instance connection errorstunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str), error_type (str)
vctlshandshake_durationGauge float (s)CT Instance TLS Handshake Latencytunnel_id (str), company_name (str), host (str), port (int), api_type (str), port_header (str), guardian_host (str), error_type (str), discovery_error_code (str), discovery_error_description (str), outgoing_host (str), outgoing_port (str)

Metric usage

The following table shows metric usage metrics: Format: example_metric{label_1=0, label_2=us-east}
Metric NameTypeDescriptionLabels
ctinstanceport_statusGauge intCT Instance Port Status (open -> 1 or closed -> 0)company_name (str), host (str), region (str), tunnel_name (str)
ctinstanceapi_typeGauge intCT Instance API Type (refer to API Type Mappings table below)company_name (str), host (str), region (str), tunnel_name (str)
ctinstanceservice_enabledGauge intCT Instance Service Enabled (True -> 1, False -> 0)company_name (str), host (str), region (str), tunnel_name (str)
ctinstanceservicelatencymsGauge intCT Instance Service Latency in mscompany_name (str), host (str), region (str), tunnel_name (str)
ctinstanceaccepting_connectionsGauge intCT Instance Accepting Connections (True -> 1, False -> 0)company_name (str), host (str), region (str), tunnel_name (str)
ctinstancecertificate_validityGauge intCT Instance Certificate Validity (refer to Certificate Validity Mappings table below)company_name (str), host (str), region (str), tunnel_name (str)
ctinstanceclientsconnectedtotalGauge intTotal clients connected to CT instancecompany_name (str), host (str), region (str), `tunnel_name (str)

API-type mappings

The following table shows API-type mappings:
ValueMapping
0”None”
1”International”
2”Excrypt”
3”JSON”

Certificate validity mappings

The following table shows certificate validity mappings:
ValueMapping
1”Max Validity”
2”Under 90 Days”
3”Under 60 Days”
4”Under 30 Days”
5”Under 7 Days”
6”Expired”