Эта статья построена на основе выступления Джеймса Повенски и Андреа Васко на тему «Когда Couchbase встречает Splunk, платформу для анализа данных в режиме реального времени на основе искусственного интеллекта».

Стена замешательства

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

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

Многомерное масштабирование (MDS) — одна из моих любимых функций Couchbase, но она слабо связана с изоляцией рабочих нагрузок индексирования, запросов и аналитики: я провел несколько лет, изучая данные в реляционных базах данных в поисках шаблонов и корреляций. в больших наборах данных, и много раз я — само собой разумеется — выполнял сложные запросы, которые вызывали трения с администраторами баз данных о блокировках, снижении производительности и так далее.

Наверное, я сильно ударился о так называемую Стена путаницы. Эта проблема была (и есть) настолько дорога мне, что в 2013 году мы написали статью о демистификации характеристик рабочей нагрузки Oracle.

Подготовка к сцене: использование Continuous Intelligence в ACME

В 2019 году компания Gartner определила Непрерывный анализ как 10 лучших тенденций в области аналитики, оценив, что к 2022 году более 50% всех бизнес-инициатив будут требовать непрерывного анализа, используя потоковые данные для улучшения принятия решений в режиме реального времени. изготовление.

В этой статье — и серии — мы познакомим вас с практическим способом начать работу с Continuous Intelligence с Couchbase, стремясь изменить ваш бизнес к цифровому преобразованию без существенного влияния на ваши повседневные операции; мы представим себя инженером по надежности сайта (SRE) в ACME Inc., которому поручено реализовать непрерывную аналитику для интернет-магазина ACME.

Мы предполагаем, что вы уже знакомы с Couchbase Analytics. Как показано на рисунке ниже, Couchbase Analytics позволяет создавать в режиме реального времени теневые копии данных, хранящихся в KV Engine, в архитектуре Massive Parallel Processing (MPP), которые можно использовать для запроса теневых данных с помощью SQL -подобный язык (SQL++) и предоставлять большие, предварительно агрегированные наборы данных сторонним решениям для дальнейшей обработки.

Couchbase предоставляет базовую технологию, необходимую для начала пути ACME к Continuous Intelligence: гибкость NoSQL, встроенная в платформу, способную выполнять операции менее миллисекунды, изоляцию рабочей нагрузки, многомерную линейную масштабируемость и интеграцию со сторонними решениями, и все это в одном. элегантная платформа, охватывающая от мультиоблака до периферии.

Как SRE в ACME, мы можем легко понять, как Couchbase может предоставить корпоративную плоскость данных мирового класса для интернет-магазина следующего поколения. А как насчет бизнес-логики?

Ну, это зависит от того, какая бизнес-логика требуется от нашего бизнеса: Couchbase из коробки предоставляет полный набор возможностей, необходимых либо для программного извлечения отдельных документов, либо для выполнения специальных/априорных запросов ( запрашивать или анализировать). Но для интернет-магазина нового поколения ACME мы, возможно, захотим усилить синергию нашей игры и разведки со многими корпоративными решениями на сегодняшнем рынке, которые предоставляют полный арсенал аналитики — исследование данных, наблюдаемость, навигация по данным, информационные панели в реальном времени, машинное обучение, и ИИ.

Само собой разумеется, Couchbase предназначен для интеграции с ними, и в сегодняшнем примере мы будем использовать Couchbase Analytics REST API для интеграции с Splunk.

Почему Спланк? Вот несколько веских причин, не вдаваясь в подробности:

  • Уровень принятия и зрелости: Splunk является лидером рынка в области ITOM, поэтому есть вероятность, что ваша организация уже обладает навыками и средой для экспериментов.
  • Локальная пробная версия: если у вас ограниченный бюджет, вы можете установить Splunk локально и использовать его бесплатно в течение 60-дневного пробного периода.
  • Простота использования: Splunk Язык обработки поиска (SPL) довольно прост в освоении, но обладает мощными возможностями, и для начала работы доступно множество ресурсов.
  • Приложения Splunk: Splunk поставляется с динамичной экосистемой приложений, устанавливаемых одним щелчком мыши, включая Инструментарий машинного обучения, способный разблокировать модели машинного обучения без необходимости кодирования — и идеальный инструмент для новичков и тех, кто не совсем знаком с такими библиотеками, как Pytorch, Pandas, TensorFlow.

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

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

Что ж, похоже, у нас есть план — пора резине отправляться в путь! В следующих параграфах мы собираемся:

  • Создайте и импортируйте в Couchbase серию документов JSON, отражающих транзакции, выполненные в интернет-магазине;
  • Реплицируйте эту информацию в набор данных Analytics.
  • Используйте SQL++ для выполнения запросов к этому набору данных и собирайте результаты в Splunk с помощью API-интерфейсов Analytics REST.
  • Используйте Splunk для создания информационных панелей для демонстрации операционных данных и прогнозов машинного обучения в режиме реального времени[1]

Берите чашку чая и готовьтесь: мы взлетаем. Пойдем!

6 шагов к непрерывному анализу

Шаг № 1: Генерация данных

Чтобы обеспечить соблюдение правил в отношении данных, мы будем использовать онлайн-инструмент под названием Генератор JSON[2] для создания документов JSON, представляющих транзакции в интернет-магазине ACME; ниже, как мы настроили параметры генерации [3]:

[
'{{repeat(120 ,2000 )}}',
{
_id: 'order_{{objectId()}}',
orderId:' {{integer(90000,1256748321)}}',
транзакция:'{{случайная("отклонена","подтверждена")}}',
name: '{{firstName()}} { {фамилия()}}',
пол: '{{gender()}}',
электронная почта: '{{email()}}',
страна: '{{страна ()}}',
город: '{{city()}}',
телефон: '{{phone()}}',
ts: Date.now()+ 600000,
product: [
'{{repeat(1,9)}}',
'product: {{random("яблоки", "чайные пакетики", "масло", «молоко», «капуста», «вино», «печенье», «гамбургеры», «сладкий картофель», «коричневый рис», «ячмень») }}'
]
}
]

Как только вы нажмете «Создать», инструмент ответит переменным набором документов JSON (от 120 до 2000), как показано на снимке экрана ниже.

У нас есть базовый уровень, пора переходить на Couchbase!

Шаг № 2: Импорт данных в Couchbase

Предположим, что у нас уже есть кластер Couchbase, на котором запущены как минимум данные и служба аналитики.

В качестве первого шага мы создадим корзину с именем couchmart (не стесняйтесь называть ее по своему усмотрению), в которую будут загружены документы JSON.

Затем мы загрузим файлы JSON в кластер Couchbase; выберите узел, на котором запущена служба данных, и импортируйте файлы в папку /tmp (вы можете использовать любую папку по своему усмотрению). Если у вас есть SCP, запустите эту команду с терминала вашего локального компьютера:

Scp ‹jsonfile› ‹couchbaseuser›@‹couchbaseserver›:/tmp

Просто не забудьте установить ‹jsonfile›, ‹couchbaseuser› и ‹couchbaseserver› в соответствии с вашей средой.

Наконец, мы импортируем файлы JSON в корзину Couchmart с помощью команды cbimport (дополнительная информация здесь); сначала войдите в узел данных, в который вы ранее загрузили файлы через SSH:

ssh ‹couchbaseuser›@‹couchbaseserver›

После успешного входа в систему выполните команду cbimport, как описано ниже, убедившись, что поля между ‹› установлены в соответствии с вашей средой:

$CBHOME/bin/cbimport json -c cockbase://localhost -b ‹bucketname› -u ‹пользователь› -p ‹пароль› -f список -d файл:///tmp/‹jsonfile› -g % _id% -t 4

Импорт должен быть завершен в мгновение ока, так как Couchbase может обрабатывать на порядки больше. Вы должны подтвердить, что в нашей корзине теперь есть некоторые документы из пользовательского интерфейса администратора Couchbase в разделе корзин — см. снимок экрана ниже.

У нас есть данные; пришло время для аналитики!

Шаг 3. Создайте и протестируйте наборы данных Analytics.

В качестве первого шага мы создадим набор данных с именем acmeorders (угадайте, что? Вы можете назвать его как хотите!) как теневую копию корзины кушетки; этот набор данных будет содержать всю информацию, предоставляемую Splunk ниже по течению.

Если вы не знакомы с созданием наборов данных, рекомендуем ознакомиться с документацией и этим руководством. Две команды SQL++ — это все, что нужно для создания полной копии корзины Couchmart:

СОЗДАТЬ НАБОР ДАННЫХ acmeorders НА Couchmart;

с последующим:

ПОДКЛЮЧИТЬ ССЫЛКУ Локально;

Это не может быть проще, чем это!

Поскольку мы собираемся использовать остальные API, сейчас самое время протестировать их с помощью удобной команды curl ниже; как всегда, дважды проверьте значения в пределах ‹› и настроенный порт для службы аналитики:

curl -v -u ‹user›:‹password› — data-urlencode «statement=select * from acmeorders;» http://‹couchbaseserver›:8095/analytics/service

Если эта команда работает, Couchbase готов к работе. Прежде чем мы перейдем к Splunk, помните следующее:

  • Служба Couchbase Analytics использует массивную архитектуру параллельной обработки (MPP), которая линейно масштабируется; это означает, что если вам нужно удвоить производительность, просто удвойте количество узлов.
  • В версии 6.6 мы добавили в службу Analytics множество замечательных функций; сделайте обязательно ознакомьтесь с ними!

Хорошо, Couchbase прикрывает нас, время для оперативной информации!

Шаг № 4: Установка и настройка Splunk

В оставшейся части этого документа мы будем предполагать, что Splunk работает в Linux, поэтому пути могут измениться, если вы используете Mac или Windows.

Если у вас нет доступного экземпляра Splunk, вы можете установить локальный экземпляр, воспользовавшись 60-дневной бесплатной пробной версией. Совершенно новая локальная установка займет у вас не более 10 минут.

Обязательно установите Splunk Machine Learning Toolkit; если вам нужно узнать больше о том, как установить приложение Splunk, нажмите здесь — это очень просто!

Чтобы эффективно настроить интеграцию с Couchbase (или любым другим источником), крайне важно настроить Splunk для правильной интерпретации выходных данных вызова REST от Couchbase и сохранения информации в формате, эффективном для SPL. Мы добьемся этого, создав новый тип источника: короче говоря, тип источника определяет, как Splunk анализирует входные данные; мы не будем углубляться в то, как создать исходный тип, но предоставим работоспособное решение.

Подключитесь через SSH к вашему серверу Splunk, а затем перейдите к:

Cd $SPLUNKBASE/etc/system/local

Создайте новый файл с именем props.conf следующим образом:

[кушетка]

SEDCMD-remove_header = s/(.+\”results\”:\s\[\s)//g
SEDCMD-remove_trailing_commas = s/\},/}/g
SEDCMD -remove_footer = s/(\],\s\”plans\”.+)//g
TIME_PREFIX = \” ts\”:\s+
category = Structure
disabled = false
pulldown_type = 1
BREAK_ONLY_BEFORE_DATE =
DATETIME_CONFIG =
LINE_BREAKER = (,)\s\{
NO_BINARY_CHECK = true
SHOULD_LINEMERGE = false

После сохранения перезапустите Splunk. Теперь вы сможете использовать новый тип источника под названием couchbase; просто просмотрите Настройки > Типы источников, чтобы перепроверить, все ли выглядит хорошо:

Пришло время создать новый индекс событий Splunk, который мы будем использовать для захвата транзакций магазина ACME по запросу из Couchbase; в Splunk перейдите в раздел Настройки > Индексы и нажмите Создать, затем настройте новый индекс следующим образом:

Обратите внимание, что мы назвали индекс acmeorders, и хотя вы можете назвать его как хотите, мы настоятельно рекомендуем вам сохранить то же имя, чтобы вы могли используйте файлы, которыми мы поделимся с вами, без изменения базового кода SPL.

Спланк готов; давайте откроем ворота и позволим Couchbase передать некоторые данные!

Шаг № 5: Импорт данных в Splunk

Импорт данных в Splunk сводится к определению нового ввода данных. Обратите внимание, что многие расширения Splunk доступны для обработки входных данных REST; однако для простоты мы настроим локальный ввод на основе сценария[4].

Во-первых, нам нужно создать скрипт; подключитесь через SSH к вашему серверу Splunk, а затем перейдите к:

Cd $SPLUNKBASE/bin/scripts

Создайте новый файл с именем acmeorders.sh следующим образом; убедитесь, что пользователю splunk предоставлены права на выполнение:

#!/bin/bash

curl -v -u ‹user›:‹password› — data-urlencode «statement=select * from acmeorders, где ts›unix_time_from_datetime_in_ms(current_datetime()) — 90000;» http:// ‹couchbasenode›:8095/analytics/service

Как вы могли заметить, скрипт использует ту же команду curl, которую мы использовали ранее при тестировании набора данных acmeorders, с уловом: a where condition. Важно ограничить объем данных, импортируемых при каждом запуске, чтобы избежать массового дублирования данных, поскольку мы будем опрашивать Couchbase каждые 30 секунд.

SQL++ где условие:

Где ts›unix_time_from_datetime_in_ms(current_datetime()) — 90000

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

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

Протестируйте скрипт, выполнив команду на терминале:

$SPLUNKBASE/bin/scripts/acmescript.sh

Если этот тест прошел успешно, пришло время настроить ввод новых данных. В Splunk перейдите в раздел «Настройки» > «Ввод данных» и выберите новый локальный ввод на основе сценария.

Нажмите «Сценарии», затем «Новые локальные сценарии» и настройте новый сценарий следующим образом; сначала настройте путь скрипта и частоту опроса:

Затем настройте параметры ввода, как показано ниже: обратите внимание на выбор couchbase в качестве типа источника, Поиск и отчетность в качестве контекста приложения. и acmeorders в качестве индекса.

Просмотрите и отправьте, чтобы сохранить. Чтобы убедиться, что данные правильно передаются в Splunk, войдите в приложение "Поиск и отчетность":

и попробуйте выполнить следующий запрос SPL, обязательно выбрав Все время вместо Последние 24 часа в поле со списком фильтра времени:

index="acmeorders" sourcetype="couchbase" | дедупликация acmeorders.orderId | поиск acmeorders.product{}=* | таблица _time, acmeorders.name, acmeorders.gender, acmeorders.country, acmeorders.gender, acmeorders.city, acmeorders.orderId, acmeorders.product{} , acmeorders.transaction | переименуйте acmeorders.product{} как product | переименовать acmeorders.gender как пол | переименовать «acmeorders.transaction» как утверждение | переименуйте acmeorders.orderId как orderId | переименовать acmeorders.name как имя | переименовать acmeorders.country как страну | переименуйте acmeorders.city как город

Вы должны увидеть что-то похожее на картинку ниже:

Если этот тест пройдет успешно… Поздравляем! Вы интегрировали Splunk с Couchbase!

Последний шаг: задействуйте непрерывный интеллект!

Шаг № 6. Развертывание панели мониторинга Splunk с обнаружением аномалий на основе машинного обучения.

Чтобы сэкономить время, мы не будем глубоко погружаться в то, как создавать информационные панели и модели машинного обучения в Splunk; вместо этого мы предоставим вам полнофункциональную информационную панель, настроенную на обновление каждые 30 секунд, используя преимущества Simple XML Reference, представленного в Splunk.

Чтобы импортировать панель инструментов шаблона, войдите в Splunk и в приложении для поиска и отчетности нажмите Панели мониторинга, а затем «Создать новую панель мониторинга»; дайте ему имя по вашему выбору, нажмите «Создать панель инструментов».

В верхней части экрана теперь должна появиться кнопка «Источник» — нажмите на нее:

Просто вставьте код XML, содержащийся в этом файле. После этого нажмите Сохранить и вернитесь назад… Готово!

Как показано на рисунке ниже, теперь у вас должен быть доступ к информационной панели, показывающей общее количество принятых заказов, информацию о продуктах и ​​одобренных транзакциях, а также отклонения, обнаруженные с помощью машинного обучения — обновляется в режиме реального времени!

Призыв к действию: выпустите джина из бутылки!

Прежде чем позволить вам задействовать Continuous Intelligence в вашей организации, вот наш призыв к действию:

  • Просмотрите сессию. Мы с Джеймсом Повеснки вели на Couchbase Connect 2020 «Когда Couchbase встречает Splunk/платформу для анализа данных в режиме реального времени, управляемую искусственным интеллектом».
  • Запустите несколько импортов новых данных с помощью генератора JSON и той же процедуры, которую мы использовали ранее (или любого эквивалентного решения), чтобы лучше оценить, насколько быстро изменения распространяются вниз по течению
  • Поэкспериментируйте с выбросами, например, запустив генератор JSON с показанной ниже конфигурацией, которая создаст до двух документов с пустым именем. атрибут и фиктивное имя продукта, которое должно инициировать обнаружение выбросов:

[
'{{repeat(1,2)}}',
{
_id: 'order_{{objectId()}}',
orderId:' {{integer(90000,1256748321)}}',
транзакция: '{{случайная("отклонена", "подтверждена")}}',
имя: '',
пол: '{{gender()}}',
электронная почта: '{{email()}}',
страна: '{{country()}}',
город: '{ {city()}}',
телефон: '{{phone()}}',
ts: Date.now()+600000,
продукт: [
' это шутка'
]
}
]

  • Поэкспериментируйте с другими данными, основанными на машинном обучении! В этой статье мы сосредоточились на обнаружении выбросов, поскольку это единственный анализ, который можно легко экспортировать в XML; тем не менее, есть много других маршрутов ценности, которые стоит изучить:
  • Кластеризация: для сегментации клиентской базы.
  • Прогнозы: прогнозировать спрос на товары с учетом сезонности.
  • Прогнозы категорий: чтобы предвидеть потребности клиентов и стимулировать их удержание.
  • Расширьте наборы аналитических данных, используя преимущества новых функций удаленных ссылок и внешних данных, представленных в Couchbase 6.6.

Спасибо, что прочитали весь пост; Надеюсь, вы нашли его познавательным.

[1] Обновлять каждые 30 секунд

[2] FakeIt был бы еще одним отличным вариантом, более мощным, но немного более сложным.

[3] Мы скорректировали временную метку ts, чтобы она соответствовала часам Couchbase Cluster; не стесняйтесь изменять его в соответствии с вашими потребностями

[4] В зависимости от ваших потребностей это может быть не самое эффективное решение, но это простой способ начать работу.