Observability

This document describes the Ansible Collection containing deployment and configuration of observability tools and the which might be used together with deployments managed by OpenStack-Ansible.

Installing the Collection

To install the collection, define it in your region deployment configuration file, located at /etc/openstack_deploy/user-collection-requirements.yml, as shown below:

collections:
  - name: osa_ops.observability
    type: git
    version: master
    source: https://opendev.org/openstack/openstack-ansible-ops#/observability

Warning

Please, make sure to also add all content from the collection requirements.yml to your user-collection-requirements.yml.

Then, run ./scripts/bootstrap-ansible.sh to install the collection.

Grafana

For Grafana deployment we are leveraging grafana.grafana <https://github.com/grafana/grafana-ansible-collection> collection. Within this repository we maintain only a playbook and a set of variables that will be used as defaults during deployment.

Deployment Process

  1. Copy the env.d content into /etc/openstack_deploy/env.d/grafana.yml:

    ---
    component_skel:
      grafana:
        belongs_to:
          - grafana_all
    
    container_skel:
      grafana_container:
        belongs_to:
          - grafana_containers
        contains:
          - grafana
    
    physical_skel:
      grafana_containers:
        belongs_to:
          - all_containers
      grafana_hosts:
        belongs_to:
          - hosts
    
  2. Define hosts where Grafana should be deployed by placing definition to /etc/openstack_deploy/conf.d/grafana.yml or your openstack_user_config.yml. Example:

    ---
    grafana_hosts:
      infra01:
        ip: 172.29.236.100
    
  3. Define the Grafana database and administrator passwords in /etc/openstack_deploy/user_secrets.yml before proceeding with the installation:

    grafana_db_password: <password>
    grafana_admin_password: <password>
    
  4. Define overrides if needed. Following defaults are being used:

    ---
    grafana_version: 13.1.0
    
    grafana_rhsm_repo: false
    grafana_rhsm_subscription: false
    
    grafana_tls: "{{ haproxy_ssl | default(false) }}"
    grafana_proto: "{{ grafana_tls | ternary('https', 'http') }}"
    
    grafana_ini:
      database:
        type: mysql
        host: "{{ grafana_db_address }}:3306"
        name: "{{ grafana_db_database }}"
        user: "{{ grafana_db_user }}"
        password: "{{ grafana_db_password }}"
      users:
        allow_sign_up: false
        allow_org_create: false
        auto_assign_org: true
        auto_assign_org_role: Viewer
        default_theme: dark
      security:
        admin_user: admin
        admin_password: "{{ grafana_admin_password }}"
      server:
        http_addr: "{{ management_address | default('127.0.0.1') }}"
        http_port: "{{ grafana_service_port }}"
        http_proto: "{{ grafana_proto }}"
        root_url: >-
          {{ grafana_proto }}://{{ grafana_public_bind | ternary(
              external_lb_vip_address, internal_lb_vip_address) }}:{{ grafana_ini_default.server.http_port }}/
    
    grafana_plugins: []
    
  5. Create LXC containers for Grafana deployment

    openstack-ansible openstack.osa.containers_lxc_create --limit grafana_all
    
  6. Deploy Grafana

    openstack-ansible openstack.osa_ops.grafana