Поделиться через


Трассировка HTTP-запросов

Трассировка HTTP-запросов — это функция IIS, которая позволяет определить, что именно происходит с запросом. К ним относится любая форма проверки подлинности, которая использовалась обработчиком и продолжительность каждого шага в конвейере. Включение трассировки запросов — это удобный способ диагностики неожиданного или нежелательного поведения.

Параметры компонента (/api/webserver/http-request-tracing)

Функция трассировки HTTP-запросов создает файлы трассировки на основе настроенного набора правил. Сведения в файлах трассировки определяются тем, какие поставщики доступны для этого правила. Параметры функции для трассировки запросов с созданием файлов трассировки.

GET/api/webserver/http-request-tracing/{request-tracing-id}

{
    "id": "{request-tracing-id}",
    "scope": "",
    "metadata": {
        "is_local": "true",
        "is_locked": "false",
        "override_mode": "inherit",
        "override_mode_effective": "allow"
    },
    "enabled": "true",
    "directory": "%SystemDrive%\\inetpub\\logs\\FailedReqLogFiles",
    "maximum_number_trace_files": "50",
    "website": null,
    "_links": {
        "providers": {
            "href": "/api/webserver/http-request-tracing/providers?http_request_tracing.id={request-tracing-id}"
        },
        "rules": {
            "href": "/api/webserver/http-request-tracing/rules?http_request_tracing.id={request-tracing-id}"
        }
    }
}

Поставщики трассировки (/api/webserver/http-request-trace/providers)

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

GET/api/webserver/http-request-tracing/providers/{provider-id}

{
    "name": "ASPNET",
    "id": "{provider-id}",
    "guid": "{aff081fe-0247-4275-9c4e-021f3dc1da35}",
    "areas": [
        "Infrastructure",
        "Module",
        "Page",
        "AppServices"
    ],
    "request_tracing": {
        "id": "{request-tracing-id}",
        "scope": "",
        "_links": {
            "self": {
                "href": "/api/webserver/http-request-tracing/{request-tracing-id}"
            }
        }
    }
}

Правила трассировки (/api/webserver/http-request-trace/rules)

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

GET/api/webserver/http-request-tracing/rules/{rule-id}

{
    "path": "*",
    "id": "{rule-id}",
    "status_codes": [
        "101-999"
    ],
    "min_request_execution_time": "2147483647",
    "event_severity": "ignore",
    "custom_action": {
        "executable": "",
        "params": "",
        "trigger_limit": "1"
    },
    "traces": [
        {
            "allowed_areas": {
                "Authentication": "true",
                "Security": "true",
                "Filter": "true",
                "StaticFile": "true",
                "CGI": "true",
                "Compression": "true",
                "Cache": "true",
                "RequestNotifications": "true",
                "Module": "true",
                "FastCGI": "true",
                "WebSocket": "true"
            },
            "provider": {
                "name": "WWW Server",
                "id": "{provider-id}",
                "_links": {
                    "self": {
                        "href": "/api/webserver/http-request-tracing/providers/{provider-id}"
                    }
                }
            },
            "verbosity": "warning"
        }
    ],
    "request_tracing": {
        "id": "{request-tracing-id}",
        "scope": "",
        "_links": {
            "self": {
                "href": "/api/webserver/http-request-tracing/{request-tracing-id}"
            }
        }
    }
}

Создание правила трассировки запросов

Правило трассировки запросов должно указывать, какой раздел трассировки запроса принадлежит при создании, а также указать всех поставщиков, которые должны регистрировать сведения для созданного файла журнала. В этом примере создается правило, которое создает только журналы трассировки для запросов к index.html. Журналы будут содержать сведения из поставщика трассировки WWW Server .

POST/api/webserver/http-request-tracing/rules

{
    "path": "index.html",
    "status_codes": [
        "100-999"
    ],
    "traces": [
        {
            "allowed_areas": {
                "Authentication": "true",
                "Security": "true",
                "Filter": "true",
                "StaticFile": "true",
                "CGI": "true",
                "Compression": "true",
                "Cache": "true",
                "RequestNotifications": "true",
                "Module": "true",
                "FastCGI": "true",
                "WebSocket": "true"
            },
            "provider": {
                "id": "{www-server-provider-id}"
            },
            "verbosity": "warning"
        }
    ],
    "request_tracing": {
        "id": "{request-tracing-id}"
    }
}

Журналы трассировки (/api/webserver/http-request-trace/traces)

API администрирования СЛУЖБ IIS предоставляет конечную точку для просмотра данных для созданных журналов трассировки. Эта информация помогает быстро определить, какой файл трассировки интересен, а не открывать каждый файл по отдельности.

GET/api/webserver/http-request-trace/traces/{trace-id}

{
    "id": "{trace-id}",
    "url": "http://localhost:80/favicon.ico",
    "method": "GET",
    "status_code": "404",
    "date": "2017-03-02T15:34:17.0627155-08:00",
    "time_taken": "0",
    "process_id": "8172",
    "activity_id": "{8000009D-0001-F700-B63F-84710C7967BB}",
    "file_info": {
        "name": "fr000001.xml",
        "id": "{file-id}",
        "type": "file",
        "physical_path": "c:\\inetpub\\logs\\FailedReqLogFiles\\W3SVC1\\fr000001.xml",
        "_links": {
            "self": {
                "href": "/api/files/{file-id}"
            }
        }
    },
    "request_tracing": {
        "id": "{request-tracing-id}",
        "scope": "Default Web Site/",
        "_links": {
            "self": {
                "href": "/api/webserver/http-request-tracing/{request-tracing-id}"
            }
        }
    }
}