Руководство по системному администрированию#

Сценарии администрирования#

Менеджер репозитория поставляется с предопределенной ролью администратора nx-admin, а также анонимной ролью nx-anonymous. Их можно проверить в пункте «Пользователи» в разделе «Безопасность» главного меню «Администрирование».

Запуск Artifactory как службы#

Необходимо настроить менеджер репозитория для запуска в качестве службы с помощью init.d или systemd. Оба являются стартовыми фреймворками, используемыми в системах на базе Linux. По сути, это сценарии инициализации, которые загружают команды для управления демоном менеджера репозитория.

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

    1. создание пользователя:
      sudo useradd nexus

    2. настройка домашнего каталога пользователя в качестве каталога установки службы:
      sudo usermod -d /opt/nexus nexus

    3. настройка владельца каталога сервиса:
      sudo chown nexus:nexus /opt/nexus -R

  2. (Для init.d) В bin/nexus.rc назначьте пользователя в строке ниже:

    run_as_user="nexus"

  3. (Для init.d) Создайте ссылку $installdir/bin/nexus на /etc/init.d/nexus:

    sudo ln -s /opt/nexus-3.15.2-01/bin/nexus /etc/init.d/nexus

  4. (Для systemd) Создайте файл nexus.service в каталоге /etc/systemd/system/ со следующим содержимым:

    [Unit]
    Description=nexus service
    After=network.target
    
    [Service]
    Type=forking
    LimitNOFILE=65536
    ExecStart=/opt/nexus-3.15.2-01/bin/nexus start
    ExecStop=/opt/nexus-3.15.2-01/bin/nexus stop
    User=nexus
    Restart=on-abort
    TimeoutSec=600
    
    [Install]
    WantedBy=multi-user.target
    
  5. (Для systemd) Активируйте службу с помощью следующих команд:

    sudo systemctl daemon-reload
    sudo systemctl enable nexus.service
    sudo systemctl start nexus.service
    
  6. Убедитесь, что служба успешно запущена:

    tail -f /opt/sonatype-work/nexus3/log/nexus.log

    Запуск завершен, когда в журнале отобразится сообщение об успешном запуске сервиса.

Настройка Runtime среды#

Параметры JVM, на которой работает диспетчер репозиториев, конфигурируются с помощью файлов в каталоге $install-dir/bin.

Аргументы JVM считываются при запуске приложения из файла свойств Java $install-dir/bin/nexus.vmoptions:

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
-Djava.endorsed.dirs=lib/endorsed

Настройка объема памяти#

Изменение любого из параметров -Xmx, -Xms, XX:MaxDirectMemorySize потребует настройки всех трех параметров. Значения -Xms и -Xmx всегда должны иметь одинаковое значение.

Для редактирования параметров памяти JVM выполните следующее:

  1. Откройте файл свойств Java $install-dir/bin/nexus.vmoptions в текстовом редакторе.

  2. Найдите строки управления памятью:

    -Xms2703M
    -Xmx2703M
    -XX:MaxDirectMemorySize=2703M
    
  3. Отредактируйте значения каждого параметра, используя следующий формат: числа (size) описывают размер памяти, буквенные литералы представляют гигабайты (g, G), мегабайты (m, M) или килобайты (k, K).

    -Xms(size)[g|G|m|M|k|K]
    -Xmx(size)[g|G|m|M|k|K]
    -XX:MaxDirectMemorySize=(size)[g|G|m|M|k|K]
    
  4. Сохраните файл.

Настройка параметров Java Tool (Java Tool Options)#

Файл $install-dir/bin/nexus.vmoptions определяет аргументы Java Tool, по одному на строку в формате файла свойств Java.

Для редактирования параметров Java:

  1. Откройте файл свойств Java $install-dir/bin/nexus.vmoptions в текстовом редакторе.

  2. Укажите каждый параметр java в новой строке.

    Примечание
    Убедитесь, что за последним свойством следует символ конца строки или новая пустая строка. Иначе последнее указанное свойство не будет загружено.

  3. Сохранить файл с необходимыми разрешениями для владельца Artifactory.

Настройка HTTP порта#

Значение по умолчанию для HTTP-порта - 8081. Он используется для доступа к пользовательскому интерфейсу и ресурсам менеджера репозитория. Поэтому пользовательский интерфейс будет доступен по адресу http://localhost:8081/. Чтобы изменить или обновить порт, найдите строку application-port=8081 в $data-dir/etc/nexus.properties, а затем отредактируйте число.

Пример изменения порта на 9081: application-port=9081.

Настройка контекстного пути (Context Path)#

Чтобы изменить или обновить контекстный путь в экземпляре, который указывает на конкретное веб-приложение или ресурс, найдите строку nexus-context-path=/ в $data-dir/etc/nexus.properties.

Пример предоставления пользовательского интерфейса каталогу ресурсов: nexus-context-path=/components/.

Поэтому, если порт установлен на 9081, то URL адрес будет выглядеть следующим образом: http://localhost:9081/components/.

Настройка каталога данных (Data Directory)#

Можно использовать $install-dir/bin/nexus.vmoptions для определения нового местоположения данных, которые необходимо сохранить. Для этого в файле конфигурации нужно изменить значения: -Dkaraf.data, -Djava.io.tmpdir, -Dkaraf.log и -XX:LogFile. Далее через символ "=" укажите новый абсолютный путь. Например, чтобы использовать абсолютный путь /opt/sonatype-work/nexus3, измените значения следующим образом:

-Dkaraf.data=/opt/sonatype-work/nexus3
-Djava.io.tmpdir=/opt/sonatype-work/nexus3/tmp
-XX:LogFile=/opt/sonatype-work/nexus3/log/jvm.log
-Dkaraf.log=/opt/sonatype-work/nexus3/log

Настройка временного каталога (Temporary Directory)#

Менеджер репозиториев использует временный каталог виртуальной машины Java для важных исполняемых файлов.

Временный каталог настраивается внутри каталога данных Artifactory в $data-dir/tmp.

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

  • Каталог tmp требует разрешения exec от пользователя, владеющего процессом менеджера репозитория.

  • Не используйте опцию монтирования noexec в Linux для местоположения, содержащего каталог tmp.

  • Если в каталоге tmp установлен noexec, запуск менеджера репозитория завершится с ошибкой java.lang.UnsatisfiedLinkError и сообщением failed to map segment from shared object: Operation not permitted. Если используется Docker образ диспетчера репозитория, возможно, потребуется настроить доступы к каталогу хоста, который монтируется как Docker том, чтобы разрешить выполнение.

  • Не изменяйте файлы, помещенные во временный каталог, особенно когда запущен диспетчер репозитория.

  • Убедитесь, что на диске, на котором размещен каталог, есть не менее 1 ГБ свободного места.

Для изменения временного каталога:

  1. Откройте файл свойств Java $install-dir/bin/nexus.vmoptions в текстовом редакторе.

  2. Отредактируйте строку, содержащую -Djava.io.tmpdir=../sonatype-work/nexus3/tmp. Значение может быть либо абсолютным путем, либо путем относительно каталога $install-dir/bin.

  3. Сохраните файл с необходимыми разрешениями для владельца Artifactory.

Настройка конфигурации сервера#

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

Настройки HTTP-запроса#

Настройки HTTP-запроса позволяют настроить идентификатор, который менеджер репозитория использует при отправке HTTP-запроса. Данный идентификатор можно изменить, если необходимо использовать прокси-сервер HTTP. Прокси-сервер будет работать только в том случае, если для агента пользователя установлено определенное значение.

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

Время, в течение которого менеджер репозитория будет ожидать успешного выполнения запроса при взаимодействии с внешним удаленным репозиторием, можно настроить с помощью параметров «Connection/Socket timeout» и «Connection/Socket retry attempts».

HTTP-configuration

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

Параметры безопасности, показанные на рисунке, позволяют активировать и расставлять приоритеты областей безопасности, добавляя их в список «Active realms» слева и перемещая их выше или ниже в списке.

security-configuration

Эта конфигурация определяет, какая область безопасности используется для предоставления доступа пользователю.

Также можно включить или отключить анонимный доступ и установить имя пользователя и пароль для анонимного доступа. Анонимное имя пользователя и пароль используются для интеграции с другими сферами, которым может потребоваться специальное имя пользователя для анонимного доступа. Имя пользователя и пароль — это данные, которые нужно авторизовать, когда кто-то делает анонимный запрос. Нужно изменить анонимное имя пользователя на guest, если требуется интегрировать менеджер репозитория с Microsoft Active Directory.

Настройки прокси-сервера HTTP и HTTPS по умолчанию#

Если определенному экземпляру менеджера репозитория необходимо получить доступ к общедоступным репозиториям, таким как центральный репозиторий, через прокси-сервер, то можно настроить подключение к прокси-серверу для HTTP и другое подключение для HTTPS. Если не настроить прокси для HTTPS, то будут использоваться настройки прокси-сервера HTTP.

Можно указать хост-прокси и порт прокси-сервера, а также, при необходимости, детали аутентификации для имени пользователя, пароля, хоста NT LAN и домена NT LAN Manager. Кроме того, в настройке «Hosts to exclude from HTTP/HTTPS proxy» можно указать хосты, к которым можно получить доступ напрямую - им не нужно проходить через прокси-сервер. Изображение ниже показывает интерфейс администрирования прокси-сервера HTTP. Интерфейс конфигурации HTTPS выглядит так же и находится под конфигурацией HTTP.

HTTP-proxy-configuration

Настройка правил маршрутизации#

Администратор экземпляра Artifactory может запретить пользователю делать определенные запросы к вышестоящим репозиториям. Это можно использовать, например, для предотвращения атаки перехвата имени, когда злоумышленник создает в реестре пакеты с именами, используемыми определенными внутренними проектами.

Создание или изменение правила маршрутизации#

Раздел интерфейса «Правила маршрутизации» находится в разделе «Администрирование» на странице «Репозиторий». Пользователь должен иметь привилегию nx-all для просмотра или внесений изменений в правила маршрутизации. Для редактирования правила маршрутизации нужно выбрать его из списка. Для создания нового нужно нажать кнопку «Создать правило маршрутизации» на панели инструментов.

creating-rule

Правила маршрутизации имеют два режима: BLOCK и ALLOW. При выборе BLOCK, если один из сопоставителей (matchers) соответствует пути запроса, запрос будет заблокирован, в противном случае он будет разрешен. Если правило использует режим ALLOW, то путь запроса должен совпадать хотя бы с одним из сопоставителей, иначе он будет заблокирован.

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

Тестирование правил маршрутизации#

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

Удаление правила маршрутизации#

Правила маршрутизации можно удалить, нажав кнопку «Удалить правило маршрутизации». Чтобы удаление прошло успешно, правило не должно быть назначено ни одному репозиторию.

Назначение правила репозиторию#

При редактировании прокси-репозитория есть раздел «Правило маршрутизации», который позволяет пользователю выбрать ранее созданное правило маршрутизации для использования в репозитории. Ввод текста в поле позволяет выбрать имя правила маршрутизации из отфильтрованного списка правил маршрутизации. Нажмите треугольник справа, чтобы отобразить все параметры.

Управление привилегиями#

Можно получить доступ к настройке привилегий через пункт меню «Privileges» в подменю «Security» главного меню.

Чтобы создать новую привилегию, нажмите кнопку «Create privilege» на панели «Privileges» и выберите «Repository View». При создании привилегии будет загружена форма «Create Repository View Privilege». Эта форма принимает имя привилегии (Name), описание привилегии (Description), формат целевого репозитория (Format), имя целевого репозитория (Repository) и действия (Actions).

Задание требований к паролю#

Администратор может установить минимальные требования к паролям для пользователей, управляемых в локальных областях, используя свойства конфигурации в файлах $data-dir/nexus/etc/nexus.properties.

  • nexus.password.validator принимает регулярное выражение, условия которого должны быть выполнены для изменения пароля.

  • nexus.password.validator.message - это сообщение, которое будет показано, если введенный пароль не соответствует требованиям. Если сообщение не указано в свойствах, будет использоваться стандартное сообщение.

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

nexus.password.validator=^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).+$
nexus.password.validator.message=Passwords must contain a lowercase letter, an uppercase letter and a digit

Подготовка резервной копии#

Репозиторий Artifactory хранит данные в хранилищах BLOB-объектов. Резервное копирование должно быть выполнено для следующих объектов:

  1. Хранилища BLOB-объектов

    Для хранилищ BLOB-объектов создайте резервную копию каталога, в котором хранятся BLOB-объекты.
    Для типовой конфигурации каталог будет следующим: $data-dir/blobs.

  2. Идентификатор узла

    Каждый экземпляр репозитория Artifactory связан с отдельным идентификатором. Необходимо создать резервную копию этого идентификатора, чтобы показатели хранилища больших двоичных объектов (размер и количество больших двоичных объектов на диске) и отчеты брандмауэра Artifactory работали в случае восстановления. Файлы для резервного копирования идентификатора узла находятся в следующем расположении: $data-dir/keystores/node/.

События системного журнала#

logging

Можно настроить уровень ведения журнала для менеджера репозитория и всех подключаемых модулей, а также просмотреть текущий журнал с помощью пользовательского интерфейса. Чтобы получить доступ к панели «Logging», нажмите пункт меню «Logging» в подменю «Administration» главного меню.

На вкладке «Logging» можно настраивать предварительно созданные регистраторы, а также добавлять и удалять регистраторы. Можно изменить уровень логирования для настроенного регистратора. Для этого щелкните значение уровня (например, INFO) и в раскрывшемся списке выберите одно из допустимых уровней.

Уровни логирования:

Уровень логирования

Описание

TRACE

Это самый подробный уровень ведения журнала; он подробно описывает каждый шаг выполнения кода события.

DEBUG

Это второй по детализированности уровень ведения журнала. Он предоставляет подробную информацию для отладки и предоставляет слишком много информации для повседневного использования.

INFO

Этот уровень ведения журнала предоставляет информацию о событиях (например, переход приложения в определенное состояние или запрос авторизации пользователя). Этот уровень является информативным и может быть проигнорирован во время обычных операций.

WARN

Этот уровень указывает на то, что в приложении произошло непредвиденное событие, но основные функции продолжают работать. Это указывает на проблему, которая может привести к сбою в одном из процессов.

ERROR

Этот уровень указывает на то, что приложение столкнулось с ошибкой, препятствующей его нормальному функционированию.

Используйте кнопку «Reset to Default Levels», чтобы удалить все пользовательские регистраторы и сбросить все стандартные регистраторы до уровня по умолчанию. Можно удалять только пользовательские регистраторы. Чтобы отключить настроенный регистратор по умолчанию, установите его уровень регистратора на OFF.

Регистраторы, настроенные в пользовательском интерфейсе, сохраняются в sonatype-work/nexus/conf/logback-overrides.xml и переопределяют любые уровни ведения журнала, настроенные в основном файле журнала logback-nexus.xml, а также в других logback-* файлах. Если нужно отредактировать уровень ведения журнала в этих файлах, то нужно отредактировать файл переопределений. Это даст доступ к редактированию конфигурации в пользовательском интерфейсе на более позднем этапе, а также гарантирует, что настраиваемые значения имеют приоритет.

Уровень регистратора ROOT определяет, насколько подробным будет ведение журнала в целом. Если установлено значение DEBUG, ведение журнала будет максимально подробным, будут выводиться все сообщения журнала, включая операторы отладки. Если установлено значение ERROR, ведение журнала будет менее подробным — журнал будет вестись только при обнаружении ошибки. INFO представляет собой промежуточный объем логирования.

После того как ведение журнала настроено, можно открыть журнал на вкладке «Logs».

view-logs

Здесь вы можете установить частоту обновления журнала, выбрав опцию в раскрывающемся меню «Refresh interval». Доступные варианты включают в себя: Manual, Every 20 Seconds, Every Minute, Every 2 Minutes или Every 5 Minutes. Также обновление можно выполнить вручную, выбрав значок обновления (две круглые стрелки) в верхнем меню.

Вы также можете использовать раскрывающееся меню «Size», чтобы выбрать, отображать последние 25 КБ, 50 КБ или 100 КБ журнала.

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

  1. В текстовое поле «Marker to insert into log» введите текст, который вы хотите вставить.

  2. Нажмите кнопку «Insert Mark». Это вставит текст в конец файла журнала.

Текст будет окружен звездочками (*), чтобы его было легко найти. Если не указать текст в этом поле, кнопка вставит слово «MARK» по умолчанию.

Вы можете загрузить копию журналов с сервера на свой компьютер, нажав кнопку «Download».

События мониторинга#

Журналирование запросов доступа#

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

Можно увидеть распределение запросов и нагрузку в разных часовых поясах. Также для просмотра доступны URL-адреса, вызовы API и функции, которые используются в менеджере репозитория.

Ведение журнала запросов доступа включено по умолчанию и использует LogBack со встроенной ротацией журналов, настроенной на 90 дней хранения файла журнала. Журнал записывается в файл sonatype-work/nexus/logs/request.log и содержит все запросы и имя пользователя для аутентифицированных запросов.

Конфигурация находится в $Artifactory_HOME/conf/logback-access.xml и может быть изменена под нужные требования. После изменения файла, требуется перезапуск менеджера репозитория для вступления этих изменений в силу.

Если ведение журнала не требуется, то можно отключить его, закомментировав следующую строку в bin/jsw/conf/wrapper.conf:

wrapper.app.parameter.2=conf/jetty-requestlog.xml

Использование расширения управления Java (JMX)#

JMX — это инструмент для управления и мониторинга Java-приложений с помощью клиентского программного обеспечения, такого как VisualVM и другие. Может выполняться локально на сервере или удаленно.

Для менеджера репозитория можно настроить поддержку JMX, добавив wrapper.app.parameter.3=./conf/jetty-jmx.xml в список параметров wrapper.app в $Artifactory_HOME/bin/jsw/conf/wrapper.conf и установив параметры jmx-host и jmx-port в $Artifactory_HOME/conf/nexus.properties.

jmx-host={HostName or IP address}
jmx-port=1099
  • jmx-host — это имя хоста или IP-адрес для удаленного мониторинга приложения с использованием JMX с другого хоста.

  • jmx-port — это сетевой порт, используемый для подключения. Важно убедиться, что порт не заблокирован какой-либо сетевой настройкой при удаленном подключении. Значение 1099 представляет собой порт по умолчанию, используемый для JMX, но также можно использовать другой доступный порт.

После перезапуска диспетчера репозитория с включенным JMX можно подробно проверить работающую JVM.

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

Часто встречающиеся проблемы и пути их устранения#

В текущем релизе типовые проблемы не выявлены.

В случаях сбоев диагностику ситуации следует начинать с проверок:

  • подключения клиента (компьютера пользователя) к сети;

  • доступности сервера Artifactory - проверка доступности страниц сервиса;

  • в случае неудачной аутентификации необходимо обратить внимание на корректность введенного логина/пароля при входе в Artifactory.