Howto Monitor SSL Certificates Expiration in Grafana (2024-05-30):

In today's digital landscape, ensuring the security of online communications is paramount, and SSL certificates play a crucial role in this process. Monitoring these certificates to prevent unexpected expirations is essential for maintaining uninterrupted service and trust. This HowTo guide provides a step-by-step approach to setting up monitoring for SSL certificates, ensuring you receive timely alerts before they expire. By utilizing powerful tools such as Blackbox Exporter, Alertmanager, Prometheus and Grafana, you can automate the notification process, allowing for proactive certificate management. This guide simplifies the setup process, making it accessible for both beginners and experienced professionals. With these instructions, you can enhance your security posture and avoid the risks associated with expired SSL certificates. How to receive alert messages from Grafana in your Matrix chat may also be interesting - I already covered that one here.


Grafana SSL Certificates Monitoring

This howto expects you to have an already working installation of Grafana and Prometheus running and will guide you through the process for setting up the SSL certificate monitoring on Debian/Ubuntu based systems and FreeBSD. Therefore, please take a look which steps are needed for you operating system because there might be some smaller differences.

Since the Blackbox exporter is already packaged in Debian, Ubuntu and FreeBSD, it can simply be installed by using the system's repository. Running the following code snippet on your system will install all needed things:

    # Debian or Ubuntu
    apt-get install prometheus-blackbox-exporter
    # FreeBSD
    pkg install blackbox_exporter

After installing the packages, the configuration can be adjusted. It only needs to configure two parts - the blackbox.yml and adjusting the scrape points in the prometheus.yml configuration file. We start with the blackbox configuration and add simply this content to the blackbox.yml file. This file is located in a different place, depending on your operating system.

* FreeBSD: /usr/local/etc/prometheus-blackbox-exporter/blackbox.yml
* Debian/Ubuntu: /etc/prometheus/blackbox.yaml

            prober: http
                    insecure_skip_verify: true

Afterwards, the scrape point can be defined in the prometheus.yml config file. Also this one is located in a different place, depending on your operating system.

* FreeBSD: /usr/local/etc/prometheus-blackbox-exporter/prometheus.yml
* Debian/Ubuntu: /etc/prometheus/prometheus.yaml

  - job_name: 'blackbox'
      metrics_path: /probe
        module: [http_2xx]
      - targets:
        - source_labels: [__address__]
          target_label: __param_target
        - source_labels: [__param_target]
          target_label: instance
        - target_label: __address__

The services can now be started and should also be started automatically at boot time. This will be started and enabled by running the following commands:

  systemctl enable prometheus-blackbox-exporter
  systemctl start prometheus-blackbox-exporter

  service prometheus_blackbox_exporter enable
  service prometheus_blackbox_exporter start

The last part is about the visualization in Grafana. With all the steps above we are already gathering all metrics but we also want to see them in a human readable way. Therefore, a nice dashboard is needed - luckily there is already a dashboard present. You can simply use the dashboard 13230 (certificate monitor) in your Grafana UI and simply select the Prometheus data source. After a few minutes you can see the metrics in your new dashboard.

Grafana and Prometheus setups are incredibly versatile, offering more than just monitoring, validating, and visualizing performance metrics. They can also serve as a robust monitoring system, comparable to software stacks like Zabbix or Icinga2. However, managing multiple components across different systems often results in increased complexity and additional effort. This can be time-consuming and resource-intensive. By consolidating your monitoring needs into a single system with Grafana and Prometheus, you can streamline operations and reduce maintenance overhead. This approach not only saves time but also simplifies the overall management of your monitoring infrastructure.