Мониторинг сетевой среды Zabbix. 2е изд.

Ричард Олупс

Первая публикация на английском языке: март 2010

Второе издание: август 2016

Ссылка на продукт: 1030816

Все права защищены. Никакая часть этой книги не может быть воспроизведена, сохранена в поисковой системе или передана в любой форме или любыми средствами без предварительного письменного разрешения издателя, за исключением случаев кратких цитат, встроенных в критические статьи и обзоры.

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1-78216-128-8

www.packtpub.com

2016-10-30

 Состав исполнителей

Второго издания на английском языке
Автор
Ричард Олупс
Рецензенты
Вемер Диджкерман
Фолькер Фрёнич
Адейл Хёрст
Рэймонд Кулпер
Джулиан Рекурт
Редактор выпуска
Сонали Вемекар
Редактор разработки содержания
Саманта Гонзалвес
Технический редактор
Вишаль К. Мевада
Литературный редактор
Мадхусудан Учил
Координатор проекта
Деванши Доши
Корректоры
Safis editing
Составители указателя
Мариаммаль Четтияр
Моника Аджмера Мехта
Графика
Диша Харья
Координатор производства
Нилеш Мохите
Изготовитель переплета
Нилеш Мохите

 Об авторе

Ричард Олупс .

.

 Благодарности

 Рецензент

 www.PacktPub.com

 Содержание

Предисловие
Что охватывает эта книга
Для кого эта книга
Что вам нужно для этой книги
Соглашения
Обратная связь с читателями
Поддержка пользователей
Загрузка кодов примеров
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Начиная работу с Zabbix
Первые шаги в мониторинге
Функции Zabbix и архитектура
Установка
Выбор версии и репозитория
Требования к оборудованию
Установка из пакетов
RHEL/CentOS
OpenSUSE
Установка из исходного кода
Сервер и агент
Загрузка исходного кода
Компиляция
Тире или подчёркивание?
Начальная настройка
Создание и наполнение базы данных
Запуск
При помощи systemd
Проверка состояния службы
Веб интерфейс
Предварительные требования и настройка среды
Использование мастера настройки веб интерфейса
Шаг 1 - добро пожаловать
Шаг 2 - предварительные требования PHP
Шаг 3 - доступ к базе данных
Шаг 4 - подробности сервера Zabbix
Шаг 5 - резюме
Шаг 6 - запись файла настроек
Шаг 7 - завершение мастера
Шаг 8 - выход
Выводы
Глава 2. Получение вашего первого уведомления
Исследование интерфейса
Профиль пользователя
Быстрый запуск мониторинга
Создание хоста
Создание элемента
Вод простых графиков
Создание триггеров
Настройка параметров электронной почты
Создание действия
Информационный поток в Zabbix
Давайте создадим некую нагрузку
Настройка базового элемента
Категории мониторинга
Доступность
Производительность
Безопасность
Управление
Эффективность
Типы элемента
Как можно выполнять мониторинг элементов
Применение глобального поиска
Выводы
Глава 3. Мониторинг при помощи агентов Zabbix
Применение агентов Zabbix
Пассивные элементы
Клонирование элементов
Элементы ручных запросов
Активные элементы
Активный агент со множеством серверов
Поддерживаемые элементы
Выбор между активным и пассивным элементами
Расписание элемента
Простые проверки
Настройка проверок ICMP
Связываем всё воедино
Квотирование ключевого параметра
Позиционные параметры для имён элементов
Использование массовых обновлений
Соответствие значений
Единицы измерений
Персональные интервалы
Гибкие интервалы
Индивидуальное расписание
Копирование элементов
Выводы
Глава 4. Мониторинг SNMP устройств
Применение Net-SNMP
Применение SNMPv3 в Net-SNMP
ID механизма
Добавление новых MIB
Опрос новых элементов SNMP в Zabbix
Транслирование OID SNMP
Динамическая индексация
Массовые запросы SNMP
Получение ловушек SNMP
Использование встроенного Perl
Фильтрация значений по получаемым данным
Фильтрация значений по хостам происхождения
Отладка
Обработка временного файла
Транслятор ловушки SNMP
Использование персонального сценария
Фильтрация ловушек
Индивидуальное соответствие
Просмотр базы данных
Выводы
Глава 5. Управление хостами, пользователями и полномочиями
Хосты и группы хостов
Инвентаризация хостов
Редактирование данных инвентаризации вручную
Автоматическое заполнение данных инвентаризации
Техническое обслуживание хостов
Создание периодов техосмотра
Опции периодов техосмотра
Особый техосмотр
Пользоыватели, группы пользователей и полномочия
Методы аутентификации
Создание пользователя
Создание группы пользователей
Полномочия и сопровождение
Выводы
Глава 6. Определение проблем с помощью триггеров
Триггеры
Взаимосвязь триггер-и-элемент
Зависимости триггеров
Построение выражений триггеров
Предотвращение вибрации триггеров
Проверка на утрату данных
Триггеры таймаута
Триггеры с адаптивными порогами
Триггеры с ограниченным периодом
Относительный порог или сдвиг во времени
Проверка системного времени
Читаемые человеком константы
Индивидуализация отображения триггера
Подробности события
Генерация события и гистерезис
Выводы
Глава 7. Действие по событиям мониторинга
Действия
Ограничение условий при отправке сигналов тревоги
Условия дополнительного действия
Зависимости и действия
Ограничения носителей для пользователей
Отправка уведомлений
Использование макросов
Отправка восстанавливающих сообщений
Эскалация вещей
Аналогия побега
Применение сценариев в качестве носителя
Интеграция с системами управления проблемами
Bugzilla
Computer Associates Unicenter Service Desk Manager
Atlassian JIRA
Удалённые команды
Глобальные сценарии
Настройка глобальных сценариев
Повторное использование глобальных сценариев в действиях
Выводы
Глава 8. Упрощение сложных конфигураций с помощью шаблонов
Определение кандидатов в шаблоны
Создание шаблона
Присоединение шаблонов к хосту
Обработка стандартных шаблонов
Изменение настройки в шаблоне
Использование макроса
Пользовательские макросы
Применение множественных шаблонов
Отсоединение шаблонов от хостов
Применение массивных обновлений
Встраиваемые шаблоны
Выводы
Глава 9. Визуализация данных при помощи графиков и карт
Что визуализировать?
Индивидуальные элементы
Графики
Простые графики
Особенные графики
Индивидуальные графики
Карты
Создание карт
Связывание элементов карт
Совместное использование карт
Выводы
Глава 10. Визуализация данных экранами и слайдшоу
Экраны
Динамичные экраны
Дополнительные элементы экрана
Временные экраны
Слайдшоу
Отображение данных на больших мониторах
Вызовы
Не-интерактивные мониторы
Перегрузка информацией
Автоматическое отображение определённых разделов
Выводы
Глава 11. Визуализация данных экранами и слайдшоу
Экраны
Динамичные экраны
Выводы
Глава 11. Углублённый мониторинг элементов
Мониторинг файла журнала
Мониторинг отдельного файла
Фильтрация определённых строк
Мониторинг циклических файлов
Выдача сигнала тревоги по данным журнала
Выделение части строки
Разбор временных штампов
Просмотр данных журнала
Повторное использование данных на сервере
Вычисляемые элементы
Квотирование в вычисляемых элементах
Ссылочные элементы со множества хостов
Агрегируемые элементы
Агрегирование по множеству групп
Параметры пользователя
Простое получение их для работы
Опрос данных, которые не поддерживает агент Zabbix
Гибкие параметры пользователя
Уровень подробностей мониторинга
Ловушка окружения
Вещи которые стоит запомнить о параметрах пользователя
Обёртывающие сценарии
Когда не применять параметры пользователя
Внешние проверки
Поиск времени окончания сертификата
Определение действенности сертификата
Отправка в данных
Использование файла настройки демона агента
Отправка значений из файла
Отправка значений временного штампа
Элементы SSH и Telnet
Элементы SSH
Элементы Telnet
Индивидуальные модули
Выводы
Глава 12. Автоматизация настройки
Обнаружение низкого уровня
Обнаружение сетевого интерфейса
Автоматическое создание вычисляемых элементов
Автоматическое создание триггеров
Автоматическое создание графиков
Фильтрация результатов обнаружения
Обнаружение файловой системы
Введение в формат JSON LLD
Включение обнаруженных графиков в экраны
Индивидуальные пороговые значения с контекстом макросов пользователя
Обнаружение ЦПУ
Обнаружение SNMP
Создание индивидуальных правил LLD
Повторная реализация обнаружения ЦПУ
Исследование баз данных MySQL
Глобальные регулярные выражения
Тестирование глобальных regexps
Применение в стандартных шаблонах
Обнаружение сетей
Настройка правил обнаружения
Просмотр результатов
Реакция на результаты обнаружения
Критерий уникальности
Автоматическая регистрация активного агента
Метаданные автоматической регистрации
Выводы
Глава 13. Мониторинг веб- страниц
Мониторинг простой веб- страницы
Создания сценария веб- мониторинга
Прочие сценарии и свойства шага
Изменение веб- сценария
Регистрация в интерфейсе Zabbix
Шаг 1: проверка первой страницы
Шаг 2: регистрация
Шаг 3: проверка регистрации
Шаг 4: выход
Шаг 5: проверка выхода
Опции аутентификации
Использование элементов агента
Получение страницы
Проверка производительности страницы
Извлечение содержимого веб- страниц
Выводы
Глава 14. Мониторинг Windows
Установка агента Zabbix для Windows
Опрос счётчиков производительности
Применение численных ссылок на счётчики производительности
Применение псевдонимов для счётчиков производительности
Усреднение счётчиков производительности по времени
Опрос WMI
Мониторинг служб Windows
Проверка автоматических служб
Обнаружение служб
Мониторинг журнала событий Windows
Выводы
Глава 15. Мониторинг бизнес- служб верхнего уровня
Решения на дереве служб
Настройка ИТ служб
Создание тестовых элементов и триггеров
Настройка ИТ служб
Отправка в данные
Просмотр отчётов
Определение времени запуска и останова
Выводы
Глава 16. Мониторинг устройств IPMI
Получение устройства IPMI
Подготовка к мониторингу IPMI
Настройка элементов IPMI
Создание элемента IPMI
Мониторинг дискретных датчиков
Применение побитовой функции триггера
Выводы
Глава 17. Мониторинг приложений Java
Настройка шлюза Zabbix Java
Мониторинг элементов JMX
Опрос элементов JMX вручную
Что наблюдать?
Выводы
Глава 18. Мониторинг VMware
Подготовка к мониторингу VMware
Автометическое обнаружение
Доступные измерения
Базовые операции
Настройка LLD VMware
Прототипы хоста
Суммирование взаимодействия стандартных шаблонов
Подробности работы и настройки сервера
Выводы
Глава 19. Применение прокси для мониторинга удалённых месторасположений
Активный прокси, пассивный прокси
Настройка активного прокси
Мониторинг хоста через прокси
Преимущества прокси
Ограничения прокси
Работа прокси
Прокси и мониторинг доступности
Метод 1 - Последний доступ к элементу
Метод 2 - Внутренний буфер элементов прокси
Метод 3 - Индивидуальный буфер элементов прокси
Настройка пассивного прокси
Тонкая настройка прокси
Выводы
Глава 20. Кодирование обмена Zabbix
Обзор
Библиотеки сервера
Кодирование с предварительным обменом ключами
Кодирование на основе сертификата
Наша собственная авторизация
Настройка Zabbix с сертификатами
Обсуждение и дальнейшее чтение
Выводы
Глава 21. Теснее работая с данными
Получение исходных данных
Выделение из интерфейса
Опрос базы данных
Использование данных на удалённой площадке
Погружаясь глубже в базу данных
Управление пользователями
Изменение существующих данных
Поиск when
When на языке компьютера
Поиск what
Выполнение изменения
Применение XML для импорта/ экспорта настроек
Экспорт начальной настройки
Изменение настройки
Формат экспорта XML
Сценарии вокруг экспорта
Импорт изменённой настройки
Генерация хостов
Импортируемые образы
Начинаем работать с API Zabbix
Простые операции
Получение версии API
Регистрация
Разрешение и запрет хостов
Создание хоста
Удаление хоста
Создание карты значений
Получение истории и трендов
Проблемы с API Zabbix
Применение библиотек API
Дальнейшее чтение
Выводы
Глава 22. Сопровождение Zabbix
Внутренний мониторинг
Новые значения в секунду
Время включения Zabbix
Применение кэширования
Частота занятости внутреннего процесса
Неподдерживаемые элементы и прочие проблемы
Подсчёт неподдерживаемых элементов
Обзор неподдерживаемых элементов
Внутренние события и неизвестные триггеры
Резервирование предметов
Резервирование базы данных
Восстановление базы данных
Разделение настройки и резервирования данных
Обновление Zabbix
Создание политики версий
Поддержка длительного периода и краткосрочная поддержка
Процесс обновления
Обновление младшей версии
Обновление интерфейса
Обновление версии главного уровня
Версии базы данных
Получение данных в процессе обновления
Файл настройки интерфейса
Совместимость
Обсуждение производительности
Кто это сделал?
Обнаружение параметров файла настройки
Параметры демона агента Zabbix и общие параметры
Параметры демона сервера Zabbix
Выводы
Дополнение A. Поиск неисправностей
Глава введение
Общие проблемы
Установка
Компиляция
Интерфейс
Сервер
Блокировка интерфейса
Мониторинг
Общий мониторинг
Мониторинг при помощи агента Zabbix
Устройства SNMP
Мониторинг IPMI
Проверки ICMP
Проблемы с простыми проверками
Проблемы с zabbix_sender и элементами ловушек
Общие проблемы
Триггеры
Действия
Обнаружения и авторегистрация
Обнаружение неисправностей Zabbix
Формат файла журнала Zabbix
Перезагрузка кэша настроек
Контролирование исполняющихся демонов
Состояние времени исполнения процесса
Дальнейшая отладка
Дополнение B. Стать частью сообщества
Сообщество и поддержка
Чат в IRC
Использование wiki Zabbix
Использование форума Zabbix
Заполнение проблем в треккере
Встречи с персоналом
Конференция Zabbix
Локальные сообщества
Отслеживая развитие
Получение исходных кодов
Ежедневные моментальные снимки
Доступ к системе отслеживания версий
Перевод Zabbix
Опции коммерческой поддержки
Указатель

 Предисловие

 Что охватывает эта книга

Глава 1. Начиная работу с Zabbix .

Глава 2. Получение вашего первого уведомления .

Глава 3. Мониторинг при помощи агентов Zabbix .

Глава 4. Мониторинг SNMP устройств .

Глава 5. Управление хостами, пользователями и полномочиями .

Глава 6. Определение проблем с помощью триггеров .

Глава 7. Действие по событиям мониторинга .

Глава 8. Упрощение сложных конфигураций с помощью шаблонов .

Глава 9. Визуализация данных при помощи графиков и карт .

Глава 10. Визуализация данных экранами и слайдшоу .

Глава 11. Углублённый мониторинг элементов .

Глава 12. Автоматизация настройки .

Глава 13. Мониторинг веб- страниц .

Глава 14. Мониторинг Windows .

Глава 15. Мониторинг бизнес- служб верхнего уровня .

Глава 16. Мониторинг устройств IPMI .

Глава 17. Мониторинг приложений Java .

Глава 18. Мониторинг VMware .

Глава 19. Применение прокси для мониторинга удалённых месторасположений .

Глава 20. Кодирование обмена Zabbix .

Глава 21. Теснее работая с данными .

Глава 22. Сопровождение Zabbix .

Дополнение A. Поиск неисправностей .

Дополнение B. Стать частью сообщества .

 Для кого эта книга

Так как эта книга озаглавлена Mastering Zabbix, Second Edition, вы можете не найти в ней некоторых подробностей, пошаговых руководств (хорошо, за исключением установок, которые будут эскизно приведены, но с некоторыми полезными советами) по основам использования Zabbix. Хотя вы и можете найти массу подробной информации об установке вашего сервера или настройке элементов, спусковых устройств, а также экранов, мы ожидаем от вас наличие, по крайней мере, базовых рабочих знаний о том как это всё работает с тем, чтобы вы могли сосредоточиться на более подвинутых методах для тех же самых предметов. Даже при этом будет возможно получить пользу от содержимого данной книги, несмотря на то, что вы ранее пока не сталкиавлись с Zabbix, однако в этом случае вам настоятельно рекомендуется пользоваться официальной документацией Zabbix, которую вы можете найти по ссылке https://www.zabbix.com/documentation/2.4/manual, чтобы восполнить все возможные пробелы в ваших знаниях. {Прим. пер.: на момент перевода доступнадокументация по версии 3.2: Zabbix Documentation 3.2.}

 Что вам нужно для этой книги

Перед тем как углубиться в сборку Zabbix важно знать, что предлагаемая к рассмотрению сборка была протестирована в больших промышленных средах (осуществлялся мониторинг более 1800 хостов, более чем 89500 отслеживаемых элементов и более чем 30000 спусковых механизмов - триггеров) и что они могут рассматриваться как эффективные для большинства больших и очень больших сред. Предлагаемые в данной книге решения высокой доступности были всемерно протестированы, причём не во время упражнения по аварийному восстановлению, а во время реально произошедшей катастрофы (сетевые кабели случайно были перерублены экскаватором).

В этой книге важно понимать что большинство наших выборов было осуществлено на практической основе, а не движимые душевным порывом. Один из основных сделанных выборов заключается в применении PostgreSQL в качестве официальной СУБД Zabbix. Мы натолкнулись на PostgreSQL в качестве СУБД в основном по причине её зрелости и предлагаемых ею готовых к промышленному применению функций:

  • В архитектуре заложена возможность горячего резервного копирования

  • Атомичность, согласованность, изолированность и долговечность - короче говоря, она полностью совместима с требованиями ACID

  • Большое количество различных собственных конфигураций резервирования (горячее резервирование, синхронные репликации и тому подобное)

  • Эффективное разбиение

База данных Zabbix является критически важным компонентом, в особенности если вам необходимо сохранение доступных и гарантирующих постоянную производительность исторических данных день за днём по мере роста вашей базы данных.

В данной книге мы приняли ряд допущений: используемая в наших примерах пакетная система это yum, а следовательно вашим дистрибутивом очевидно является Red Hat Enterprise Linux. {Прим. пер.: CentOS, Scientific и т.п.} В любом случае, за исключением подробностей, таких как имена пакетов и менеджеры пакетов, вся данная книга верна для всех дистрибутмвов Linux. Более того, предлагаемые архитектуры и их реализации не привязаны к определённому дистрибутиву. Мы не применяем никакую специфичную для Red Hat кластерную систему и не делаем никакого выбора, который вы не сможете повторить в своём любимом дистрибутиве Linux.

При чтении данной книги вы найдёте различные части программного обеспечения с открытым исходным кодом, однако было бы лучше, если бы из всех них были бы знакомы со следующими:

Эта книга также сосредотачивается на системных администраторах, которые имеют некоторые навыки программирования. Мы предлагаем различные разработки для реализации фрагментов кода. При помощи всех предлагаемых примерах, причём все они хорошо документированы, вы должны будете иметь возможность реализовать ваши собственные встраиваемые модули или внешнее программное обеспечение которое будет полностью интегрировано с Zabbix. Предлагаемые фрагменты кода представлены на двух различных и широко распространённых языках: Java и Python. Это покрывает большинство предпочтений современных программистов и отображает, раз уж вы знаете как реализовать такой протокол Zabbix, как просто он переключается между ними.

Zabbix является чем-то большим чем просто часть программного обеспечения мониторинга; он является решением мониторинга с открытым исходным кодом, которое можно трактовать так, как вы пожелаете, а данная книга осведомит вас обо всех за и против всех возможных решений.

Итак, теперь время погрузиться в пучину Zabbix!

 Соглашения

В данной книге вы найдёте ряд текстовых стилей, которые делают разницу между различными видами информации. Здесь мы приводим некоторые примеры этих стилей и объяснение их назначения.

Кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter представлены следующим образом: "Большинство этих параметров содержатся внутри файла php.ini".

Блок кода устанавливается следующим образом:


zabbixsrv=zabbixsvr
[ -e /etc/sysconfig/$syscf ] && . /etc/sysconfig/$syscf

start()
{
    echo -n $"Starting Zabbix server: "
 	   

Когда вы хотите обратить внимание на определённую часть в блоке кода, относящиеся к этому строки или элементы устанавливаются в жирный шрифт:


; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
post_max_size = 16M
 	   

Любой ввод командной строки или её вывод записываются следующим образом:


# yum list postgres*
 	   

Новые термины и важные слова отображаются жирным шрифтом. Слова, которые вы видите на экране, например, в меню или блоках диалогов появляются в тексте следующим образом: "Кликнув по кнопке Next вы переместитесь на следующий экран".

[Замечание]Замечание

Предостережения или важные замечания появляются в блоках подобных этому.

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Обратная связь с читателями

Обращения наших читателей всегда приветствуются. Дайте нам знать что вы думаете об этой книге - что вам нравится или не нравится. Обратная связь с читателями важна нам, так как помогает нам разрабатывать издания, от которых вы на самом деле получите максимальную пользу.

Для отправки обычного отклика просто пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения.

Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу www.packtpub.com/authors.

 Поддержка пользователей

Теперь, когда вы являетесь гордым владельцем книги Packt, у нас есть целый ряд моментов для помощи вам в получении максимальной выгоды от вашей покупки.

 Загрузка кодов примеров

Вы можете загрузить файлы примеров кода для всех книг Packt, которые вы приобрели в своей учётной записи на сайте http://www.packtpub.com. Если вы приобрели эту книгу где-то ещё, вы можете посетить http://www.packtpub.com/support и зарегистрироваться для получения указанных файлов по электронной почте непосредственно для вас.

 Опечатки

Хотя мы и предприняли все меры чтобы обеспечить точность нашего содержимого, ошибки всё- таки возможны. Если вы обнаружили ошибку в нашей книге - возможно, ошибку в тексте или в коде - мы будем признательны если вы сообщите об этом нам. Сделав это, вы можете предостеречь остальных читателей от разочарования и помочь нам улучшить последующие версии данной книги. Если вы обнаружили ошибку, пожалуйста, сообщите о ней посетив www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки. Когда ваша ошибка будет проверена, вы получите уведомление и ошибка будет выложена на наш веб- сайт или добавлена в какой- нибудь перечень существующих ошибок с заголовком раздела Errata.

Для просмотра ранее выявленных ошибок посетите www.packtpub.com/books/content/support и введите название нужной книги в поле поиска. Необходимая информация появится в разделе Errata.

 Незаконное тиражирование

Пиратство, защищённых авторским правом материалов в Интернете является постоянной проблемой во всех средствах массовой информации. В Packt мы подходим к защите наших авторских прав и лицензий очень серьёзно. Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}

Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав.

Мы выражаем вам признательность в защите наших авторов и нашей возможности доносить до вас имеющего ценность содержимого.

 Вопросы

Если у вас есть проблемы по любым сторонам данной книги, вы можете контактировать с нами по адресу questions@packtpub.com и мы предпримем все меры в отношении ваших проблем.