Зонд как служба

Служба в Windows

Зонд может быть установлен как служба вручную или по автоматическому сценарию.

Установка вручную

  1. Скопируйте содержимое папки win64 из скачанного архива зонда в необходимую директорию. Запустите консоль с правами администратора и перейдите в папку с зондом.

  2. Введите имя службы без пробела (например myBoroService) и выполните команду запуска зонда с опцией -R:

    streamMonitor.exe -RmyBoroService
    

    Служба будет установлена.

  3. Откройте окно оснастки “Службы” services.msc. Найдите и запустите установленную службу myBoroService.

  4. При успешном соединении зонда с сервером в окне “Свойства” вы увидите статус “Выполняется”.

    ../../_images/ServiceProperties_ru.png

    Примечание

    По умолчанию служба устанавливается с автоматическим запуском при старте операционной системы. Тип запуска можно изменить в окне “Свойства”.

  5. Для установки второй службы создайте копию папки с зондом из скачанного архива в необходимой директории. Имя каждого сервиса должно быть уникальным.

Остановка и удаление службы

  1. Чтобы остановить службу зонда, откройте её свойства и нажмите кнопку “Остановить”. Статус изменится на “Остановлена”.

  2. Чтобы удалить службу, в командной строке с правами администратора введите имя службы без пробела и выполните команду запуска зонда с опцией -U:

    streamMonitor.exe -UmyBoroService
    

Установка по автоматическому сценарию

Вы можете установить и запустить службу по автоматическому сценарию. Сценарии для работы с зондом находятся в архиве зонда в папке share/service-daemon. Перед установкой зонда как службы необходимо скопировать сценарии BoroServiceInstall.bat и BoroServiceUninstall.bat в папку зонда. Сценарий BoroServiceInstall.bat последовательно выполняет три действия:

  1. регистрирует службу с именем Boro_service;

  2. создает правила для брандмауэра на разрешение входящего и исходящего трафиков для streamMonitor.exe в любых сетях;

  3. запускает зарегистрированную службу.

Сценарий BoroServiceUninstall.bat удаляет созданные для службы правила, останавливает и удаляет зарегистрированную службу. Чтобы установить или удалить службу, выполните в консоли соответствующий сценарий от имени администратора.

Сервис в systemd

Применимо для: CentOS 7, RHEL 7, Ubuntu 15.10, Fedora 15, и более новых версий перечисленных ОС.

  1. Скопируйте из архива зонда файл /share/service-daemon/boro-client.service в /etc/systemd/system/.

    Или создайте файл /etc/systemd/system/boro-client.service следующего содержания:

    [Unit]
    Description=Boro probe
    Documentation=https://boro.elecard.com https://boro.elecard.com/docs/en/UserGuide/index.html
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    #Type=simple
    User=root
    #Group=root
    WorkingDirectory=/opt/elecard/boro/lin64
    ExecStartPre=-!/usr/bin/chcon -t bin_t streamMonitor
    ExecStart=/opt/elecard/boro/lin64/streamMonitor
    PrivateTmp=false
    Restart=always
    RestartSec=120s
    
    [Install]
    WantedBy=multi-user.target
    

    В котором необходимо правильно указать поля WorkingDirectory и ExecStart - директорию, в которой находится зонд, и путь до исполняемого файла соответственно.

  2. Для проверки состояния сервиса необходимо выполнить команду: systemctl -l status boro-client

    [user@localhost ~]$ systemctl -l status boro-client
    boro-client.service - boro client
    Loaded: loaded (/etc/systemd/system/boro-client.service; disabled; vendor preset: disabled)
    Active: inactive (dead)
    

    Выделенные строки говорят о том, что автозапуск не включен (disabled), и приложение не запущено (inactive (dead)).

  3. Для запуска демона необходимо выполнить команду: systemctl start boro-client

    Для остановки демона необходимо выполнить команду: systemctl stop boro-client

  4. Для разрешения автозапуска выполните команду: systemctl enable boro-client

    Для отключения автозапуска: systemctl disable boro-client

    Примечание

    Следует помнить, что после перезапуска Linux, демон будет запущен вновь, если включен его автозапуск.

  5. Проверьте состояние запущенного демона:

    [user@localhost lin64]$ systemctl -l status boro-client
    boro-client.service - boro client
    Loaded: loaded (/etc/systemd/system/boro-client.service; enabled; vendor preset: disabled)
    Active: active (running) since Tue 2017-03-28 16:01:35 +07; 2s ago
    

    Выделенные строки указывают, на то, что демону разрешен автозапуск (enabled), и он сейчас запущен (active (running)).

Сервис в SysV

Применимо для устаревших дистрибутивов Linux.

Необходимо сказать, что данная система запуска сервисов сохраняется как наследие в современных дистрибутивах. Также следует знать, что функции в скрипте запуска (/etc/rc.d/init.d/functions) могут иметь разные аргументы в зависимости от дистрибутива, ознакомьтесь с документацией системы инициализации сервисов вашего дистрибутива для корректировки скрипта.

В данном разделе рассмотрена реализация скрипта автоматического запуска для дистрибутива Linux CentOS 6.8. Документация на подготовку скрипта вы можете найти в документации операционной системы /usr/share/doc/initscripts-*/sysvinitfiles.

  1. Перейдите в директорию /etc/rc.d/init.d

  2. Скопируйте из архива зонда файл (необходимы привилегии суперпользователя) /share/service-daemon/boro-client.

    Или создайте файл boro-client (необходимы привилегии суперпользователя) со скриптом ниже. Будьте внимательны, создавая скрипт в Windows (CRLF), интерпретатор bash требует строгого соблюдения Linux-стиля (только LF) переноса строк.

    #!/bin/sh
    # chkconfig: - 98 02
    # description: OTT and multicast probe.
    # processname: BoroProbe
    
    # Source function library.
    if [ -f /etc/init.d/functions ] ; then
        . /etc/init.d/functions
    elif [ -f /etc/rc.d/init.d/functions ] ; then
        . /etc/rc.d/init.d/functions
    else
        exit 0
    fi
    KIND="Boro-probe"
    PROCPATH="/opt/boro/lin64"
    
    start() {
      echo -n $"Starting $KIND services: "
      daemon --check=streamMonitor $PROCPATH/streamMonitor >/dev/null 2>&1 &
      #daemon --check=streamMonitor $PROCPATH/streamMonitor >$PROCPATH/proclog.log 2>&1 &
      echo
    }
    
    stop() {
        echo -n $"Shutting down $KIND services: "
        killproc streamMonitor
        echo
    }
    
    restart() {
        echo -n $"Restarting $KIND services: "
            stop
            start
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            restart
            ;;
        status)
            status streamMonitor
            ;;
        *)
            echo $"Usage: $0 {start|stop|restart|status}"
            exit 1
    esac
    exit $?
    
  3. В скрипте необходимо правильно задать переменную PROCPATH - путь до каталога с зондом.

  4. В скрипте необходимо выбрать, хотите ли вы сохранять лог процесса. Лог не будет сохраняться:

    daemon --check=streamMonitor $PROCPATH/streamMonitor >/dev/null 2>&1 &
    #daemon --check=streamMonitor $PROCPATH/streamMonitor >$PROCPATH/proclog.log 2>&1
    

    Лог будет сохраняться в файл proclog.log в папке с зондом:

    #daemon --check=streamMonitor $PROCPATH/streamMonitor >/dev/null 2>&1 &
    daemon --check=streamMonitor $PROCPATH/streamMonitor >$PROCPATH/proclog.log 2>&1
    
  5. Сохраните изменения в файле boro-client.

  6. Необходимо назначить права на исполнение для скрипта (необходимы привилегии суперпользователя): chmod 755 /etc/rc.d/init.d/boro-client

  7. Добавляем скрипт в систему запуска: chkconfig --add boro-client

  8. Включаем автостарт сервиса: chkconfig boro-client on

  9. После перезагрузки анализатор будет автоматически запущен как сервис. Проверить статус сервиса, запустить и остановить его “вручную” можно следующими командами, находясь в директории /etc/rc.d/init.d:

    ./boro-client status
    ./boro-client start
    ./boro-client stop
    
  10. Список установленных сервисов в системе и их статус можно проверить командой: chkconfig --list.

  11. Автозапуск сервиса можно отключить командой: chkconfig boro-client off.