OpenStack-Ansible Monasca-Agent

OpenStack-Ansible Monasca-Agent

Ansible role for deploying Monasca Monitoring-as-a-Service agent.

This role installs the following Systemd services:

  • monasca-agent

To clone or view the source code for this repository, visit the role repository for os_monasca-agent.

Default variables

## Verbosity Options
debug: False

# Set the package install state for distribution and pip packages
# Options are 'present' and 'latest'
monasca_agent_package_state: "latest"
monasca_agent_pip_package_state: "latest"

monasca_agent_developer_mode: false

monasca_agent_git_repo: "https://git.openstack.org/openstack/monasca-agent"
monasca_agent_git_install_branch: master

monasca_agent_developer_constraints:
  - "git+{{ monasca_agent_git_repo }}@{{ monasca_agent_git_install_branch }}#egg=monasca-agent"

# TODO(odyssey4me):
# This can be simplified once all the roles are using
# python_venv_build. We can then switch to using a
# set of constraints in pip.conf inside the venv,
# perhaps prepared by giving a giving a list of
# constraints to the role.
monasca_agent_pip_install_args: >-
  {{ monasca_agent_developer_mode | ternary(pip_install_developer_constraints | default('--constraint /opt/developer-pip-constraints.txt'), '') }}
  {{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''), '') }}
  {{ pip_install_options | default('') }}

# Name of the virtual env to deploy into
monasca_agent_venv_tag: "{{ venv_tag | default('untagged') }}"
monasca_agent_bin: "/openstack/venvs/monasca-agent-{{ monasca_agent_venv_tag }}/bin"
monasca_agent_etc_dir: "{{ monasca_agent_bin | dirname }}/etc/monasca/agent"

# venv_download, even when true, will use the fallback method of building the
# venv from scratch if the venv download fails.
monasca_agent_venv_download: "{{ not monasca_agent_developer_mode | bool }}"
monasca_agent_venv_download_url: http://127.0.0.1/venvs/untagged/ubuntu/monasca_agent.tgz

# System info
monasca_agent_system_user_name: monasca-agent
monasca_agent_system_group_name: monasca-agent
monasca_agent_system_shell: /bin/false
monasca_agent_system_comment: monasca-agent system user
monasca_agent_system_user_home: "/var/lib/{{ monasca_agent_system_user_name }}"

# Monasca-agent configuration
monasca_agent_user_name: monasca-agent
monasca_agent_project_name: admin
monasca_service_region: RegionOne

monasca_agent_check_frequency: 15
monasca_agent_log_level: WARN

monasca_agent_infra_processes_to_monitor:
  infra:
    - name: nginx
      group: repo_all
    - name: apt-cacher-ng
      group: repo_all
    - name: haproxy.pid
      group: haproxy_all
    - name: memcached
      group: memcached_all
    - name: mysqld
      group: galera_all
    - name: rabbitmq
      group: rabbitmq_all
    - name: epmd
      group: rabbitmq_all
    - name: storm.daemon.nimbus
      group: monasca_api
    - name: storm.daemon.supervisor
      group: monasca_api
    - name: storm.daemon.worker
      group: monasca_api
    - name: zookeeper
      group: monasca_zookeeper
    - name: kafka
      group: monasca_kafka
    - name: influxdb
      group: monasca_influxdb
    - name: grafana-server
      group: monasca_grafana
    - name: rsyslogd
      group: all
    - name: chronyd
      group: hosts
  ceph:
    - name: ceph
      group: ceph_all

monasca_agent_os_processes_to_monitor:
  alarming:
    - name: aodh-notifier
      group: aodh_alarm_notifier
    - name: aodh-evaluator
      group: aodh_alarm_evaluator
    - name: aodh-listener
  baremetal:
    - name: ironic-api
    - name: ironic-conductor
  container-infra:
    - name: magnum-api
      group: magnum
    - name: magnum-conductor
      group: magnum
  compute:
    - name: nova-api-metadata
    - name: nova-api-os-compute
    - name: nova-compute
    - name: nova-conductor
    - name: nova-consoleauth
      group: nova_console
    - name: nova-scheduler
    - name: "{% if nova_console_type is defined and nova_console_type == 'spice' %}nova-spicehtml5proxy{% else %}nova-novncproxy{% endif %}"
      group: nova_console
    - name: nova-placement-api
      group: nova_api_placement
  dashboard:
    - name: apache2
      group: horizon
  database:
    - name: trove-api
    - name: trove-conductor
    - name: trove-taskmanager
  data-processing:
    - name: sahara-api
    - name: sahara-engine
  dns:
    - name: designate-central
    - name: designate-worker
    - name: designate-producer
    - name: designate-mdns
    - name: designate-sink
    - name: designate-api
  identity:
    - name: keystone
      group: keystone
  image:
    - name: glance-api
    - name: glance-registry
  load-balancer:
    - name: octavia-api
      group: octavia-api
    - name: octavia-worker
      group: octavia-worker
    - name: octavia-housekeeping
      group: octavia-housekeeping
    - name: octavia-health-manager
      group: octavia-health-manager
  metric:
    - name: gnocchi-api
    - name: gnocchi-metricd
  metering:
    - name: ceilometer-agent-notification
    - name: ceilometer-polling
      group: ceilometer_agent_compute
  monitoring:
    - name: monasca-api
    - name: monasca-notification
    - name: monasca_persister
    - name: apache-storm
      group: monasca_api
  network:
    - name: neutron-dhcp-agent
    - name: "{% if neutron_plugin_type is defined and 'ovs' in neutron_plugin_type %}neutron-openvswitch-agent{% else %}neutron-linuxbridge-agent{% endif %}"
    - name: neutron-metadata-agent
    - name: neutron-metering-agent
    - name: neutron-l3-agent
    - name: neutron-bgp-dragent
      enabled: "{{ neutron_bgp is defined and neutron_bgp | bool }}"
    - name: neutron-vpnaas-agent
      group: neutron_l3_agent
      enabled: "{{ neutron_plugin_base is defined and 'vpnaas' in neutron_plugin_base }}"
    - name: neutron-server
  object-store:
    - name: swift-account-replicator
      group: swift_acc
    - name: swift-account-server
      group: swift_acc
    - name: swift-account-auditor
      group: swift_acc
    - name: swift-account-reaper
      group: swift_acc
    - name: swift-container-replicator
      group: swift_cont
    - name: swift-container-server
      group: swift_cont
    - name: swift-container-auditor
      group: swift_cont
    - name: swift-container-sync
      group: swift_cont
    - name: swift-container-updater
      group: swift_cont
    - name: swift-container-reconciler
      group: swift_cont
    - name: swift-object-replicator
      group: swift_obj
    - name: swift-object-server
      group: swift_obj
    - name: swift-object-auditor
      group: swift_obj
    - name: swift-object-updater
      group: swift_obj
    - name: swift-object-expirer
      group: swift_obj
    - name: swift-object-reconstructor
      group: swift_obj
    - name: swift-proxy-server
      group: swift_proxy
  orchestration:
    - name: heat-api
    - name: heat-api-cfn
    - name: heat-api-cloudwatch
    - name: heat-engine
  volume:
    - name: cinder-api
    - name: cinder-scheduler
    - name: cinder-volume
    - name: cinder-backup
      enabled: "{{ cinder_service_backup_program_enabled | default(False) }}"

haproxy_ssl: True
galera_monitoring_user: "monitoring"

monasca_agent_plugins_http_check_disabled:
  - repo_git
  - nova_console

monasca_agent_plugins:
  - name: "ceph"
    where: "ceph-mon"
  - name: "cpu"
    where: "all"
  - name: "disk"
    where: "all"
  - name: "load"
    where: "all"
  - name: "memory"
    where: "all"
  - name: "network"
    where: "all"
  - name: "process"
    where: "all"
  - name: "supervisord"
    where: "all"
  - name: "http_check"
    where: "shared-infra_hosts"
  - name: "host_alive"
    where: "shared-infra_hosts"
  - name: "mcache"
    where: "memcached"
  - name: "mysql"
    where: "galera_all"
  - name: "rabbitmq"
    where: "rabbitmq_all"
  - name: "haproxy"
    where: "haproxy_hosts"
  - name: "postfix"
    where: "monasca_api"
  - name: "zk"
    where: "monasca_zookeeper"
  - name: "kafka_consumer"
    where: "monasca_kafka"
  - name: "apache"
    where: "horizon_all"
  - name: "libvirt"
    where: "compute_hosts"
  - name: "crash"
    where: "hosts"
  - name: "ntp"
    where: "hosts"

monasca_agent_pip_packages:
  - keystoneauth1
  - libvirt-python
  - monasca-agent
  - monasca-common
  - oslo.utils
  - PyMySQl
  - python-monascaclient
  - python-neutronclient
  - python-novaclient

monasca_agent_services:
  monasca-agent:
    group: all
    service_name: monasca-agent
    service_init_bin: "{{ monasca_agent_bin}}/supervisord"
    service_init_options: "-c /etc/monasca/agent/supervisor.conf -n"
    init_config_overrides: "{{ monasca_agent_init_overrides }}"

monasca_agent_init_overrides: {}

# This variable is used by the repo_build process to determine
# which host group to check for members of before building the
# pip packages required by this role. The value is picked up
# by the py_pkgs lookup.
monasca_agent_role_project_group: all

monasca_agent_yaml_overrides: {}
monasca_agent_supervisor_conf_overrides: {}
monasca_agent_reconfigure_overrides: {}

Dependencies

This role needs pip >= 7.1 installed on the target host.

Example playbook

---
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Install monasca agent
  hosts: monasca-agent_all
  user: root
  roles:
    - { role: "os_monasca-agent", tags: [ "os-monasca-agent" ] }
  vars:
    monasca_agent_password: "secrete"

Tags

This role supports the following tags:

  • monasca-agent-install: used to install and upgrade monasca-agent;

  • monasca-agent-config: used to manage monasca-agent configuration;

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.