• Как мониторить ответы сервера для Bitrix через Prometheus?

    vekov
    @vekov Автор вопроса
    Спасибо за ответ) а это делалось в контексте битрикса?

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

    ./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --http-client-body-temp-path=/var/cache/nginx/client_temp \
    --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
    --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
    --user=nginx \
    --group=nginx \
    --with-openssl=/tmp/openssl-1.1.1d \
    --with-openssl-opt=enable-tls1_3 \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_stub_status_module \
    --with-http_auth_request_module \
    --with-http_v2_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-file-aio \
    --with-ipv6 \
    --add-module=/tmp/nginx-push-stream-module-0.4.1 \
    --add-module=/tmp/mod_zip-1.2.0 \
    --add-module=/tmp/headers-more-nginx-module \
    --add-module=/tmp/ngx_pagespeed-1.13.35.2 \
    --add-dynamic-module=/tmp/ngx_brotli  \
    --add-module=/tmp/nginx-module-vts-0.1.18 \
    --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'


    И дальше идёт треш с тем, что сначала не устанавливается ngx_brotli, затем mod_zip битрикс использует старую версию как я понял с ошибками и она не ставится, затем pagespeed требует библиотеку optimize и так далее) Надеялся есть какой-то путь без пересборки nginx, так как для уже запущенного проекта и тем более на нестандартном nginx'e это дикая боль...
  • Как сделать подмену адреса в nginx без изменения урла?

    vekov
    @vekov Автор вопроса
    Хм, спасибо, ранее про директиву map даже не слышал...

    Однако приведенный выше пример не отработал, или я сделал что-то не так.

    В директории graphql вообще нет рнр файла. Это роут приложения. Наверное локейшн другой следовательно должен быть, покопаюсь ещё с этим.

    И я ещё подумал, может быть зря сконцентрировал внимание именно на этом эндпоинте, и может быть есть решение проще, если про него забыть?
    Просто иначе мне придется для каждого эндпоинта данного сервиса прописывать правило... Может быть можно для всех обращений к этому сервису вырезать часть "/mcs/users"?
  • Как сделать подмену адреса в nginx без изменения урла?

    vekov
    @vekov Автор вопроса
    Что-то не спасло... Там если что должен быть graphql endpoint. Если это на что-то влияет)

    Наверное нужно больше информации с моей стороны)

    Речь идёт вообще про кубер и один из сервисов, размещенных внутри него.

    В отдельности этот сервис отвечает нормально, у него есть эндпоинт - /graphql/

    А когда он (сервис) внутри кубера, он должен в целом быть доступен по /mcs/users/. Следовательно тот эндпоинт /graphql/ должен стать доступен по адресу /mcs/users/graphql/.

    То есть ингресс кубера кидает запросы с префиксом /mcs/users/ на сервис users, но сам сервис users из-за этого читает полный урл, а мне нужно чтобы он внутри себя вырезал часть с /mcs/users/.

    Полный конфиг нжинкса внутри сервиса такой:
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: nginx-config-users
    data:
      nginx.conf: |
        events {
        }
        http {
          server {
            listen 80 default_server;
            listen [::]:80 default_server;
            # Set nginx to serve files from the shared volume!
            root /var/www/public;
            server_name _;
            index index.php;
            
            location /mcs/users/graphql/ {
              rewrite ^/mcs/users(/graphql/.+)$ $1 last;
            }
            
            location / {
              try_files $uri $uri/ /index.php?$query_string;
            }
            
            location ~ \.php$ {
              include fastcgi_params;
              fastcgi_param REQUEST_METHOD $request_method;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              fastcgi_pass 127.0.0.1:9000;
            }
          }
        }


    Добавление указанной вами конструкции выводит лишь 404 nginx.
  • Как сделать подмену адреса в nginx без изменения урла?

    vekov
    @vekov Автор вопроса
    Lynn «Кофеман», я пробовал в try_files прописать условие, типа:

    location /service/users/endpoint/ {
              try_files $uri $uri/ /endpoint/;
            }


    Но не сработало
  • Как сделать подмену адреса в nginx без изменения урла?

    vekov
    @vekov Автор вопроса
    events {
        }
        http {
          server {
            listen 80 default_server;
            listen [::]:80 default_server;
            # Set nginx to serve files from the shared volume!
            root /var/www/public;
            server_name _;
            index index.php;
            location / {
              try_files $uri $uri/ /index.php;
            }
            location ~ \.php$ {
              include fastcgi_params;
              fastcgi_param REQUEST_METHOD $request_method;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              fastcgi_pass 127.0.0.1:9000;
            }
          }
        }
  • Как настроить автоподдомены в Kubernetes?

    vekov
    @vekov Автор вопроса
    ну точно не никак) Потому что я попробовал сделать так:

    spec:
      tls:
        - hosts:
          - test.ru
          - '*.test.ru'
          secretName: letsencrypt
      rules:
        - host: '*.test.ru'
          http:
            paths:
            - path: /mcs/business
              pathType: Prefix
              backend:
                service:
                  name: carlov-business-service
                  port:
                    number: 80


    И оно почти работает... Теперь проблема такая, что без поддомена - он не заходит, но это может и не проблема, а вот с сертификатом - беда.

    Не пускает на сайт и пишет в серт.ифно: "kubernetes ingress controller fake certificate".
  • Что идёт не так в пайпе Битбакета при сборке Laravel-приложения?

    vekov
    @vekov Автор вопроса
    Максим Федоров, читать то я умею :) тут вся сложность в том, что не понятно где включать, когда сервак не твой, а где-то в чужом облаке запускается.
  • Почему получаю ошибку от RabbitMQ?

    vekov
    @vekov Автор вопроса
    profesor08, При этом если указать неправильные реквизиты доступа, например несуществующий порт, - ошибка станет другой:

    "stream_socket_client(): Unable to connect to tcp://hawk.rmq.cloudamqp.com:18832 (Connection timed out)"
  • Почему получаю ошибку от RabbitMQ?

    vekov
    @vekov Автор вопроса
    profesor08, прямо сразу, как только вызываю соединение. То есть, если удалить всё в этой функции и оставить только:

    $connection = new AMQPStreamConnection(
                    'hawk.rmq.cloudamqp.com',	#host - имя хоста, на котором запущен сервер RabbitMQ
                    1883,       	#port - номер порта сервиса
                    'hbcittgb',    	#user - имя пользователя для соединения с сервером
                    'yaCPZE87Yn1XGq_Vwmg2yQCtdYrc-MIm',     	#password
                    'hbcittgb'
                    );
    $connection->close();


    То тоже будет та же ошибка...
  • Как правильно сархитектурить graphQL в микросервисах?

    vekov
    @vekov Автор вопроса
    Иван Шумов, да, я понимаю что такое вполне возможно) Отметил оба ответа решением, потому что всё же, в некоторых случаях, использование федераций - мне кажется, приемлемым. Спасибо за ответ, удачно подсветили минусы такого подхода.
    У нас планируется довольно ограниченное кол-во сервисов, каждый поддерживается разными командами, на фронте SPA. Пока что кажется, что проблем быть не должно) Если столкнёмся - вернусь к этому треду :)
  • Как правильно сархитектурить graphQL в микросервисах?

    vekov
    @vekov Автор вопроса
    Иван Шумов, хорошо, но я всё ещё не улавливаю конкретики. Речь о том, что не стоит делать свои граф-схемы для каждого сервиса? Типа делаем везде обычный рест апи и создаем схемы на гейтвее, которые резолвятся этими рест-запросами?
  • Как правильно сархитектурить graphQL в микросервисах?

    vekov
    @vekov Автор вопроса
    Резонный вопрос - а как тогда делать надо? :)
  • Как понять, каких скиллов не хватает комманде?

    vekov
    @vekov Автор вопроса
    Dmitry Roo, книгу гляну, звучит интересно, спасибо)

    Ну, тут отчасти политика (нам без моего запроса согласовали расширение, и надо кем-то этот пробел заполнить. Если не заполню - то скажут при первой просрочке - "мы дали Вам все карты, а Вы решили что ресурсы лишние и вот!". А если заполню - то не понимаю кем и как себе не навредить...)

    Отчасти - стремление к развитию отдела. До какого-то момента я не осознавал, насколько нам нужен консультант, а когда взял - это было лучшее решение в жизни.
  • Как понять, каких скиллов не хватает комманде?

    vekov
    @vekov Автор вопроса
    Доска есть, подвисают задачи поддержки пока что. Но только сегодня вышли 2 бэк-разработчика на поддержку.

    На всякий случай уточню - проект по развитию и поддержке CRM системы и корп.портала, поэтому перевес в сторону бэка. Периодически ещё занимаемся сайтами компании, но в текущих реалиях совсем редко и по мелочи.

    Вот есть отчётик:
    612f7839d901a696440518.jpeg

    spoiler

    1. Не определен разработчик - задача пришла с поддержки (пользователь столкнулся с багом)
    2. Ожидает выполнения - бэклог какого-либо проекта
    3. В работе - разработчик работает
    4. Ревью - ревью + тестирование
    5. Сделаны - такая колонка существует в случае, если задача принята, протестирована, но потом возвращена в работу.



    Судя по нему, я бы сказал что просадки кроме первой колонки (на которую как раз идут задачи поддержки) - нет. Как втянутся 2 новых разработчика, все колонки должны быть примерно ровными, или даже ниже остальных.

    Ну и такой:
    612f79c91dd41962929462.jpeg

    Я так понимаю, что в текущем виде - канбан не поможет. Вероятно, мог бы, если больше его сегментировать, выделив направления фронт/бэк/анализ и тд.
    Думал может есть еще какие-то методологии, типа как записать например в каком нибудь виде, какие скиллы есть, написать какие нужны и в каком приоритете. И после этого каким то волшебным образом рассчитать чего наиболее не хватает.
  • Какой лучший современный движок под mmorpg?

    vekov
    @vekov Автор вопроса
    А анрил тянет массовость и допустим терраформинг?

    Посмотрел проект под названием Life Is feudal, он на каком-то Torque 3D вовсе написан. В ответах ничего про него нет.
  • Как открыть директорию в проводнике из браузера?

    vekov
    @vekov Автор вопроса
    АртемЪ, не очень понимаю применимость HTA, если я верно осознал что это такое вообще.

    Юзер стори такая:
    Есть 500 сотрудников в корп сети. Есть сетевой диск. Есть корп. портал (веб приложение на РНР). Сотрудник заходит на корп портал, нажимает кнопочку в интерфейсе сайта, открывается сетевой диск в проводнике.
  • Как открыть директорию в проводнике из браузера?

    vekov
    @vekov Автор вопроса
    Пашенька, про это слышал, но уверен есть решения)
    Тем более речь про корпоративную сеть, где, если нужно - можно применить групповые политики на все браузеры пользователей.
  • Как открыть директорию в проводнике из браузера?

    vekov
    @vekov Автор вопроса
    Речь про ссылку для внутренних пользователей корпоративной веб-системы. Открываться должен общедоступный внутри сети сетевой диск.
    По file:// почему то кстати у меня сколько ни пытался - ничего не работает...