Архив категорий Системы мониторинга и сбора логов


Система сбора логов на основе — fluentd, grafana, influxdb

Система сбора логов на основе — fluentd, grafana, influxdb
Система debian 8
Характеристики vm — 4gb 4 cpu 100 gb
Шаг 1. Установка td-agent(fluentd).


Как настраивать Kibana для визуализации данных

Как настраивать Kibana для визуализации данных

Tutorial Series


Kibana 4 is an analytics and visualization platform that builds on Elasticsearch to give you a better understanding of your data. In this tutorial, we will get you started with Kibana, by showing you how to use its interface to filter and visualize log messages gathered by an Elasticsearch ELK stack. We will cover the main interface components, and demonstrate how to create searches, visualizations, and dashboards.


This tutorial is the third part in the Centralized Logging with Logstash and Kibana series.

It assumes that you have a working ELK setup. The examples assume that you are gathering syslog and Nginx access logs. If you are not gathering these types of logs, you should be able to modify the demonstrations to work with your own log messages.

If you want to follow this tutorial exactly as presented, you should have the following setup, by following the first two tutorials in this series:

When you are ready to move on, let’s look at an overview of the Kibana interface.

Kibana Interface Overview

The Kibana interface is divided into four main sections:

  • Discover
  • Visualize
  • Dashboard
  • Settings

We will go over the basics of each section, in the listed order, and demonstrate how each piece of the interface can be used.

Kibana Discover

When you first connect to Kibana 4, you will be taken to the Discover page. By default, this page will display all of your ELK stack’s most recently received logs. Here, you can filter through and find specific log messages based on Search Queries, then narrow the search results to a specific time range with the Time Filter.

Here is a breakdown of the Kibana Discover interface elements:

  • Search Bar: Directly under the main navigation menu. Use this to search specific fields and/or entire messages
  • Time Filter: Top-right (clock icon). Use this to filter logs based on various relative and absolute time ranges
  • Field Selector: Left, under the search bar. Select fields to modify which ones are displayed in theLog View
  • Date Histogram: Bar graph under the search bar. By default, this shows the count of all logs, versus time (x-axis), matched by the search and time filter. You can click on bars, or click-and-drag, to narrow the time filter
  • Log View: Bottom-right. Use this to look at individual log messages, and display log data filtered by fields. If no fields are selected, entire log messages are displayed

This animation demonstrates a few of the main features of the Discover page:

How To Use Kibana Discover

Here is a step-by-step description of what is being performed:

  1. Selected the «type» field, which limits what is displayed for each log record (bottom-right)—by default, the entire log message is displayed
  2. Searched for type: "nginx-access", which only matches Nginx access logs
  3. Expanded the most recent Nginx access log to look at it in more detail

Note that the results are being limited to the «Last 15 minutes». If you are not getting any results, be sure that there were logs, that match your search query, generated in the time period specified.

The log messages that are gathered and filtered are dependent on your Logstash and Logstash Forwarder configurations. In our example, we are gathering the syslog and Nginx access logs, and filtering them by «type». If you are gathering log messages but not filtering the data into distinct fields, querying against them will be more difficult as you will be unable to query specific fields.

Search Syntax

The search provides an easy and powerful way to select a specific subset of log messages. The search syntax is pretty self-explanatory, and allows boolean operators, wildcards, and field filtering. For example, if you want to find Nginx access logs that were generated by Google Chrome users, you can search fortype: "nginx-access" AND agent: "chrome". You could also search by specific hosts or client IP address ranges, or any other data that is contained in your logs.

When you have created a search query that you want to keep, you can do that by clicking the Save Searchicon then the Save button, like in this animation:

How To Save a Kibana Search

Saved searches can be opened at any time by clicking the Load Saved Search icon, and they can also be used when creating visualizations.

We will save the type: "nginx-access" search as «type nginx access», and use it to create a visualization.

Kibana Visualize

The Kibana Visualize page is where you can create, modify, and view your own custom visualizations. There are several different types of visualizations, ranging from Vertical bar and Pie charts to Tile maps(for displaying data on a map) and Data tables. Visualizations can also be shared with other users who have access to your Kibana instance.

If this is your first time using Kibana visualizations, you must reload your field list before proceeding. Instructions to do this are covered in the Reload Field Data subsection, under the Kibana Settings section.

Create Vertical Bar Chart

To create a visualization, first, click the Visualize menu item.

Decide which type of visualization you want, and select it. We will create a Vertical bar chart, which is a good starting point.

Now you must select a search source. You may either create a new search or use a saved search. We will go with the latter method, and select the type nginx access search that we created earlier.

At first, the preview graph, on the right side, will be a solid bar (assuming that your search found log messages) because it consists only of a Y-axis of «Count». That is, it is simply displaying the number of logs that were found with the specified search query.

To make the visualization more useful, let’s add some new buckets to it.

First, add an X-axis bucket, then click the Aggregation drop-down menu and select «Date Histogram». If you click the Apply button, the single bar will split into several bars along the X-axis. Now the Count is displayed as multiple bars, divided into intervals of time (which can be modified by selecting an interval from the drop-down)—similar to what you would see on the Discover page.

If we want to make the graph a little more interesting, we can click the Add Sub Aggregation button. Select the Split Bars bucket type. Click the Sub Aggregation drop-down menu and select «Significant Terms», then click the Field drop-down menu and select «clientip.raw», then click the Size field and enter «10». Click the Apply button to create the new graph.

Here is a screenshot of what you should see at this point:

Kibana Visualization Settings

If the logs being visualized were generated by multiple IP addresses (i.e. more than one person is accessing your site), you will see that each bar will be divided into colored segments. Each colored segment represents the Count of logs generated by a specific IP address (i.e. a particular visitor to your site), and the graph will show the up to 10 different segments (because of the Size setting). You can mouseover and click any of the items in the graph to drill down to specific log messages.

When you are ready to save your visualization, click the Save Visualization icon, near the top, then name it and click the Save button.

Create Another Visualization

Before continuing to the next section, where we will demonstrate how to create a dashboard, you should create at least one more visualization. Try and explore the various visualization types.

For example, you could create a pie chart of your top 5 (highest count) log «types». To do this, clickVisualize then select Pie chart. Then use a new search, and leave the search as «» (i.e. all of your logs). Then select *Split Slices** bucket. Click the Aggregation drop-down and select «Significant Terms», click the Field drop-down and select «type.raw», then click the Size field and enter «5». Now click the Applybutton and save the visualization as «Top 5».

Here is a screenshot of the settings that were just described:

Pie chart settings

Because, in our example, we’re only collecting syslogs and Nginx access logs, there will only be two slices in the pie chart.

Once you are done creating visualizations, let’s move on to creating a Kibana dashboard.

Kibana Dashboard

The Kibana Dashboard page is where you can create, modify, and view your own custom dashboards. With a dashboard, you can combine multiple visualizations onto a single page, then filter them by providing a search query or by selecting filters by clicking elements in the visualization. Dashboards are useful for when you want to get an overview of your logs, and make correlations among various visualizations and logs.

Create Dashboard

To create a Kibana dashboard, first, click the Dashboard menu item.

If you haven’t created a dashboard before, you will see a mostly blank page that says «Ready to get started?». If you don’t see this screen (i.e. there are already visualizations on the dashboard), press theNew Dashboard icon (to the right of the search bar) to get there.

This animation demonstrates how to can add visualizations to your dashboard:

Create a Kibana Dashboard

Here is a breakdown of the steps that are being performed:

  1. Clicked Add Visualization icon
  2. Added «Log Counts» pie chart and «Nginx: Top 10 client IP» histogram
  3. Collapsed the Add Visualization menu
  4. Rearranged and resized the visualizations on the dashboard
  5. Clicked Save Dashboard icon

Choose a name for your dashboard before saving it.

This should give you a good idea of how to create a dashboard. Go ahead and create any dashboards that you think you might want. We’ll cover using dashboards next.

Use Dashboard

Dashboards can be filtered further by entering a search query, changing the time filter, or clicking on the elements within the visualization.

For example, if you click on a particular color segment in the histogram, Kibana will allow you to filter on the significant term that the segment represents. Here is an example screenshot of applying a filter to a dashboard:

Filter a dashboard

Be sure to click the Apply Now button to filter the results, and redraw the dashboard’s visualizations. Filters can be applied and removed as needed.

The search and time filters work just like they do in the Discover page, except they are only applied to the data subsets that are presented in the dashboard.

Kibana Settings

The Kibana Settings page lets you change a variety of things like default values or index patterns. In this tutorial, we will keep it simple and focus on the Indices and Objects sections.

Reload Field Data

When you add new fields to your Logstash data, e.g. if you add a filter for a new log type, you may need to reload your field list. It is necessary to reload the field list if you are unable find filtered fields in Kibana, as this data is only cached periodically.

To do so, click the Settings menu item, then click «logstash-*» (under Index Patterns):

Reload Field List

Then click the yellow Reload Field List button. Hit the OK button to confirm.

Edit Saved Objects

The Objects section allows you to edit, view, and delete any of your saved dashboards, searches, and visualizations.

To get there, click on the Settings menu item, then the Objects sub-menu.

Here, you can select from the tabs to find the objects that you want to edit, view, or delete:

Edit Saved Objects

In the screenshot, we have selected a duplicate visualization. It can be edited, viewed, or deleted by clicking on the appropriate button.


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

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



  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 является решением с  открытым исходным кодом для сбора данных которое позволяет унифицировать сбор данных для большего понимания и удобства дальнейшего анализа.




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

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

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


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

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

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


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

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


На данный момент последней версией является 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. Можете указать свой ип в сети(для этого поставим Так же укажем 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 с динамическим отображением включенным только для этого индекса


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 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.)

Создадим конфиг для отправки логов на наш сервер сбора логов( на порт 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.



Для реализации данной схемы на понадобится изменить конфиги на клиенских машинах и заодно удалить 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].