• Русский
  • Устранение неполадок

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

    Коннектор не готов

    Симптом

    Коннектор SonarQube имеет статус Ready: False.

    Шаги диагностики

    1. Проверьте статус коннектора:

      kubectl get connector <connector-name> -n <namespace> -o yaml

      Просмотрите поле status.conditions на наличие конкретных сообщений об ошибках.

    2. Распространенные причины и решения:

      Недопустимый токен:

      • Ошибка: "Authentication failed" или "Token invalid"
      • Решение: Убедитесь, что токен в secret указан верно и не истек
      • Сгенерируйте новый токен в SonarQube и обновите secret

      Проблемы с подключением:

      • Ошибка: "Connection refused" или "Timeout"
      • Решение: Убедитесь, что экземпляр SonarQube доступен из кластера
      • Проверьте network policies, firewall и разрешение DNS

      Неверный адрес:

      • Ошибка: "404 Not Found" или "Invalid URL"
      • Решение: Убедитесь, что spec.address включает правильный протокол (https://) и путь

    Сбой задания Scanner

    Симптом

    Задание sonar-scanner завершается с ошибкой или зависает во время анализа.

    Шаги диагностики

    1. Проверьте журналы задания:

      kubectl logs job/<job-name> -n <namespace>
    2. Распространенные причины и решения:

      Отсутствует sonar-project.properties:

      • Ошибка: "You must define the following mandatory properties"
      • Решение: Убедитесь, что файл sonar-project.properties существует в корне проекта и содержит обязательные поля:
        sonar.projectKey=my-project-key
        sonar.sources=.

      Конфигурация proxy не загружена:

      • Ошибка: "Authentication required"
      • Решение: Убедитесь, что scanner использует конфигурацию коннектора:
        SONAR_SCANNER_OPTS="-Dproject.settings=/scanner-config/sonar-project.properties"

      Недостаточно прав:

      • Ошибка: "Insufficient privileges" или "403 Forbidden"
      • Решение: Убедитесь, что токен имеет разрешение "Execute Analysis" для проекта

      Сбой JRE Scanner на узлах MicroOS:

      • Ошибка:
        Error occurred during initialization of VM
        Failed to mark memory page as executable - check if grsecurity/PaX is enabled
      • Контекст: На MicroOS или других hardened-образах узлов более новые версии SonarScanner CLI могут автоматически подготавливать JRE перед запуском scanner engine. Если загруженный JRE не может выполняться в соответствии с политикой безопасности узла, контейнер scanner может завершиться с кодом выхода 3, даже если коннектор, proxy, аутентификация и подключение к SonarQube работают корректно.
      • Диагностика: Если в логах scanner видно, что он подключается к SonarQube и загружает scanner engine или JRE до ошибки инициализации JVM, рассматривайте это как проблему совместимости среды выполнения scanner, а не как проблему аутентификации коннектора.
      • Решение: Используйте Java runtime, уже предоставленный образом scanner, если он совместим с вашей версией SonarQube:
        sonar-scanner -Dsonar.scanner.skipJreProvisioning=true
        Также можно задать эквивалентную переменную среды:
        SONAR_SCANNER_SKIP_JRE_PROVISIONING=true
      • Проверка: Выполните java -version в образе scanner и убедитесь, что доступна поддерживаемая Java runtime, прежде чем отключать JRE provisioning.

    Конфигурация не найдена

    Симптом

    Pod не удается смонтировать конфигурацию sonar-project.properties.

    Шаги диагностики

    1. Убедитесь, что CSI volume настроен правильно: Проверьте, что CSI volume корректно настроен в спецификации Pod с правильными атрибутами connectorName и configuration.names.

    2. Распространенные причины и решения:

      Коннектор не готов:

      • Решение: Дождитесь, пока коннектор перейдет в состояние Ready
      • Конфигурация доступна только когда коннектор находится в состоянии Ready

      Неверная конфигурация volume:

      • Решение: Убедитесь, что конфигурация CSI volume включает:
        • connectorName: Имя вашего коннектора
        • connectorNamespace: Namespace вашего коннектора
        • configuration.names: "sonar-scanner"

    Сбой Quality Gate

    Симптом

    Анализ завершается, но статус quality gate не соответствует ожидаемому.

    Шаги диагностики

    1. Проверьте панель проекта SonarQube для получения сведений о quality gate

    2. Распространенные причины и решения:

      Несоответствие профиля качества:

      • Решение: Убедитесь, что вашему проекту назначен правильный профиль качества

      Порог покрытия не достигнут:

      • Решение: Проверьте, есть ли у проекта данные о покрытии тестами
      • Убедитесь, что отчеты о покрытии создаются до анализа

      Настройка периода нового кода:

      • Решение: Проверьте определение периода нового кода в SonarQube

    Проблемы с производительностью

    Симптом

    Scanner работает слишком долго или завершает работу по тайм-ауту.

    Шаги диагностики

    1. Распространенные причины и решения:

      Большая кодовая база:

      • Решение: Увеличьте тайм-аут задания и лимиты ресурсов:
        spec:
          activeDeadlineSeconds: 1800  # 30 minutes
          template:
            spec:
              containers:
              - name: sonar-scanner
                resources:
                  limits:
                    memory: "2Gi"
                    cpu: "1000m"

      Сетевая задержка:

      • Решение: Проверьте сетевое подключение к экземпляру SonarQube
      • Рассмотрите возможность использования экземпляра SonarQube, расположенного ближе к вашему кластеру

    Как получить помощь

    Если проблемы сохраняются:

    1. Проверьте журналы коннектора:

      kubectl logs -n connectors-system -l app=connectors-proxy-service
    2. Просмотрите события коннектора:

      kubectl get events -n <namespace> --field-selector involvedObject.name=<connector-name>
    3. Проверьте состояние экземпляра SonarQube:

      • Откройте веб-интерфейс SonarQube
      • Непосредственно проверьте endpoint /api/system/status
    4. Обратитесь к документации: