[ English | English (United Kingdom) | español | Deutsch | Indonesia | русский | français ]
Пример Телеметрии с Gnocchi, Ceph и Redis¶
По умолчанию OpenStack-Ansible настраивает gnocchi на использование файла как хранилища данных. Когда у вас уже имеется предустановленный ceph, вы можете использовать его как бекенд для gnocchi. Данная документация предоставит инструкцию по использованию ceph, как хранилища данных для gnocchi.
Ceph, как хранилище метрик¶
gnocchi_storage_driver: ceph
Вам необходимо добавить несколько pip пакетов к вашей установке gnocchi:
gnocchi_pip_packages:
- cryptography
- gnocchiclient
# this is what we want:
# - "gnocchi[mysql,ceph,ceph_alternative_lib,redis,keystone]"
# but as there is no librados >=12.2 pip package we have to first install ceph without alternative support
# after adding the ceph repo to gnocchi container, python-rados>=12.2.0 is installed and linked automatically
# and gnocchi will automatically take up the features present in the used rados lib.
- "gnocchi[mysql,ceph,redis,keystone]"
- keystonemiddleware
- python-memcached
Но когда ваша установка вырастет, gnocchi может замедлять или блокировать ваш ceph. Вы можете столкнуться с медленными запросами или заблокированными PG в ceph. Так как это может иметь несколько причин, взгляните на прикрепленные презентации в секции Тесты производительности для Gnocchi . Они также содержат различные параметры, которые вы можете захотеть оптимизировать.
Redis как хранилище метрик¶
Одно из решений возможных проблем с производительностью это использовать хранилище для входящих метрик для gnocchi. Поддерживаемые системы хранилищ :
Файл (по умолчанию)
Ceph (рекомендован)
OpenStack Swift
Amazon S3
Redis
When your Swift API endpoint uses Ceph as a backend, the only one left for this setup is Redis.
Сначала произведите установку сервера/кластера redis, например при помощи данной ansible роли. Далее вам необходимо настроить Gnocchi с openStack-Ansible на использования кластера Redis в качестве хранилища для входящих метрик:
gnocchi_conf_overrides:
incoming:
driver: redis
redis_url: redis://{{ hostvars[groups['redis-master'][0]]['ansible_default_ipv4']['address'] }}:{{ hostvars[groups['redis-master'][0]]['redis_sentinel_port'] }}?sentinel=master01{% for host in groups['redis-slave'] %}&sentinel_fallback={{ hostvars[host]['ansible_default_ipv4']['address'] }}:{{ hostvars[host]['redis_sentinel_port'] }}{% endfor %}&db=0
Вам также потребуется установить дополнительные pip/системные пакеты для использования redis кластера:
gnocchi_distro_packages:
- apache2
- apache2-utils
- libapache2-mod-wsgi
- git
- build-essential
- python3-dev
- librados-dev
- libpq-dev
- python3-rados
# additional package for python redis client
- python3-redis
- libsystemd-dev
gnocchi_pip_packages:
- cryptography
- gnocchiclient
# this is what we want:
# - "gnocchi[mysql,ceph,ceph_alternative_lib,redis,keystone]"
# but as there is no librados >=12.2 pip package we have to first install ceph without alternative support
# after adding the ceph repo to gnocchi container, python-rados>=12.2.0 is installed and linked automatically
# and gnocchi will automatically take up the features present in the used rados lib.
- "gnocchi[mysql,ceph,redis,keystone]"
- keystonemiddleware
- python-memcached
- redis
- systemd-python
Примечание
Небольшое предупреждение: имя альтернативной библиотеки Ceph (ceph_alternative_lib) отличается для различных версий Gnocchi.
Zookeeper для координации¶
Когда вы установили Gnocchi на нескольких серверах для распределения работы, добавьте Zookeper для координации. Для установки Zookeeper, вы можете использовать эту ansible роль.
Создайте контейнеры для Zookeeper:
## conf.d
zookeeper_hosts:
{% for server in groups['control_nodes'] %}
{{ server }}:
ip: {{ hostvars[server]['ansible_facts']['default_ipv4']['address'] }}
{% endfor%}
## env.d
component_skel:
zookeeper_server:
belongs_to:
- zookeeper_all
container_skel:
zookeeper_container:
belongs_to:
- infra_containers
- shared-infra_containers
contains:
- zookeeper_server
properties:
service_name: zookeeper
Теперь вы можете установить Zookeeper как координирующий сервис для Gnocchi:
gnocchi_coordination_url: "zookeeper://{% for host in groups['zookeeper_all'] %}{{ hostvars[host]['container_address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}"
Вам также может потребоваться установить дополнительные пакеты:
gnocchi_pip_packages:
- cryptography
- gnocchiclient
# this is what we want:
# - "gnocchi[mysql,ceph,ceph_alternative_lib,redis,keystone]"
# but as there is no librados >=12.2 pip package we have to first install ceph without alternative support
# after adding the ceph repo to gnocchi container, python-rados>=12.2.0 is installed and linked automatically
# and gnocchi will automatically take up the features present in the used rados lib.
- "gnocchi[mysql,ceph,redis,keystone]"
- keystonemiddleware
- python-memcached
- redis
- systemd-python
# addiitional pip packages needed for zookeeper coordination backend
- tooz
- lz4
- kazoo
Тесты производительности для Gnocchi¶
Для лучшего понимания тонкой настройки стека Gnocchi, просмотрите данные презентации: