Məlumat bazası

0. Install stack ELK

Установка и настройка ELK для сбора, анализа и визуализации логов! 

Данный опус является частью единого цикла заметок o CLI.  Для его написания использовалось множество различных источников (скилы крутых специалистов, статьи с тематических сайтов, техническая документация, комментарии с форумов и социальных сетей и т. д и т. п.).  К сожалению, указать все источники точно не представляется  возможным!  По этому,  в конце заметки,  будет указана ссылка только  на основной источник.  Материалы,  использованные для написания заметки, изменялись автором под конкретную задачу! Вам, скорее всего, тоже  придется поступить аналогичным образом для получения желаемого результата) 

 

Нужна консультация или помощь в решении IT вопроса? Пожалуйста, в таком случае  заполните форму запроса на Sytes.ru!

В статье предполагается, что сервер терминалов уже прошел предварительную настройку и работает. Все скриншоты соответствуют Windows Server 2016.

Подразумевается, что для настройки системы анализа логов у Вас уже есть одина или несколько настроеных нод:

Системные требования для ELK Stack
  минимальные рекомендуемые
CPU 2 4+
Memory 6 Gb 8+ Gb
Disk 10 Gb 10+ Gb

Установка и настройка ELK, сбор, анализ и визуализация логов

Конфигурация оборудования

Чтобы выполнить данный сценарий, требуется установленный и настроенный сервер для ELK на ОС Ubuntu 18.04 LTS x86_64.

Внимание!

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

Схема работы

 

 

Стек ELK состоит из трех компонентов:

  • Elasticsearch - движок для хранения, индексирования и обработки данных в общем хранилище, а также для полнотекстового поиска данных.

  • Logstash - утилита для сбора, фильтрации, агрегации, изменения  и последующего перенаправления исходных данных в конечное хранилище. 

  •  Kibana - веб-интерфейс для просмотра и анализа данных из хранилища.

Установка Elasticsearch, Logstash и Kibana

  1. Выполните логин на сервере Ubuntu с правами root.
  2. Импортируйте ключ репозитория Elasticsearch:
root@ubuntu:~# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
OK
  1. Установите apt-transport-https:
root@ubuntu:~# apt-get install apt-transport-https
  1. Добавьте репозиторий:
root@ubuntu:~# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
deb https://artifacts.elastic.co/packages/7.x/apt stable main
  1. Установите Elasticsearch:
root@ubuntu:~# apt-get update && apt-get install elasticsearch
  1. Установите Kibana:
root@ubuntu-basic-1-1-10gb:~# apt-get install kibana
  1. Для работы Logstash установите OpenJDK:
root@ubuntu:~# apt-get install openjdk-8-jre
  1. Установите Logstash:
root@ubuntu:~# apt-get install logstash

Настройка Elasticsearch

Elasticsearch настраивается с использованием трех конфигурационных файлов:

  • elasticsearch.yml  - основной конфигурационный файл;

  • jvm.options - файл для настройки Java-машины для запуска Elasticsearch;

  • log4j2.properties  - файл для настройки логирования Elasticsearch.

jvm.options

Наиболее важной в этом файле является настройка памяти, выделенной для JVM (Heap Size). Для Elasticsearch этот параметр влияет напрямую на то, насколько крупные массивы данных он сможет обработать. Heap Size определяется парой параметров: 

  • Xms - начальное значение;
  • Xmx - максимальное значение.

По умолчанию Heap Size составляет 1 ГБ. Если объем памяти на сервере позволяет, увеличьте это значение (подробнее о Heap Size). Для этого найдите строки:

Xms1g
Xmx1g

и замените их, например, на строки:

Xms4g
Xmx4g

log4j2.properties 

Для удобства  можно поменять appender.rolling.policies.size.size, указывающий размер лога, при котором выполняется ротация (по умолчанию - 128 МБ). Подробнее о логировании см.тут.

elasticsearch.yml 

Настройте:

  • node.name: elasticsearch - укажите имя ноды;
  • network.host: 127.0.0.1 - установите слушать только localhost.

Запустите Elasticsearch:

root@ubuntu:~# systemctl start elasticsearch.service

**

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

**

root@ubuntu:~# systemctl start elasticsearch.service
Job for elasticsearch.service failed because the control process exited with error code.
See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
root@ubuntu-basic-1-1-10gb:~# journalctl -xe
-- Unit elasticsearch.service has begun starting up.
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: output:
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: #
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: # There is insufficient memory for the Java Runtime Environment to continue.
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: # Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: # An error report file with more information is saved as:
Nov 12 12:48:12 ubuntu-basic-1-1-10gb elasticsearch[29841]: # /var/log/elasticsearch/hs_err_pid29900.log

В случае успешного запуска добавьте Elasticsearch в список процессов, запускаемых автоматически:

root@ubuntu# systemctl enable elasticsearch.service
Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

Убедитесь, что Elasticsearch отвечает на запросы:

root@ubuntu:~# curl http://localhost:9200
{
"name" : "ubuntu-basic-1-1-10gb",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ZGDKK_5dQXaAOr75OQGw3g",
"version" : {
"number" : "7.4.2",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date" : "2019-10-28T20:40:44.881551Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

Настройка Kibana

По умолчанию в конфигурационном файле Kibana /etc/kibana/kibana.yml содержатся все необходимые настройки. Единственный параметр, который нужно изменить: server.host: “localhost”. При настройке по умолчанию Kibana доступна только локально. Для удаленного доступа к Kibana замените “localhost” на внешний IP-адрес сервера, на котором установлена Kibana. Кроме того, если Elasticsearch расположен не на одном хосте с Kibana, измените настройку elasticsearch.hosts: ["http://localhost:9200"].

  1. Запустите Kibana:
root@ubuntu:/etc/kibana# systemctl start kibana.service
  1. Добавьте Kibana в список приложений, запускаемых автоматически:
root@ubuntu:/etc/kibana# systemctl enable kibana.service
Synchronizing state of kibana.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable kibana
  1. В браузере перейдите по адресу http://<IP-адрес сервера kibana>:5601. 

Если Kibana работает, отобразится следующее:

 

 

Настройка  безопасности Kibana и Elasticsearch

По умолчанию Elasticsearch и Kibana полностью доступны для всех. Доступ можно ограничить одним из способов:

  • Использовать Nginx как reverse proxy с авторизацией и контролем доступа.

  • Использовать встроенный механизм elasticsearch xpack.security (подробно об этом см. тут или тут).

Рассмотрим наиболее популярный первый способ.

  1. Установите Nginx:
root@ubuntu:~# apt-get install nginx
  1. Убедитесь, что в конфигурационном файле /etc/elasticsearch/elasticsearch.yml параметр network.host имеет значение 127.0.0.1 или localhost. При необходимости выполните эту настройку и перезапустите демон elasticsearch:
root@ubuntu:~# cat /etc/elasticsearch/elasticsearch.yml  | grep network.host
network.host: 127.0.0.1
root@ubuntu:~# systemctl restart elasticsearch.service
  1. Убедитесь, что в конфигурационном файле /etc/kibana/kibana.yml параметр server.host имеет значение 127.0.0.1 или localhost. При необходимости выполните эту настройку и перезапустите демон kibana:
root@ubuntu:~# cat /etc/kibana/kibana.yml  | grep server.host
server.host: "127.0.0.1"
# When this setting's value is true Kibana uses the hostname specified in the server.host
root@ubuntu:~# systemctl restart kibana.service
  1. Убедитесь, что Elasticsearh и Kibana использовали интерфейс 127.0.0.1:
root@ubuntu:~# netstat -tulpn | grep 9200
tcp6 0 0 127.0.0.1:9200 :::\* LISTEN 10512/java
root@ubuntu:~# netstat -tulpn | grep 5601
tcp        0      0 127.0.0.1:5601          0.0.0.0:\*               LISTEN      11029/node 
  1. В /etc/nginx/sites-available создайте файл kibana.conf и добавьте в него следующее:
server {
listen <внешний IP-адрес сервера с Kibana и Nginx>:5601;
server_name kibana;

error_log /var/log/nginx/kibana.error.log;
access_log /var/log/nginx/kibana.access.log;

location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd;
rewrite ^/(.\*) /$1 break;
proxy_ignore_client_abort on;
proxy_pass http://localhost:5601;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
  1. Укажите имя пользователя (USER) и пароль (PASSWORD):
root@ubuntu:/etc/nginx# printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> /etc/nginx/htpasswd
  1. Для включения сайта создайте симлинк в папку /etc/nginx/sites-enabled:
root@ubuntu:~# ln -s /etc/nginx/sites-available/kibana.conf /etc/nginx/sites-enabled/kibana.conf
  1. Запустите Nginx:
root@ubuntu:~# systemctl start nginx 
  1. В браузере перейдите по адресу http://<IP-адрес сервера kibana>:5601. В открывшемся окне введите логин и пароль для доступа к веб-интерфейсу Kibana.

Аналогично настройте Nginx в качестве reverse proxy для Elasticsearh (порт 9200) и Logstash (обычно порт 5044).

 

Предупреждение : FTP небезопасен! Рассмотрите возможность использования SFTP вместо FTP .

Пример:

 

Также для удобства вывода можно подсветить № строки,  где есть вхождение "linkwatch" :

 grep -iwn 'linkwatch' /root/base.txt #Поиск в файле без учета регистра(Найдет linkwatch)

Вывод команды:

log_bin=mysql-bin
log_error=mysql-bin.err
binlog-ignore-db=information_schema,mysql,test

 

KOD:

Linux SED

В этой статье мы рассмотрим sed, известный потоковый редактор, и поделимся 15 советами по его использованию для достижения целей, упомянутых ранее.

 

Источник:

# /etc/openvpn/server.conf
 - Комментируем строчки;
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 77.88.8.88"
;push "dhcp-option DNS 77.88.8.2"
 - Перезапускаем демон;
# /etc/init.d/openvpn restart

 

 

Источник:

 

user print

Заметка:

???? Смотрим количество свободной оперативки:

 

# free

 

Если у вас есть профессиональный интерес в расширении данной статьи – заполните форму запроса!

Cпасибо автору!

Заметка распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

 

     Источник:

https://mcs.mail.ru/docs/additionals/cases/cases-logs/case-logging

Конец! 

  • ELK, Elasticsearch, Logstash, Kibana, filebeat
  • 0 istifadəçi bunu faydalı hesab edir
Bu cavab sizə kömək etdi?

Uyğun məqalələr

1. Setup program logs ELK

  Настройка  отправки логов в ELK для  анализа и визуализации логов!  Данный...