По мере того как ИТ-инфраструктура переходит в облако, а Интернет вещей становится все более популярным, организации и ИТ-специалисты все чаще используют общедоступные облачные сервисы. Поскольку серверы и службы, работающие на них, увеличиваются, количество сгенерированных системой журналов также увеличивается. Анализ этих журналов очень важен в инфраструктуре по нескольким причинам. Это включает в себя соблюдение политик и правил безопасности, устранение неполадок системы, реагирование на инциденты, связанные с безопасностью, или понимание поведения пользователя.
Три очень популярных приложения с открытым исходным кодом под названием Elasticsearch, Logstash и Kibana объединяются, чтобы создать Elastic Stack или ELK Stack. Elastic Stack - очень мощный инструмент для поиска, анализа и визуализации журналов и данных. Elasticsearch - это распределенное, масштабируемое и доступное в режиме реального времени приложение для хранения журналов и поиска по ним. Logstash собирает журналы, отправленные Beats, улучшает их, а затем отправляет в Elasticsearch. Kibana - это веб-интерфейс, используемый для визуализации журналов и полезных идей.
В этом руководстве мы установим последнюю версию Elasticsearch, Logstash и Kibana с X-Pack на Ubuntu 17.04.
Предпосылки
Чтобы следовать этому руководству, вам понадобится Vultr 64-битный серверный экземпляр Ubuntu 17.04 с ОЗУ не менее 4 ГБ . В производственной среде требования к оборудованию возрастают с увеличением количества пользователей и журналов.
Этот учебник написан с sudo
точки зрения пользователя. Чтобы настроить пользователя sudo, следуйте инструкциям Как использовать Sudo в руководстве по Debian .
Вам также понадобится домен, направленный на ваш сервер, чтобы получить сертификаты от Let's Encrypt CA.
Перед установкой любых пакетов на экземпляр сервера Ubuntu рекомендуется обновить систему. Войдите в систему, используя пользователя sudo, и выполните следующие команды для обновления системы.
sudo apt update
sudo apt -y upgrade
После завершения обновления системы перейдите к следующему шагу.
Шаг 2. Установите Java
Elasticsearch требует Java 8 для работы. Он поддерживает Oracle Java и OpenJDK. В этом разделе руководства демонстрируется установка Oracle Java и OpenJDK.
Убедитесь, что вы установили любую из следующих версий Java. Установка Oracle Java рекомендуется для Elasticsearch. Однако вы также можете установить OpenJDK в соответствии с вашими предпочтениями.
Установка Oracle Java
Чтобы установить Oracle Java в вашей системе Ubuntu, вам нужно добавить Oracle Java PPA, выполнив:
sudo add-apt-repository ppa:webupd8team/java
Теперь обновите информацию о репозитории, выполнив:
sudo apt update
Теперь вы можете легко установить последнюю стабильную версию Java 8, выполнив:
sudo apt -y install oracle-java8-installer
Примите лицензионное соглашение, когда будет предложено. После завершения установки вы можете проверить версию Java, выполнив:
java -version
Вы должны увидеть вывод, похожий на:
user@vultr:~$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Вы также можете установить JAVA_HOME
и другие значения по умолчанию, установив oracle-java8-set-default
. Бег:
sudo apt -y install oracle-java8-set-default
Теперь вы можете проверить, установлена ли JAVA_HOME
переменная, выполнив:
echo "$JAVA_HOME"
Вывод должен напоминать:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-oracle
Если вы не получите вывод, показанный выше, вам может потребоваться выйти из системы и снова войти в оболочку. Oracle Java теперь установлена на вашем сервере. Теперь вы можете перейти к шагу 3 пропуска установки учебника OpenJDK.
Установка OpenJDK
Установка OpenJDK довольно проста. Просто запустите следующую команду, чтобы установить OpenJDK.
sudo apt -y install default-jdk
После завершения установки вы можете проверить версию Java, выполнив:
java -version
Вы должны увидеть вывод, похожий на:
user@vultr:~$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.17.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
Чтобы установить JAVA_HOME
переменную, выполните следующую команду:
sudo echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/environment
Перезагрузите файл среды, запустив:
sudo source /etc/environment
Теперь вы можете проверить, установлена ли JAVA_HOME
переменная, выполнив:
echo "$JAVA_HOME"
Вывод должен напоминать:
user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-openjdk-amd64/
Шаг 3: Установите Elasticsearch
Elasticsearch - это супербыстрая, распределенная, высокодоступная поисковая система RESTful. Добавьте хранилище Elasticsearch APT, запустив:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Приведенная выше команда создает новый файл репозитория для Elasticsearch и добавляет в него исходную запись. Теперь импортируйте ключ PGP, используемый для подписи пакетов.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Обновите метаданные репозитория APT, выполнив:
sudo apt update
Установите Elasticsearch, выполнив следующую команду.
sudo apt -y install elasticsearch
Приведенная выше команда установит последнюю версию Elasticsearch в вашей системе. После установки Elasticsearch перезагрузите демон службы Systemd, выполнив:
sudo systemctl daemon-reload
Запустите Elasticsearch и включите его автоматический запуск во время загрузки.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Чтобы остановить Elasticsearch, вы можете запустить:
sudo systemctl stop elasticsearch
Для проверки статуса услуги вы можете запустить:
sudo systemctl status elasticsearch
Elasticsearch теперь работает в порту 9200
. Вы можете проверить, работает ли он и дает ли результаты, выполнив следующую команду.
curl -XGET 'localhost:9200/?pretty'
Будет напечатано сообщение, подобное следующему.
user@vultr:~$ curl -XGET 'localhost:9200/?pretty'
{
"name" : "wDaVa1K",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "71drjJ8PTyCcbai33Esy3Q",
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
Установите X-Pack для Elasticsearch
X-Pack - это подключаемый модуль Elastic Stack, который предоставляет множество дополнительных функций, таких как безопасность, оповещение, мониторинг, отчетность и графические возможности. X-Pack также обеспечивает аутентификацию пользователей для Elasticsearch и Kibana, а также мониторинг различных узлов в Kibana. Важно, чтобы X-Pack и Elasticsearch были установлены в одной и той же версии.
Вы можете установить X-Pack для Elasticsearch напрямую, запустив:
cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install x-pack
Чтобы продолжить установку, введите y
при появлении запроса. Эта команда установит плагин X-Pack в вашу систему. После установки X-Pack включает аутентификацию для Elasticsearch. Имя пользователя по умолчанию elastic
и пароль changeme
. Вы можете проверить, включена ли аутентификация, выполнив ту же команду, что и вы, чтобы проверить, работает ли Elasticsearch.
curl -XGET 'localhost:9200/?pretty'
Теперь на выходе будет сказано, что аутентификация не удалась.
user@vultr:~# curl -XGET 'localhost:9200/?pretty'
{
"error" : {
"root_cause" : [
{
"type" : "security_exception",
"reason" : "missing authentication token for REST request [/?pretty]",
"header" : {
"WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
}
}
],
"type" : "security_exception",
"reason" : "missing authentication token for REST request [/?pretty]",
"header" : {
"WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
}
},
"status" : 401
}
Измените пароль changeme
по умолчанию , выполнив следующую команду.
curl -XPUT -u elastic:changeme 'localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewElasticPassword"
}
'
Замените NewPassword
реальным паролем, который вы хотите использовать. Вы можете проверить, установлен ли новый пароль и работает ли Elasticsearch, выполнив следующую команду.
curl -XGET -u elastic:NewElasticPassword 'localhost:9200/?pretty'
Вы увидите вывод, показывающий успешное выполнение запроса.
Далее, отредактируйте файл конфигурации Elasticsearch, выполнив:
sudo nano /etc/elasticsearch/elasticsearch.yml
Найдите следующие строки, раскомментируйте строки и измените их в соответствии с предоставленными инструкциями.
#cluster.name: my-application #Provide the name of your cluster
#node.name: node-1 #Provide the name of your node
#network.host: 192.168.0.1
Для network.host
, предоставьте частный IP-адрес, назначенный системе. Перезапустите экземпляр Elasticsearch, выполнив:
sudo systemctl restart elasticsearch
Теперь вместо того localhost
, чтобы использовать запрос, вам нужно будет использовать IP-адрес curl
.
curl -XGET -u elastic:NewElasticPassword '192.168.0.1:9200/?pretty'
Замените 192.168.0.1
фактическим частным IP-адресом сервера. Теперь, когда мы установили Elasticsearch, перейдем к установке Kibana.
Шаг 4: Установите Kibana
Kibana используется для визуализации журналов и полезных идей с помощью веб-интерфейса. Он также может быть использован для управления Elasticsearch. Рекомендуется установить ту же версию Kibana, что и Elasticsearch.
Поскольку мы уже добавили хранилище Elasticsearch и ключ PGP, мы можем установить Kibana напрямую, запустив:
sudo apt -y install kibana
Предыдущая команда установит последнюю версию Kibana в вашей системе. После установки Kibana перезагрузите демон службы Systemd, выполнив:
sudo systemctl daemon-reload
Вы можете запустить Kibana и включить автоматический запуск во время загрузки, выполнив:
sudo systemctl enable kibana
sudo systemctl start kibana
Установите X-Pack для Kibana
Вы можете установить X-Pack для Kibana напрямую, запустив:
cd /usr/share/kibana
sudo bin/kibana-plugin install x-pack
В X-Pack для Kibana по умолчанию включены График, Машинное обучение и Мониторинг. X-Pack также включает аутентификацию для Kibana. Имя пользователя по умолчанию kibana
и пароль changeme
. Важно изменить пароль по умолчанию для пользователя Kibana. Выполните следующую команду, чтобы изменить пароль.
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/kibana/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewKibanaPassword"
}
'
Замените 192.168.0.1
фактическим частным IP-адресом сервера и NewKibanaPassword
новым паролем для пользователя Kibana.
Отредактируйте файл конфигурации Kibana, выполнив:
sudo nano /etc/kibana/kibana.yml
Найдите следующие строки и измените значения в соответствии с предоставленными инструкциями.
#elasticsearch.url: "http://localhost:9200"
#elasticsearch.username: "user"
#elasticsearch.password: "password"
Раскомментируйте строки выше и elasticsearch.url
введите URL для экземпляра Elasticsearch. IP-адрес должен быть тем же IP, который использовался в elasticsearch.yml
. Кроме того, установите имя пользователя от user
до, elastic
а также укажите пароль эластичного пользователя, который вы установили ранее.
Перезапустите экземпляр Kibana, выполнив:
sudo systemctl restart kibana
Установите Nginx в качестве обратного прокси для Kibana
Поскольку мы запускаем Kibana localhost
в порту 5601
, рекомендуется настроить обратный прокси-сервер с Apache или Nginx для доступа к Kibana из-за пределов локальной сети. В этом уроке мы настроим Nginx в качестве обратного прокси-сервера для Kibana. Мы также обеспечим безопасность экземпляра Nginx с помощью бесплатного SSL-сертификата Let's Encrypt.
Установите Nginx, запустив:
sudo apt -y install nginx
Запустите и включите автоматический запуск Nginx во время загрузки.
sudo systemctl start nginx
sudo systemctl enable nginx
Теперь, когда веб-сервер Nginx установлен и работает, мы можем приступить к установке Certbot, который является официальным и автоматическим клиентом сертификатов Let's Encrypt. Добавьте Certbot PPA в вашу систему, запустив:
sudo add-apt-repository ppa:certbot/certbot
Обновите метаинформацию хранилища.
sudo apt update
Теперь вы можете легко установить последнюю версию Certbot, запустив:
sudo apt -y install python-certbot-nginx
Предыдущая команда разрешит и установит необходимые зависимости вместе с пакетом Certbot.
Теперь, когда у нас установлен Certbot, сгенерируйте сертификаты для своего домена, выполнив:
sudo certbot certonly --webroot -w /var/www/html/ -d kibana.example.com
Не забудьте поменять kibana.example.com
с вашим фактическим доменным именем. Предыдущая команда будет использовать клиент Certbot. certonly
Параметр сообщает клиенту Certbot генерировать только сертификаты. Использование этой опции гарантирует, что сертификаты не будут установлены автоматически и что конфигурация Nginx не изменилась. Проверка будет произведена путем размещения файлов запроса в указанном webroot
каталоге.
Certbot попросит вас указать адрес электронной почты для отправки уведомления о продлении. Вам также нужно будет принять лицензионное соглашение.
Чтобы получить сертификаты от Let's Encrypt CA, вы должны убедиться, что домен, для которого вы хотите создать сертификаты, направлен на сервер. Если нет, внесите необходимые изменения в записи DNS вашего домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.
Сгенерированные сертификаты, вероятно, будут храниться в /etc/letsencrypt/live/kibana.example.com/
каталоге. Сертификат SSL будет сохранен как, fullchain.pem
а закрытый ключ - как privkey.pem
.
Срок действия сертификатов Let's Encrypt истекает через 90 дней, поэтому рекомендуется настроить автоматическое обновление сертификатов с помощью cronjobs. Cron - это системный сервис, который используется для периодических задач.
Откройте файл задания cron, запустив:
sudo crontab -e
Добавьте следующую строку в конец файла.
30 5 * * 1 /usr/bin/certbot renew -a nginx --quiet
Вышеуказанная работа cron будет выполняться каждый понедельник в 5:30. Если срок действия сертификата истекает, он автоматически обновляет их.
Отредактируйте файл виртуального хоста по умолчанию для Nginx, выполнив следующую команду.
sudo nano /etc/nginx/sites-available/default
Замените существующий контент следующим.
server {
listen 80 default_server;
server_name kibana.example.com
return 301 https://$server_name$request_uri;
}
server {
listen 443 default_server ssl http2;
server_name kibana.example.com;
ssl_certificate /etc/letsencrypt/live/kibana.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kibana.example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Убедитесь, что вы обновляете kibana.example.com
свое фактическое имя домена, а также проверьте путь к сертификату SSL и закрытому ключу.
Перезапустите веб-сервер Nginx, выполнив:
sudo systemctl restart nginx
Если все настроено правильно, вы увидите экран входа в систему Kibana. Войдите, используя имя пользователя kibana
и пароль, которые вы установили. Вы должны быть в состоянии успешно войти и увидеть панель управления Kibana. Оставьте приборную панель, а пока настроим позже.
Установите Logstash
Logstash также можно установить через официальный репозиторий Elasticsearch, который мы добавили ранее. Установите Logstash, запустив:
sudo apt -y install logstash
Приведенная выше команда установит последнюю версию Logstash в вашей системе. После установки Logstash перезагрузите демон службы Systemd, выполнив:
sudo systemctl daemon-reload
Запустите Logstash и включите его автоматический запуск во время загрузки.
sudo systemctl enable logstash
sudo systemctl start logstash
Установите X-Pack для Logstash
Вы можете установить X-Pack для Logstash напрямую, запустив:
cd /usr/share/logstash
sudo bin/logstash-plugin install x-pack
X-Pack для Logstash поставляется с пользователем по умолчанию logstash_system
. Вы можете сбросить пароль, запустив:
curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "NewLogstashPassword"
}
'
Замените 192.168.0.1
фактическим частным IP-адресом сервера и NewLogstashPassword
новым паролем для пользователя Logstash.
Теперь перезапустите сервис Logstash, выполнив:
sudo systemctl restart logstash
Отредактируйте файл конфигурации Logstash, выполнив:
sudo nano /etc/logstash/logstash.yml
Добавьте следующие строки в конец файла, чтобы включить мониторинг экземпляра Logstash.
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.url: http://192.168.0.1:9200
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: NewLogstashPassword
Замените URL-адрес Elasticsearch и пароль Logstash в соответствии с вашими настройками.
Теперь вы можете настроить Logstash для получения данных, используя разные ритмы. Существует несколько типов битов: Packetbeat, Metricbeat, Filebeat, Winlogbeat и Heartbeat. Вам нужно будет установить каждый бит отдельно.
Вывод
В этом уроке мы установили Elastic Stack с X-Pack в Ubuntu 17.04. Базовый стек ELK теперь установлен на вашем сервере.