Сначала устанавливаем squid для дальнейшего использования в качестве прокси-сервера с помощью следующей команды: После установки, squid необходимо настроить. Для этого открываем файл .conf с помощью следующей команды: В открытом файле необходимо нажимаем Ctrl+W для того, чтобы чтобы найти необходимое место и прописать: В найденном месте ниже добавим строчки и поле сохраняем измененный файл: 176.59.142.172 - ip адрес локальной машины.  Устанавливаем Apache для дальнейшего осуществления передачи данных при запросе и настраиваем аутентификацию по паролю По умолчанию squid слушает 3128 порт Видим, что прокси успешно работает:  Установим Java с помощью следующих команд: Elasticsearch используется для хранения, анализа, поиска по логам. Для начала используем cURL, инструмент командной строки для передачи данных с помощью URL, для импорта открытого ключа Elasticsearch GPG в APT. Так же используем аргументы -fsSL для подавления всех текущих и возможных ошибок (кроме сбоя сервера), а также, чтобы разрешить cURL подать запрос на другой локации при переадресации. Выводим результаты команды cURL в программу apt-key, которая добавит открытый ключ GPG в APT Добавим список источников Elastic в каталог sources.list.d, где APT будет искать новые источники: Обновляем список пакетов, чтобы APT мог прочитать новый источник Elastic и устанавливаем Elasticksearch с помощью следующей команды: Для настройки Elasticsearch мы отредактируем файлы конфигурации. В Elasticsearch имеется три файла конфигурации: elasticsearch.yml для настройки Elasticsearch, главный файл конфигурации jvm.options для настройки виртуальной машины Elasticsearch Java Virtual Machine (JVM) log4j2.properties для настройки журнала Elasticsearch Открываем файл elasticsearch.yml для изменения конфигураций. Файл elasticsearch.yml предоставляет варианты конфигурации для кластера, узла, пути, памяти, сети, обнаружения и шлюза. Нам необходимо изменить настройки только для хоста сети. Для ограничения доступа и повышения безопасности находим строку с указанием network.host и убираем с нее значок комментария, после чего заменяем значение на 0.0.0.0, чтобы она выглядела следующим образом: "network.host: 0.0.0.0". Elasticsearch формирует одноузловой кластер: discovery.type: single-node. Включаем функции безопасности Elasticsearch на узле: xpack.security.enabled: true. Запускаем Elasticsearch с помощью следующих команд: Сохраняем вывод Установим Kibana, которая представляет собой удобную и красивую web панель для работы с логами, с помощью следующей команды: Откроем файл конфигурации: Настроим username и укажем, что Elasticsearch должна работать на порту 9200, а Kibana на 5601: Запустим Kibana с помощью следующих команд: Вписываем пароль, который получили при создании пользователей Заходим в Elasticsearch, создаем суперпользователя Устанавливаем Logstash- сервис для сбора логов и отправки их в Elasticsearch. Открываем файл конфигураций: Указываем, что принимаем информацию на 5044 порт, формируем функцию, где в дальнейшем будут находиться правила,  описываем передачу данных в Elasticsearch и сохраняем. Проверяем синтаксис, чтобы в дальнейшем не появились ошибки Запускаем Logstash с помощью следующих команд: Заходим на прокси сервер Изменяем файл конфигураций: Комментируем строчки "output.elasticsearch" и "hosts: ["localhost:9200"]" Раскомментируем строчки "output.logstash" и "hosts: ["localhost:5044"]" Изменим localhost на ip нашего сервера с ELK  Проверяем конфигурацию "sudo filebeat -e test output" Так как мы отправляем события в Logstash, то необходимо вручную загрузить конвейеры загрузки. Для этого запустим команду: Установим index templates для Elasticsearch вручную. Чтобы загрузить шаблон индекса вручную, запустим команду установки. Требуется подключение к Elasticsearch, но т.к. включен другой вывод, необходимо временно отключить этот вывод и включить Elasticsearch с помощью параметра -E. Отключаем выходные данные Logstash. 139.59.247.231 elk ip Запускаем Filebeat с помощью следующих команд: Grok-это фильтр внутри Logstash, который используется для разбора неструктурированных данных на что-то структурированное и подлежащее запросу. Он находится поверх регулярного выражения (regex) и использует текстовые шаблоны для сопоставления строк в файлах журналов. Полученные логи Grok Новые полученные логи Полученные логи Grok Новые полученные логи Полученные логи Grok Новые полученные логи