Архив рубрики: Публикации

Платформа для проведения видеоконференций BigBlueButton. Установка

У всех нас может возникнуть потребность в проведении видеоконференции. Цели могут быть разные: совещание, обучение, а быть может и просто чтобы поболтать с друзьями.




Инструментов для таких задач сейчас представлено немало, но в рамках этой статьи хотелось бы остановиться именно на BigBlueButton. Главная идея при разработке данной платформы — «Она должна быть проста в использовании как большая синяя кнопка».




В данной статье мы поговорим о том, как установить BigBlueButton, в конце лежит ссылочка на интерактив.




Кому интересен данный вопрос — добро пожаловать под кат.




▍ Системные требования




На момент написания данной статьи версия BigBlueButton 2.3 является самой свежей. Посмотрим минимальные системные требования для сервера в документации к BBB:







Если Вы устанавливаете BigBlueButton для локальной разработки на рабочей станции, Вы можете пренебречь некоторыми требованиями, поскольку к серверу будет подключаться лишь несколько клиентов. Ориентируясь на требования выше, Вы можете понизить их следующим образом:







Вне зависимости от конфигурации оборудования, на сервер нужно будет установить SSL-сертификат. Причина в следующем: чтобы пользователи могли делиться аудио- и видеопотоками со своих компьютеров, все браузеры требуют валидный SSL-сертификат, дабы дать доступ к веб-камере и микрофону пользователя через WebRTC. Если подключаться к BigBlueButton только по IP-адресу, то браузеры заблокируют клиенту BBB доступ к веб-камере и микрофону.




▍ Заказ сервера




Для начала нам нужен сервер для размещения на нём BigBlueButton. На случай если он уже имеется — пролистайте до следующего раздела.




Разберём заказ сервера на примере RUVDS.




Переходим на сайт RUVDS.
Нажимаем на «Выбрать VPS».







В разделе «Своя конфигурация» нажимаем на «Собрать».







В появившейся форме заполняем данные для входа в аккаунт RUVDS и нажимаем «Войти». Если же аккаунта нет, нажимаем «Регистрация». Мы предполагаем, что аккаунт уже есть.







Выбираем из списка нужный дата-центр.







Пролистываем чуть ниже и выбираем нужную конфигурацию сервера. Напомним, что если сервер нужен для проведения видеоконференций, то необходимо 8 ядер CPU и 16 ГБ RAM. Если же на нём предполагается разработка, то будет достаточно 4 ядер и 8 ГБ соответственно.
В случае, если предполагается запись видеоконференций, объём диска должен быть не менее 500 ГБ. Если же не предполагается, то достаточно 100 ГБ; будет с небольшим запасом.
В качестве шаблона сервера выбираем «Docker CE — Ubuntu 18.04».
Затем выбираем необходимый срок аренды сервера.







Пролистав ещё чуть ниже, соглашаемся с условием публичной оферты, предоставляем согласие на обработку персональных данных, а затем нажимаем кнопку «Оплатить».







Появится форма выбора метода оплаты. Выбираем наиболее удобный и проходим через процедуру платежа.







После успешной оплаты появится соответствующее сообщение.
Нажимаем на кнопку «Мои сервера»




Появится список, содержащий только что заказанный сервер. Все необходимые данные для подключения (IP-адрес, user, password) будут находиться в соответствующих полях.










▍ Привязка доменного имени к серверу




Для корректной работы и получения SSL-сертификата, к серверу должно быть привязано доменное имя. Если оно уже привязано — пролистайте до следующего раздела.




Инструкция по привязке доменного имени на примере регистратора reg.ru




Привязка доменного имени к серверу на примере бесплатного сервиса freenom.com




Заходим на сайт freenom.com, вводим желаемое доменное имя и нажимаем на кнопку «Проверить доступность».







Далее нажимаем «Оформить заказ».







Затем кликаем «Use DNS».







В появившихся полях выбираем срок предоставления доменного имени, IP-адрес сервера и нажимаем кнопку «Continue».







В появившейся форме вводим валидный адрес электронной почты и нажимаем «Verify My Email Address».







Проверяем входящую почту на предмет пришедшего письма от Freenom. В пришедшем письме переходим по ссылке валидации.







В открывшейся форме заполняем поля.







После заполнения формы ставим флажок, соглашаясь с условиями, и нажимаем на «Complete Order».







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







Потребуется некоторое время, пока обновленная информация о доменных записях распространится между другими DNS-серверами. Это может занять до 24 часов.




▍ Подготовка и проверка перед установкой




Итак, у нас есть сервер с 64-битным Ubuntu версии 18.04, с привязанным доменным именем. Перед тем как приступать непосредственно к инсталляции, проведём несколько проверок, чтобы убедиться, что сервер соответствует минимальным требованиям.
Проведение этих проверок сильно уменьшает шансы столкнуться с проблемами в процессе установки.
Также, установим необходимые пакеты и обновим сервер.




Подключимся к серверу по SSH. Инструкцию для пользователей Windows можно найти здесь.




Также, если мы подключаемся под пользователем root, то префиксы команд sudo везде ниже не нужны.




В первую очередь обновим сервер:




sudo apt update
sudo apt dist-upgrade




Затем установим пакет gnupg:




sudo apt install gnupg




Убедимся, что локаль сервера — en_US.UTF-8:




$ cat /etc/default/locale
LANG="en_US.UTF-8"




Если локаль отличается от en_US.UTF-8, наберём несколько команд, чтобы это исправить:




$ sudo apt-get install -y language-pack-en
$ sudo update-locale LANG=en_US.UTF-8"




Затем нужно выйти из SSH-сессии и зайти снова, это перезагрузит настройки локали для сессии.
Наберём команду cat /etc/default/locale. Необходимо убедиться, что есть только одна строка LANG=«en_US.UTF-8».




Если Вы видите ещё одну строку LC_ALL=en_US.UTF-8, уберите её из /etc/default/locale, после чего завершите SSH-сессию и откройте её снова.




Далее, выполняем команду sudo systemctl show-environment и убеждаемся, что видим LANG=en_US.UTF-8:




$ sudo systemctl show-environment
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin




Если LANG=en_US.UTF-8 нет, то выполняем команду sudo systemctl set-environment LANG=en_US.UTF-8, а затем ещё раз выполняем sudo systemctl show-environment, чтобы убедиться, что в выводных данных LANG=en_US.UTF-8




Затем убедимся, что на сервере есть 16 ГБ оперативной памяти при помощи команды free -h. Выводные данные должны быть примерно такими:




$ free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        3.1G        1.0G        305M         11G         12G
Swap:            0B          0B          0B




Если в строке Mem в столбце total менее 15G, то серверу недостаточно памяти для запуска BigBlueButton в боевом режиме, и необходимо увеличить количество памяти хотя бы до 16G. Впрочем, если Вы планируете использовать сервер для задач разработки, 8G будет достаточно.




Далее, убедимся, что на сервер установлена Ubuntu 18.04:




$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"




Удостоверимся, что запущена 64-разрядная версия Ubuntu:




$ uname -m
x86_64




Далее, проверим, что сервер поддерживает IPv6:




$ ip addr | grep inet6
inet6 ::1/128 scope host
...




Если нет строки inet6 ::1/128 scope host, то после установки BigBlueButton нужно будет внести изменения в настройки FreeSWITCH, чтобы отключить поддержку IPv6.




Следующим шагом убедимся, что сервер запущен на ядре Linux v.4.x:




$ uname -r
4.15.0-NNN-generic




Далее, проверим, что у сервера есть минимум 8 ядер. Напоминаем, что для задач разработки достаточно 4 ядра:




$ cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l
8




Итак, мы закончили предустановочные проверки и настройки. Следующий шаг — непосредственно установка BigBlueButton.




▍ Установка BigBlueButton




Установка BigBlueButton производится скриптом bbb-install.sh. Данная ссылка содержит подробную информацию по использованию данного скрипта.




Как пример, команда ниже устанавливает BigBlueButton 2.3, используя имя хоста bbb-test.cf и адрес электронной почты (для Let’s Encrypt) notice@example.com. Она устанавливает (или обновляет, если команда перезапущена позже) последнюю версию BigBlueButton 2.3 при помощи опции -v bionic-230. Также, она устанавливает демо-API (-a) и сетевой экран (-w)




wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v bionic-230 -s bbb-test.cf -e notice@example.com  -a -w




Перед выполнением команды замените электронную почту notice@example.com на валидную.




После того как скрипт bbb-install.sh закончит свою работу, можно проверить состояние сервера командой bbb-conf —check.




Результат будет примерно таким:




$ sudo bbb-conf --check

BigBlueButton Server 2.3.10 (2419)

                    Kernel version: 4.15.0-153-generic

                      Distribution: Ubuntu 18.04.5 LTS (64-bit)

                            Memory: 16414 MB

                         CPU cores: 8



/etc/bigbluebutton/bbb-web.properties (override for bbb-web)

/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties (bbb-web)

       bigbluebutton.web.serverURL: https://bbb-test.cf

                defaultGuestPolicy: ALWAYS_ACCEPT

                 svgImagesRequired: true



/etc/nginx/sites-available/bigbluebutton (nginx)

                       server_name: bbb-test.cf

                              port: 80, [::]:80

                              port: 443 ssl



/opt/freeswitch/etc/freeswitch/vars.xml (FreeSWITCH)

                       local_ip_v4: 193.108.114.47

                   external_rtp_ip: 193.108.114.47

                   external_sip_ip: 193.108.114.47



/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml (FreeSWITCH)

                        ext-rtp-ip: $${local_ip_v4}

                        ext-sip-ip: $${local_ip_v4}

                        ws-binding: 193.108.114.47:5066

                       wss-binding: 193.108.114.47:7443



/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml (record and playback)

                     playback_host: bbb-test.cf

                 playback_protocol: https

                            ffmpeg: 4.2.4-1ubuntu0.1bbb2~18.04



/etc/bigbluebutton/nginx/sip.nginx (sip.nginx)

                        proxy_pass: 193.108.114.47

                          protocol: http



/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml (Kurento SFU)

                        kurento.ip: 193.108.114.47

                       kurento.url: ws://127.0.0.1:8888/kurento

                    kurento.sip_ip: 193.108.114.47

                    localIpAddress: 193.108.114.47

               recordScreenSharing: true

                     recordWebcams: true

                  codec_video_main: VP8

               codec_video_content: VP8



/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml (HTML5 client)

                             build: 1829

                        kurentoUrl: wss://bbb-test.cf/bbb-webrtc-sfu

                  enableListenOnly: true

                    sipjsHackViaWs: true



/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml (STUN Server)

                              stun: stun.l.google.com:19302





# Potential problems described below

..........................

# Warning: The API demos are installed and accessible from:

#

#    https://bbb-test.cf

#

# and

#

#    https://bbb-test.cf/demo/demo1.jsp

#

# These API demos allow anyone to access your server without authentication

# to create/manage meetings and recordings. They are for testing purposes only.

# If you are running a production system, remove them by running:

#

#    apt-get purge bbb-demo




Также, можно использовать команду sudo bbb-conf —status чтобы проверить все ли процессы BigBlueButton стартовали и работают.




Примерный результат:




nginx —————————————————► [ - active]

freeswitch ————————————► [ - active]

redis-server ——————————► [ - active]

bbb-apps-akka —————————► [ - active]

bbb-fsesl-akka ————————► [ - active]

tomcat8 ———————————————► [ - active]

mongod ————————————————► [ - active]

bbb-html5 —————————————► [ - active]

bbb-webrtc-sfu ————————► [ - active]

kurento-media-server ——► [ - active]

bbb-html5-backend@1 ———► [ - active]

bbb-html5-backend@2 ———► [ - active]

bbb-html5-frontend@1 ——► [ - active]

bbb-html5-frontend@2 ——► [ - active]

etherpad ——————————————► [ - active]

bbb-web ———————————————► [ - active]




▍ Итог




Итак, мы рассмотрели системные требования к BigBlueButton, выполнили предустановочные операции и провели установку продукта.
Перейдём по ссылке bbb-test.cf и посмотрим что мы получили в итоге.




Появится приветственное меню. Введём в поле ввода своё имя и нажмём «Join»:







Затем давайте попробуем включить микрофон в конференции:







Разрешаем доступ к микрофону:







Нажимаем на «Да», если наш голос слышен, или на «Нет» в противном случае:







Итак, открылась сама конференция:







В ней уже можно проводить собрания, несмотря на то, что это API — демонстрационное.
Если потребуется разработать что-либо на базе BigBlueButton, продукт обладает обширной документацией, что здорово поможет в деле.




Ну что же, пора и завершаться. Стабильной работы оборудования и приятных конференций!







Источник: https://habr.com/ru/company/ruvds/blog/570804/



2021-08-17T09:56:14
Software

Graylog Video

01-Graylog. Обзор. Центральный лог сервер для Linux и Windows отчетов.










02-Graylog. Простая установка на один сервер. Центральный лог сервер для Linux и Windows отчетов.







Установка Graylog:
https://docs.graylog.org/en/latest/pages/installation.html


Настройка apache2 и создание SSL Сертификатов:


openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

apt install apache2
a2enmod proxy rewrite ssl headers proxy_http



!!! Внимание!!!
Замените "!" на острые скобки как в видео


!VirtualHost *:80!
    ServerName  graylog.home
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
!/VirtualHost!
!VirtualHost *:443!
    SSLEngine   On
    RequestHeader set X-Forwarded-Proto "https"
    SSLCertificateFile  /etc/ssl/private/cert.pem
    SSLCertificateKeyFile /etc/ssl/private/key.pem

    ServerName  graylog.home
    ProxyPreserveHost On
    ProxyPass   / http://127.0.0.1:9000/
    ProxyPassReverse    / http://127.0.0.1:9000/
!/VirtualHost!





03-Graylog Cluster. Multi Node установка. Центральный лог сервер для Linux и Windows отчетов.







Команды и параметры в видео:
https://docs.graylog.org/en/latest/pages/configuration/multinode_setup.html#configure-multinode


apt update && sudo apt-get upgrade
apt install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen


MongoDB Install:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update
apt install -y mongodb-org

MongoDB :

vi /etc/mongod.conf
====================
bindIp: 0.0.0.0
replication:
  replSetName: graylog
====================
systemctl restart mongod.service

Master Node:
mongo
rs.initiate( {
    _id : "graylog",
    members: [ { _id : 0, host : "10.10.10.161:27017" } ]
 })

 rs.conf()

 Add members to the replica set:
 rs.add("10.10.10.162:27017")

 rs.config()
 rs.status()

--Create a graylog database and add graylog users:
 mongo
 use graylog
 db.createUser( {
    user: "graylog",
    pwd: "Pa$$w0rD",
    roles: [ { role: "readWrite", db: "graylog" } ]
    });
db.grantRolesToUser( "graylog" , [ { role: "dbAdmin", db: "graylog" } ])
show users
db.auth("graylog","Pa$$w0rD")

systemctl enable mongod

Elasticsearch Installation:

wget -q https://artifacts.elastic.co/GPG-KEY-... -O myKey
apt-key add myKey
echo "deb https://artifacts.elastic.co/packages... stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
apt update && sudo apt-get install elasticsearch-oss


vi /etc/elasticsearch/elasticsearch.yml


cluster.name: graylog  
---Node name
node.name: node01
---Current node IP
network.host: 10.10.10.161
---port
http.port: 9200
---Hosts in the cluster
discovery.zen.ping.unicast.hosts: ["10.10.10.161", "10.10.10.162", "10.10.10.163"]
----Discoverable master node
discovery.zen.minimum_master_nodes: 2



systemctl restart elasticsearch.service
systemctl enable elasticsearch.service


 ERROR "master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster,and [cluster.initial_master_nodes] is empty on this node"



cluster.initial_master_nodes: ["10.10.10.161:9300"]


Checks:
curl 'http://10.10.10.161:9200
curl 'http://10.10.10.161:9200/_cluster/hea...
curl 'http://10.10.10.161:9200/_cat/nodes?v'


Graylog Installation:
wget https://packages.graylog2.org/repo/pa...
dpkg -i graylog-4.1-repository_latest.deb
apt update && sudo apt install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins

Master Node:
vi /etc/graylog/server/server.conf
is_master = true
root_username = admin
password_secret = Passw0rdPassw0rd
root_password_sha2 = ab38eadaeb746599f2c1ee90f8267f31f467347462764a24d71ac1843ee77fe3
http_bind_address = 0.0.0.0:9000
http_publish_uri = http://10.10.10.161:9000/
elasticsearch_hosts = http://10.10.10.161:9200,http://10.10...
mongodb_uri = mongodb://graylog:Pa$$w0rD@10.10.10.161:27017,10.10.10.162:27017,10.10.10.163:27017/graylog?replicaSet=graylog

grep "^[^#]" /etc/graylog/server/server.conf


systemctl enable graylog-server.service
systemctl start graylog-server.service

tail -f /var/log/graylog-server/server.log



LoadBalancer:
apt install nginx

cd /etc/nginx/sites-enabled/
rm default
cd /etc/nginx/sites-available

vi graylog

   server {
   listen       80 default_server;
   server_name graylog.rom.home;

   location / {
       proxy_set_header Host $http_host;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Graylog-Server-URL http://$server_name/;
       proxy_pass http://graylog-web-cluster;
   }
}
    upstream graylog-web-cluster {
        server 10.10.10.161:9000 max_fails=3 fail_timeout=30s;
        server 10.10.10.162:9000 max_fails=3 fail_timeout=30s;
        server 10.10.10.163:9000 max_fails=3 fail_timeout=30s;
    }




04-Graylog. Подключение клиентов Linux.







Установка Sidecar:

https://docs.graylog.org/en/latest/pages/sidecar.html



Агенты Sidecar и Collector:
https://github.com/Graylog2/collector-sidecar/releases




05-Graylog. Подключение клиентов Windows.







Установка Sidecar:

https://docs.graylog.org/en/latest/pages/sidecar.html

Агенты Sidecar и Collector:
https://github.com/Graylog2/collector-sidecar/releases



2021-08-16T16:51:19
Software

Конфигурация Grok в logstash

#### Предисловие




Grok — это инструмент, который объединяет несколько предопределенных регулярных выражений для сопоставления сегментированного текста и сопоставления с ключевыми словами.




#### Функция




Данные журнала предварительной обработки




#### Заявка




плагин grok в модуле фильтра logstash




#### Пример 1 (не в обычной форме)




##### Формат файла журнала




«`




localhost GET /index.html 1024 0.016




«`




##### запись оператора grok




«%{IPORHOST:client} %{WORD:method} %{URIPATHPARAM:request} %{INT:size} %{NUMBER:duration}




«`




##### отладка Grok




Вы можете использовать инструменты разработчика на веб-странице kibana для отладки, что удобно и быстро. См. Следующий рисунок:







##### Как записать logstash.conf в logstash




«`




filter {

  grok {

    match => { "message" => "%{IPORHOST:client} %{WORD:method} %{URIPATHPARAM:request} %{INT:size} %{NUMBER:duration}" }

  }

}




«`




#### Пример 2 (в обычной форме)




##### Формат файла журнала




«`




[2020-04-10 14:15:28 +0800] [571] [ERROR] Мой журнал ошибок




«`




##### запись оператора grok







Примечание. Из-за искаженного отображения текстового содержимого оно отображается в виде изображений.




##### отладка Grok




Вы можете использовать инструменты разработчика на веб-странице kibana для отладки, что удобно и быстро. См. Следующий рисунок:







##### Как записать logstash.conf в logstash







Примечание. Из-за искаженного отображения текстового содержимого оно отображается в виде изображений.




#### Дополнение




Grok предопределил 120 полей, вы можете обратиться к





https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns




Источник: https://russianblogs.com/article/25861498656/



2021-08-16T16:18:26
Software

Мониторинг журнала контейнеров на основе Graylog

Docker log




Когда контейнер запускается, он фактически является подпроцессом docker deamon. Docker daemon может получить стандартный вывод процесса в контейнере, а затем обработать его через собственный модуль LogDriver. LogDriver поддерживает множество способов и по умолчанию записывает в локальные файлы. Его также можно отправить в системный журнал и т. Д.







Docker по умолчанию соберет стандартный вывод приложения в файл json.log и построчно сохранит данные в формате JSON. Формат файла следующий:




{"log":"root@74205cdc7b53dd:/#lsrn","stream":"stdout","time":"xxx.155834526Z"}{"log":"root@74205cdc7b53dd:/#lsrn","stream":"stdout","time":"xxx.255834528Z"}




Этот метод хранения журналов в Docker можно настроить, указав драйвер журнала при запуске контейнера. Поддерживаются следующие драйверы журнала:







Управление журналом Graylog




Graylog — это инструмент управления полными журналами с открытым исходным кодом с функциями, аналогичными ELK. Docker изначально поддерживает протокол graylog, а Graylog также официально поддерживает Docker, которые могут быть легко соединены. Graylog официально предоставляет Dockerfile для развертывания системы ведения журнала в Docker, а также предоставляет файл docker-compose.yml для быстрого развертывания всего стека Graylog.
Подробное содержимое можно просмотреть по адресу http://docs.graylog.org/en/3.1/pages/installation/docker.html.







Развертывание Graylog




1. Создайте каталог graylog в текущем каталоге пользователя в качестве рабочего каталога для развертывания:




$ mkdir graylog

$ cd graylog




2. Инициализируйте каталог и файлы конфигурации




$ mkdir -p ./graylog/config

$ cd ./graylog/config

$ wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/graylog.conf

$ wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/log4j2.xml

 

 # Кроме того, поскольку Graylog определяет пользователей и группы пользователей с идентификатором 1100,

 # Причина Graylog может сообщить о недостаточных разрешениях ошибки каталога конфигурации при запуске, которая может быть решена с помощью следующей команды

chown -R 1100:1100 ./graylog/config




3. Измените файл конфигурации. Файл graylog.conf, полученный на предыдущем шаге, является конфигурацией по умолчанию, предоставленной официальным лицом. Пользователи могут конфигурировать в соответствии со своими потребностями. Например, часовой пояс в конфигурации по умолчанию — часовой пояс UTC, который можно изменить на часовой пояс Китая




root_timezone = Asia/Shanghai




4. Подготовьте файл docker-compose.yml




version: '3'

services:

  # MongoDB: https://hub.docker.com/_/mongo/

  mongo:

    image: mongo:3

    networks:

      - graylog

    volumes:

      - mongo_data:/data/db

  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.html

  elasticsearch:

    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0

    volumes:

      - es_data:/usr/share/elasticsearch/data

    environment:

      - http.host=0.0.0.0

      - transport.host=localhost

      - network.host=0.0.0.0

      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    ulimits:

      memlock:

        soft: -1

        hard: -1

    deploy:

      resources:

        limits:

          memory: 1g

    networks:

      - graylog

  # Graylog: https://hub.docker.com/r/graylog/graylog/

  graylog:

    image: graylog/graylog:3.1

    volumes:

      - graylog_journal:/usr/share/graylog/data/journal

      - ./graylog/config:/usr/share/graylog/data/config

    environment:

      # CHANGE ME (must be at least 16 characters)!

      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper

      # Password: admin

      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

      - GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.0.103:9000/

    networks:

      - graylog

    depends_on:

      - mongo

      - elasticsearch

    ports:

      # Graylog web interface and REST API

      - 9000:9000

      # Syslog TCP

      - 1514:1514

      # Syslog UDP

      - 1514:1514/udp

      # GELF TCP

      - 12201:12201

      # GELF UDP

      - 12201:12201/udp

networks:

  graylog:

    driver: bridge

# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/

volumes:

  mongo_data:

    driver: local

  es_data:

    driver: local

  graylog_journal:

    driver: local




5. Запустите «docker-compose up», чтобы запустить службу. После того, как служба запустится нормально, вы можете получить доступ к веб-интерфейсу graylog через http: // ip: 9000. Пользователь по умолчанию — admin / admin.




img




Коллекция журналов конфигурации Graylog




Сбор журналов Graylog осуществляется путем определения входных данных. Вы можете выбрать вход для сбора журналов на вкладке Система на странице веб-управления Graylog.







После входа на страницу ввода выберите тип ввода, такой как определение ввода GELF UDP:







После завершения выбора нажмите «Lanch new input», чтобы ввести подробную конфигурацию ввода, а после ее завершения сохраните.







Если после сохранения все в порядке, вход перейдет в состояние RUNNING, а затем вы сможете отправить данные на этот вход. Нажмите «Stop input», вход остановится, прием данных прекратится, и «Stop input» станет «Начать ввод», нажмите «Пуск», когда вам нужно принять данные.







Настройте Docker-контейнер для отправки данных в Graylog




При настройке контейнера Docker для отправки данных в Graylog, вы можете добавить следующие параметры при запуске команды docker run для запуска контейнера:




docker run --log-driver=gelf 

 --log-opt gelf-address = udp: // адрес серого журнала: 12201 

 --log-opt tag = <текущий тег службы контейнера, используемый для классификации при запросах graylog> 

<IMAGE> <COMMAND>




Конкретные примеры:




docker run -d 

--log-driver=gelf 

--log-opt gelf-address=udp://localhost:12201 

--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}" 

busybox sh -c 'while true; do echo "Graylog test message"; sleep 10; done;'




Если контейнер запускается командой docker-compose, вы можете добавить следующую конфигурацию в файл docker-compose.yml:




logging:

  driver:"gelf"

  options:

    GELF-адрес: "UDP: // адрес серого журнала: 12201"

         тег: «Контейнерный сервисный тег»




Конкретные примеры:




version: '2'

services:

  nginx:

    image: nginx:latest

    ports:

      - "80:80"

    logging:

      driver: "gelf"

      options:

        gelf-address: "udp://localhost:12201"

        tag: nginx-service




После настройки отправки журнала вы можете искать информацию журнала на вкладке Поиск







Источник: https://russianblogs.com/article/1206672753/



Конфигурация карты мира Graylog

В процессе использования graylog для сбора журналов нетрудно обнаружить, что существует «Карта мира», показывающая географическое местоположение. Если вы просто нажмете на позицию на картинке ниже, 99% не покажет вам нужную карту, и появится красное сообщение об ошибке (оставшиеся 1% на самом деле не будут успешными ^). Так как же открыть эту «карту мира»? Следующее содержание этой статьи будет представлено подробно.




Настроить геолокацию








Скачать базы данных MaxMind City
GeoIP2 City DatabaseиGeoLite2 City DatabaseВы можете выбрать одну загрузку, эту загрузкуGeoLite2 CityБаза данных, как показано ниже:







Настройте базу данных
1. Разархивируйте загруженный сжатый пакет.
2. В зависимости от способа установки изменитеGeoLite2-City.mmdbПоместите файл в нужное место. Я установил Graylog в форме RPM. Нажмите «Система-> Конфигурации» в веб-интерфейсе Graylog. Вы можете увидеть размещение файлов по умолчанию, как показано ниже:







Следовательно,GeoLite2-City.mmdbПоложить в/etc/graylog/server/Под каталогом.




3. Обновить процессор географического местоположения. Нажмите «Система-> Конфигурации» в веб-интерфейсе graylog и нажмите кнопку «Обновить» на рисунке ниже:





Установите флажок Включить, проверьте размещение файлов и нажмите кнопку «Сохранить», чтобы сохранить конфигурацию.







Настройте процессоры GeoIP Resolver
Нажмите кнопку «Обновить», чтобы обновить конфигурацию:







Переместите строку GeoIP Resolver, установите в качестве последнего обработчика сообщений распознаватель GeoIP, включите GeoIP Resolver и нажмите кнопку «Сохранить», чтобы сохранить настройки:







тест
На этом этапе настройка завершена. Graylog начнет искатьСодержит только Поле адреса IPv4 или IPv6 и извлечение его географического местоположения в<field>_geolocationПоле. Короче если у вас есть полеfield1Если содержимое является только IP-адресом, graylog сохранит географическое местоположение на основе IP-адреса этого поля.field1_geolocationДюйм




Давайте проверим это ниже:
1. Нажмите «System-> Inputs», чтобы создать ввод типа Raw / Plaintext TCP.










2. Отправьте тестовое сообщение.




[vagrant@graylogTest1 graylog]$ nc -w2 192.168.2.124 5555 <<< '8.8.8.8'




Вы можете увидеть эффект, показанный на следующем рисунке:







Поле сообщения на рисунке выше содержит только IP-адрес, и затем Graylog будет расширен в соответствии с этим IP-адресом.message_city_namemessage_country_code、 message_geolocationТри поля




Если ваш IP-адрес не существует один в каком-либо поле, вы можете использовать Extractor для извлечения IP-адреса для сохранения в виде поля, а затем Graylog может определить географическое местоположение. Как показано на рисунке ниже, поле сообщения содержит адрес 9.9.9.9. В это время можно извлечь Extractor для извлечения.







Создать Extractor для извлечения IP
Формат адреса ip относительно фиксирован. Мы можем использовать шаблон Grok для сопоставления. Шаблон Grok уже имеет существующие правила сопоставления ip, поэтому нам не нужно писать регулярно.











После завершения, когда мы получаем вышеуказанное сообщение, эффект выглядит следующим образом:







Показать карту








Когда это появляется<field>_geolocationПосле поля нажмите на поле «Карта мира», чтобы увидеть местоположение на карте.










Graylog официальная документацияGeolocationДля подробного ознакомления эта статья является только записью процесса настройки, которая следует за официальной документацией, только для справки.







Источник: https://russianblogs.com/article/5030359514/



2021-08-16T16:00:33
Software

Руководство по настройке установки Graylog

I. Введение в соответствующие компоненты платформы Garylog




  • Graylog-сервер: Graylog получает журналы от различных внутренних приложений и предоставляет интерфейс веб-доступа
  • Graylog Collector Sidecar: отвечает за сбор журналов приложений и отправку их на Graylog-сервер
  • Elasticsearch: используется для индексации и сохранения полученных журналов, производительность зависит от памяти и ввода-вывода жесткого диска
  • MongoDB: отвечает за сохранение информации о конфигурации Graylog, нагрузка не высокая
  • GeoIP_CityDatabase: анализ журналов Ngnix через Graylog, получение IP-адреса посетителя, а затем использование базы данных GeoIP2 для анализа географического местоположения IP.




Сравнение Гарилога и ЭЛК




Сравнение общей архитектуры




  • Graylog: Graylog Collector Sidecar-> Сервер Graylog (пакет ElstaicSearch) -> Веб-страница Graylog
  • ELK:Logstash -> ElasticSearch -> Kibana







Преимущества Graylog:




  • Простота развертывания и обслуживания, простота в использовании и интегрированное решение
  • По сравнению с синтаксисом json от ES синтаксис поиска относительно прост, и результаты поиска можно выделить
  • Встроенное простое оповещение можно вспомнить через веб-API или по электронной почте
  • Может напрямую экспортировать поисковый JSON-файл для облегчения разработки поисковых скриптов, которые вызывают остальные API




Три, диаграмма архитектуры Garylog




Установка одного узла




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







Кластерная установка




Это подходит для производственных сред. Балансировка нагрузки добавляется до того, как несколько узлов Graylog развернуты в кластере. ElasticSearch и MongoDB развернуты. Балансировщик нагрузки может проверить, является ли узел нормальным. Если узел отключен, вы можете удалить узел







В-четвертых, установка и настройка Graylog




1.jdk установка




Версия установки jdk1.8.0_161, процесс установки (опущен)




Установка 2.ElasticSearch




Установочная версия —asticsearch-5.6.11, установлен плагин x-pack, а также инструмент управленияasticsearch-head




Плагин для сегментации китайского словаasticsearch-analysis-ik-5.6.11 ,asticsearch-analysis-pinyin-5.6.11




Обратите внимание, что версия ElasticSearch, соответствующая Graylog2.4, не может быть выше 5.x, иначе она не может быть установлена




Обратите внимание, что версия ElasticSearch, соответствующая Graylog 2.3 и более ранним версиям, не может быть выше 4.x, в противном случае она не может быть установлена




(1) Установить эластичный поиск-5.6.11




Распаковать эластичный поиск-5.6.11.tar.gz, tar -zxf эластичный поиск-5.6.11.tar.gz -C / usr / local




Измените конфигурациюasticsearch.yml следующим образом




path.data:

       - /data/elasticsearch_1

       - /data/elasticsearch_2

       - /data/elasticsearch_3

 

path.logs: /data/elasticsearch_logs

bootstrap.memory_lock: true

network.host: 0.0.0.0

http.port: 9200

xpack.security.audit.enabled: true

xpack.security.authc.accept_default_password: false

indices.store.throttle.max_bytes_per_sec: 150mb

http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

http.cors.enabled: true

http.cors.allow-origin: "*"




Elasticsearch не может быть запущен пользователем root, вам нужно создать новый эластичный пользователь, переключиться на эластичный и запустить




./elasticsearch -d




Посетите http://10.10.10.1:9200/ через браузер и верните информацию, относящуюся кasticsearch, что означает, что запуск прошел успешно




(2) Установите x-pack




bin /asticsearch-plugin установите x-pack, следуйте инструкциям и нажмите Next для установки




(3) установить китайское слово segmenter ik и пиньинь




Перейдите в /usr/local/elasticsearch-5.6.11/plugins и распакуйте файлasticsearch-analysis-ik-5.6.11.zip в каталог ik




Перейдите в /usr/local/elasticsearch-5.6.11/plugins, разархивируйте файлasticsearch-analysis-pinyin-5.6.11.zip в каталог pinyin и перезапустите эластичный поиск




Введите в браузере следующий адрес: если появляется слово сегментация, настройка выполнена успешно.




http://192.168.0.100:9200/_analyze?analyzer=ik&pretty=true&text=helloworld,%E6%AC%A2%E8%BF%8E%E6%82%A8




(4) Установка инструмента управления упругой головкой




Извлеките файлasticsearch-head-master.zip в / usr / local /




chown -R elastic:elastic /usr/local/elasticsearch-head-master

cd /usr/local/elasticsearch-head-master

npm install && nohup npm run start &




Посетите http://10.10.10.1:9100, если появится следующая страница, установка прошла успешно







Установка 3.MongoDB




Используйте кластер Alibaba Cloud MongoDB RDS, версия 3.4, официальная рекомендация — использовать последнюю версию, процесс установки (опущен)




4. Установка Грайлог-сервера




Установочная версия Graylog-2.4.6




rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.rpm




Установить yum -y установить graylog-server через yum




Измените файл конфигурации vim /etc/graylog/server/server.conf со следующими изменениями:




Используйте pwgen для генерации password_secret плюс пароль pwgen -N 1 -s 96




U9oMoxRYJ0DB4K30SsQPhAeL7237aTTy0kSpLiEbrNNSqGp6sQaJO4zq9fI2I6FEVkpIomGNQMrssj8IQqmgIhTDNrUbQbnk




Добавьте указанный выше ключ в password_secret =




Используйте echo -n 123456 | sha256sum, чтобы сгенерировать пароль для входа, и учетная запись — admin




8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92




Добавьте указанный выше ключ в root_password_sha2 =




Измените часовой пояс root_timezone = UTC на root_timezone = Азия / Шанхай




Измените адрес для прослушивания web и api




rest_listen_uri = http://127.0.0.1:9000/api/ изменен на http://0.0.0.0:9000/graylog/api/




rest_transport_uri = http://192.168.1.1:9000/api/ изменен на https://graylog.example.com/graylog/api/




web_listen_uri = http://127.0.0.1:9000/ изменен на http://0.0.0.0:9000/graylog/




rest_enable_cors = false




Изменить адрес подключения ElasticSearch




elasticsearch_hosts = http://elastic:123456@10.10.10.1:9200




Изменить адрес подключения MongoDB




mongodb_uri = mongodb://graylog:123456@10.10.10.1:3717/graylog




Chkconfig — добавить Graylog-сервер




Добавьте graylog-сервер в системную службу systemctl, включите graylog-server.service




Подсветка результатов поиска allow_highlighting = true




5.Грейлог-коллектор-коляска установка




Перейдите в git-проект сборщика колясок https://github.com/Graylog2/collector-sidecar/releases, чтобы загрузить последнюю стабильную версию.




Установите rpm -i collector-sidecar-0.0.9-1.x86_64.rpm




Измените файл конфигурации collector_sidecar.yml, измените server_url: http://10.10.10.1:9000/graylog/api/, добавьте теги




Проверьте правильность файла конфигурации




graylog-collector-sidecar -configtest -c /etc/graylog/collector-sidecar/collector_sidecar.yml




Graylog-коллектор-коляска -сервисная установка




Запустите сервис systemctl запустите коллектор-коляску




6. Настройте Nginx




server_name graylog.example.com;

location /graylog/ {

            proxy_set_header Host $http_host;

            proxy_set_header X-Forwarded-Host $host;

            proxy_set_header X-Forwarded-Server $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header X-Graylog-Server-URL http://$server_name/api;

            proxy_pass       http://127.0.0.1:9000/graylog/;

        }

 

location /graylog/api/ {

            proxy_set_header Host $http_host;

            proxy_set_header X-Forwarded-Host $host;

            proxy_set_header X-Forwarded-Server $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass       http://127.0.0.1:9000/graylog/api/;

        }




После завершения настройки перезапустите nginx и graylog-server.




Источник: https://russianblogs.com/article/404130660/



2021-08-16T15:52:13
Software