Архив за месяц Март 2016

Автор:human

Fluentd: быстрый поиск логов с Elasticsearch, Kibana and Fluentd

Fluentd: быстрый поиск логов с Elasticsearch, Kibana and Fluentd.

Es_ki_fl

Содержание:

  1. Введение
    2. Вариант 1 — реализация через fluentd agregator+fluentd forwarders
    2.1 Установка Elasticsearch
    2.2 Установка Kibana
    2.3 Установка Fluentd
    2.3 Настройка отправителей логов(fluentd-senders) во fluentd agregator
    3. Вариант 2 —  Rsyslog nodes > Rsyslog Agregator+fluentd+elasticsearch+kibana
    4 Использование системы
    5 Заключение

1 Введение.

Elasticsearch(версии 2.3): Elasticsearch является гибким и мощным решением с открытым исходным кодом, задачей которой является распространение, поиск в реальном времени и аналитика полученных данных . Благодаря разработке архитектуры с нуля для использования в распределенных средах, где надежность и масштабируемость должны иметь главное значение, Elasticsearch дает возможность легко выйти за рамки простого полнотекстового поиска. Благодаря своей прочной набор API-интерфейсов и запросов, DSL, плюс клиенты для наиболее популярных языков программирования, Elasticsearch поставляет на в будущем безграничные возможности в организации технологии поиска.
Kibana (послед версия 4.5): Kibana является визуализатором данных движка Elasticsearch, что позволяет нам изначально взаимодействовать со всеми данными в Elasticsearch через пользовательские инструментальные панели. динамические панели Kibana могут сохранятся, разделяться и экспортироваться, отображать изменения запросов в Elasticsearch в режиме реального времени. Вы можете выполнять анализ данных в пользовательском интерфейсе Kibana, используя заранее разработанные инструментальные панелей или обновлять эти панели мониторинга в режиме реального времени для анализа данных по лету.
Fluentdtd-agent v2.3.1): Fluentd является решением с  открытым исходным кодом для сбора данных которое позволяет унифицировать сбор данных для большего понимания и удобства дальнейшего анализа.

fluentd-before

fluentd-architecture

 

Я представил один из вариантов системы — для возможности разрешения конфликтов в зависимостях.

Кратко смысл всей системы  — rsyslog(стандартная системная утилита для логирования действий в linux) является «форвардером» логов во Fluentd. Fluentd в свою очередь обрабатывает и агрегирует эти логи(собирает их с других машин)  Далее elasticsearch обрабатывает все логи, полученные из fluentd(c помощью плагина), а благодаря Kibana мы получаем всю это информацию в красивой обертке через веб-морду. Это мы будем иметь в итоге.

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

fluentd+elastic+kibana

Т.е. мы будем иметь одну главную машину для сбора, агрегации и вывода логов через web морду Kibana.

2 Вариант 1 — реализация через fluentd agregator+fluentd forwarders

2.1 Установка — подготавливаем сервер сбора логов.

Информация.

На сервер мы установим fluentd, elasticsearch plugin,elastic search, kibana. Всё тестировалось на dedian 8. Назовем нашу машину — logserver. IP — 10.4.1.174

Linux logserver 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64 GNU/Linux. Итак, приступим к установке.

Elasticsearch

На данный момент последней версией является 2.3.0 — её мы и установим.

Для начала устанавливаем java:

Устанавливаем  сам elasticsearch 2.3.0

После установки добавляем в автозапуск

Отредактируем файл /etc/elasticsearch/elasticsearch.yml

Укажем , что никто по сети не мог читать наши данные(если необходимо)

Установка kibana 4.5 

Устанавливать Kibana будем из репозитория. Последняя версия 4.5

Добавляем ключ:

Создадим source list:

Обновимся

Установим Kibana через команду

Кибана 4.5 установлена. Добавим ее в автозагрузку

Откроем файл для настройки

Укажем ip, на котором будет сидеть Kibana. Можете указать свой ип в сети(для этого поставим 0.0.0.0). Так же укажем url elasticsearch.

Kibana и Elasticsearch динамический поиск

By default, Elasticsearch enables dynamic mapping for fields. Kibana needs dynamic mapping to use fields in visualizations correctly, as well as to manage the .kibana index where saved searches, visualizations, and dashboards are stored.

If your Elasticsearch use case requires you to disable dynamic mapping, you need to manually provide mappings for fields that Kibana uses to create visualizations. You also need to manually enable dynamic mapping for the .kibana index.

The following procedure assumes that the .kibana index does not already exist in Elasticsearch and that the index.mapper.dynamic setting in elasticsearch.yml is set to false:

  1. Запустить elaticsearch
  2. Создать файл индекса .kibana с динамическим отображением включенным только для этого индекса

PUT .

kibana { «index.mapper.dynamic»: true }

  1. Start Kibana and navigate to the web UI and verify that there are no error messages related to dynamic mapping.

Подключаем Еластиксёарч с Кибана

Before you can start using Kibana, you need to tell it which Elasticsearch indices you want to explore. The first time you access Kibana, you are prompted to define an index pattern that matches the name of one or more of your indices. That’s it. That’s all you need to configure to start using Kibana. You can add index patterns at any time from the Settings tab.

Рестартим kibana Смотрим нашу Kibanu в браузере https://<kibana_dns_name>:5601

kibana_status

kibana install

Fluentd(td-agent) install (debian jessie)

Флюенд это последняя часть нашей системы, он будет производить отправку логов или в другую систему fluentd  или в elasticsearch. Устанавливаем на агрегаторе(ресивере) и форвардерах(отправителях). Для начала настроим систему чтобы она не стопорилась.

Оттюнингуем sysctrl.conf

Применяем конфигурацию:

Ставим необходимые пакеты пакеты:

Теперь установим fluentd и создадим папку для конфигов (будем их дальше включать в данную папку для удобства — они подхватятся):

По-умолчанию Fluentd не умеет работать с  Elasticsearch. Чтобы решить эту проблему мы установим специальный плагин,ставим его на агрегатор Fluentd, не на форвардерах (отправителях логов), так как в нашей схеме форвардеры отправляют данные fluentd на агрегатор, а он уже отпраляет их в elasticsearch. Идём в терминал:

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

Реастартим сервис

Создадим конфиг, который будет собирать данные с других серверов(отправителей логов):

Вставим следующий код туда

Сохраняемся.

Не забываем открыть порты( с них мы будем слушать логи, которые нам посылаю серверы)

Сохраним их

Далее перейдем к настройке отправителей логов.

3 Установка — настраиваем отправители логов.

Fluentd(td-agent) может выступать в роли как агрегатора так и отправителя логов. Логи он будет брать из нативной системы логирования debian(ubuntu) — rsyslog. Для начала установим rsyslog, если его нет в системе:

Настроим rsyslog.

Добавим строку, она означает, что rsyslog будет отправлять данные на порт 42185, его будет слушать td-agent(fluentd). Дальше вы увидите, как это реализовано.

Сохраняемся.

sudo systemctl unmask rsyslog.service

Перезапустим Rsyslog сервис.

sudo service rsyslog restart

Далее установим Fluentd(td-agent)

Теперь установим fluentd и создадим папку для конфигов(будем их дальше включать для удобства):

Изменяем конфигурационный файл. Этот пример я взял(частично) из другого конфига, в нем так же задействован вариант со сбором логов из apache, нам можно понять из конфига что он берет данные из rsyslog(выше мы настроили отправку на порт 42185.)

Создадим конфиг для отправки логов на наш сервер сбора логов(10.4.1.130) на порт 24224:

nano /etc/td-agent/config.d/forwarder.conf

Поменяем права на каталог с логами

Реастартим сервис

Сохраняемся и рестартим td-agent.

3. Вариант 2 —  Rsyslog nodes > Rsyslog Agregator+fluentd+elasticsearch+kibana

Смысл данного варианта схемы в следующем — данные c серверов будет отправлять rsyslog на сервер агрегатор, на котором крутится fluentd+elastic+kibana.

rsyslog+fluentd+kibana

 

Для реализации данной схемы на понадобится изменить конфиги на клиенских машинах и заодно удалить td-agent:

Изменим его до этого вида:

Вот так.
Теперь создадим файл отправки логов с другого сервиса, например с nginx при ошибке — error. Создадим файл nginx.conf в папке /etc/rsyslog.d

Вставим туда следующий код

Это означает что все ошибка из файла на клиентской машине /var/log/nginx/error.log будут отправляться на сервер логов,там будет создаваться файл с название nginxerror.log (в папке с название хоста, как будет описано ниже). В итоге будет такая картина. Как у меня на примере в папке от хоста balance172 создается файл с ошибками nginx — nginxerror.ru

nginx ошибка на лог сервер

Перезапускаем клиентскую машину. 174 — ip сервера агрегатора.

На сервере(агрегаторе) вносим следующие изменения:

Редактируем файл /etc/rsyslog.conf для приема логов(по разным каталогам в зависимости от ip хоста).  Раскомментим и добавим:

Отредактируем файл  /etc/td-agent/td-agent.conf

Приводим к такому виду:

Удаляем все конфиги из папки /etc.td-agent/config.d/

Создаем только один файл там

Вставляем туда код

Отредактируем файл

укажем где будут храниться файлы:

Хранить их в корне /data и /logs — вы можете выбрать другие. Назначим права.

Рестартим все сервисы или быстрее сервак(как угодно).

sudo service td-agent restart

sudo service elasticsearch restart

 

5 Использование системы.

Переходим на сервер с kibana: https://kibana_ip:5601

kibana install

Теперь вы можете попробовать создавать виджеты — как это делать ? Смотрим оф. доки на сайте  the official documentation[4].

 

 

Автор:human

Nginx модуль perl

Nginx модуль perl

Сегодня мы рассмотрим с Вами как установить поддержку перл модулей для Nginx. Благодаря nginx вы можете реализовать богатый функционал для Ваших веб сервисов.
Итак, для начала нужно установить FCGI библиотеки для Perl. Предполагается что nginx у вас уже установлен.

Дальше качаем wraper и скрипт для его запуска:

Выставляем правильные права доступа на файлы (делаем их исполняемыми):

Init.d скрипт нужно немного подредактировать:
поменять su — на sudo -u
убрать -c из строки выполнения
Для этого выполните следующую команду в bash^

Ставим на загрузку и запускаем перловый сервер:

По умолчанию сервер perl-fcgi запустится на 8999 порту. Конечно это лучше проверить:

Дальше нужно научить Nginx проксировать запросы в perl. Добавляем вот такие строки в файл с конфигурацией виртуального хоста Nginx.

Теперь наш Nginx умеет работать с perl.
Можно выполнить проверку конфигурации nginx и перезапустить его, чтобы изменения вступили в силу:

nginx -t

Для проверки можно созддать файл info.pl в корневом каталоге сайта и открыть этот скрипт в браузере.

Автор:human

Установка базы данных Tarantool

tarantool bdБаза данных тарантул — это базы данных наших отечетвенных разработчиков, информации в сети по ним немного, вот что пишет сам автор базы данных Tarantool о своём «детище» на хабре:

«На сайте мы пишем про себя, что это что-то вроде микса между Node.JS и Redis. Основная идея в том, чтобы быстро работать с большими объёмами данных в памяти, при этом делать что-то более нетривиальное чем key/value или те структуры данных, которые предоставляет Редис. Идея в том, что у вас десятки, сотни гигабайт живых данных, и у вас есть возможность делать с ними что-то действительно сложное. Антикэш, считать какие-то хитрые корреляции, держать состояние онлайн-игры, и в реалтайме высчитывать рейтинги игроков и т.п.»

https://habrahabr.ru/company/mailru/blog/252065/

Установка БД Tarantool  в Ubuntu

Автор:human

Android разработка под Ubuntu

android ubuntu

Android разработка под Ubuntu

Под ubuntu достаточно легко установить среду для разработки android.  Для удобства установки необходимых компонентов будем использовать Ubuntu Make. Что же это такое?

На данный момент с помощью Ubuntu Make можно установить:

Итак, приступим к установке. Добавим репозиторий и устанавливаем:

Мы установили Ubuntu make. Теперь устанавливаем android sdk. Для его работы рекомендуется oracle java. Как ее установить смотрим здесь.

Устанавливаем Android SDK Ubuntu

Во время установки у вас спросят путь установки. Выбираем его.

Все готово. У меня почему-то при установке программа не создала ярлык. Ну не беда. Заходим в папку с программой/bin/studio.sh

Запускаем в терминале в папке bin

Выбираем новую установку и доустанавливаем необходимые файлы. Выбираем новый проект

android ubuntu

Устанавливаем PyCharm, Eclipse, Idea.

Добавляем аргумент. В терминале:

Так же при установке выбираем папку с каталогом, куда будем ставить наши пакеты. Установка аналогична предыдущей. В итоге получаем pycharm в Меню>Разработка>Pycharm:

android ubuntu

Для удаления используем аргумент -r:

Устанавливаем Eclipse в Ubuntu

Тут всё просто. Весит 180 метров.

Устанавливаем stencyl в Ubutnu

Всё просто.

Устанавливаем go-lang Google compiler в Ubuntu

Всё профит.