Стек отслеживания 50х (v2)#

Note

Эта статья с изменениями от 09-го апреля 2021 г. В wiki сохранилась также первая версия статьи, и я не стал удалять её. Посмотреть её можно здесь: Стек отслеживания 50х (v1)

Порядок работы#

На докере infra-docker задеплоен код memcached + специально подготовленный контейнер с php-fpm.

Чтобы запустить систему отслеживания нужно:

  1. Сбилдить контейнер с тегом:

    docker build . --tag=registry.appworks.ru/infra/php-fpm:7.4
    
  2. После завершения билда запушить в registry:

    docker push registry.appworks.ru/infra/php-fpm:7.4
    
  3. Запустить стек:

    docker stack deploy --with-registry-auth \
        -c docker-compose-fpm.yml trace50x
    
  4. Настроить реверс-прокси на проксирование fastcgi в контейнер php-fpm.

  5. Добавить код на страницу перед закрывающимся body:

     <script src="https://catch.appworks.ru/catch.js"></script>
    

Пример конфигурации nginx:#

server {
    listen 80;
    listen 443 ssl;
    include /etc/nginx/conf.d/ssl-settings.rules;

    ssl_certificate     /run/secrets/cloudflare-origin.crt;
    ssl_certificate_key /run/secrets/cloudflare-origin.key;

    server_name catch.appworks.ru;
    set $host_header "catch.appworks.ru";
    
    if ($scheme = http) {
        return 301 https://$host_header$request_uri;
    }

    charset utf-8;
    access_log /dev/stdout;
    
    add_header 'Access-Control-Allow-Origin' '*' always;
    add_header 'Access-Control-Allow-Credentials' 'true' always;
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
    add_header 'Access-Control-Allow-Headers' 'Authorization, Accept, '
               'Accept-Charset, X-Requested-With, User-Agent, Cache-Control, '
               'Content-Type, Content-Length, Content-Range, '
               'If-Modified-Since, x-language' always;
    add_header 'Access-Control-Max-Age' 3600 always;
    
    root /var/www;
    
    location / {
        fastcgi_split_path_info       ^(.+\.php)(.*)$;
        fastcgi_param REQUEST_METHOD  $request_method;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root/route.php;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param QUERY_STRING    $request_uri;
        include fastcgi_params;
        
        fastcgi_pass   11.100.250.9:34599;
        fastcgi_index  route.php;
    }

    location ~*i (\.(bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist|git|.docker.config)|~)$ {return 418;}
}

Общая схема взаимодействия#

Общая схема взаимодействия стека отслеживания ошибок

Общая схема взаимодействия стека отслеживания ошибок#

See also

Связанная статья по настройке мониторинга: Получение данных по страницам 50х