CDN
Сырые логи. Выгружать логи в ваше хранилище
Что такое Сырые логи
Сырые логи — опция для автоматической выгрузки логов CDN-ресурсов в ваше хранилище. Логи содержат информацию о запросах пользователей, которые поступают на кеширующие CDN-серверы и прекеш-сервер (если для ресурса подключён шилдинг).
Опция платная, для подключения напишите на support@edgecenter.ru.
Перейдите в раздел CDN, откройте вкладку Логи → Сырые логи, включите опцию и настройте отправку логов в S3-, FTP- или SFTP-хранилище.

Выгружать логи в S3-хранилище
1. По умолчанию все CDN-серверы каждый час отправляют логи запросов. Если на CDN-сервер не поступил запрос к вашему ресурсу, он отправит пустой лог. Чтобы отключить отправку пустых логов, заполните чек-бокс «Не отправлять пустые логи».
2. Если для аккаунта подключён шилдинг, на странице будет чек-бокс «Добавить логи с шилдинга источника». Поставьте галочку, если хотите получать логи и с CDN-серверов, и с прекеш-сервера шилдинга.
3. Выберите способ получения логов — S3.
4. Укажите имя хоста — это имя, которое идентифицирует сервер хранилища в сети и заменяет IP-адрес. Если используете S3-хранилище EdgeЦентр, вы найдёте идентификатор в личном кабинете в строке Hostname.
5. Укажите идентификатор ключа доступа — этот идентификатор в паре с секретным ключом доступа нужны нашей CDN, чтобы подключаться к хранилищу и отправлять туда логи. Если используете S3-хранилище EdgeЦентр, вы найдёте идентификатор в личном кабинете в строке Access key.
6. Укажите секретный ключ доступа. Если используете S3-хранилище EdgeЦентр, вы найдёте ключ в личном кабинете в строке Secret key
7. Укажите хост бакета — идентификатор бакета в системе вашего S3-хранилища в формате {bucket_name}.{hostname}. Он нужен, чтобы CDN отправляла логи в правильный бакет внутри хранилища. Хост бакета EdgeЦентр выглядит так: {имя бакета}.{имя хоста из пункта №3}, например examplename.s-dt2.cloud.edgecore.ru.
8. Укажите регион — идентификатор локации, где расположен сервер вашего хранилища. Это необязательный пункт: для некоторых хранилищ регион определяется автоматически, и можно оставить поле пустым. Если пользуетесь S3-хранилищем EdgeЦентр, указывать идентификатор обязательно. Вы найдёте его в Деталях хранилища. Идентификатор — начальные символы Hostname до первой точки.

9. Выберите, как выгружать логи: в один бакет для всех CDN-ресурсов или в разные бакеты для каждого CDN-ресурса.
10. Укажите бакет или бакеты, куда будут выгружаться логи. Обязательно указывать существующий бакет, иначе выгрузка не произойдёт. Если хотите выгружать логи в конкретную папку внутри бакета, укажите имя папки.
11. Нажмите Сохранить изменения.

Выгружать логи в FTP- и SFTP-хранилище
1. По умолчанию все CDN-серверы каждый час отправляют логи запросов. Если на CDN-сервер не поступил запрос к вашему ресурсу, он отправит пустой лог. Чтобы отключить отправку пустых логов, заполните чек-бокс «Не отправлять пустые логи».
2. Если для аккаунта подключён шилдинг, на странице будет чек-бокс «Добавить логи с шилдинга источника». Поставьте галочку, если хотите получать логи не только с CDN-серверов, но и с прекеш-сервера шилдинга.
3. Выберите способ получения логов — FTP или SFTP.
4. Укажите имя хоста — это имя, которое идентифицирует сервер хранилища в сети и заменяет IP-адрес. Дополнительно можно указать порт подключения к FTP/SFTP-хранилищу через двоеточие после Hostname, например: sftp.hostname.ru:2200.
5. Укажите логин FTP/SFTP-хранилища.
6. Укажите пароль FTP/SFTP-хранилища.
7. Укажите папку для загрузки. Уточните у вашего провайдера SFTP-хранилища, создаётся ли по умолчанию корневая папка, куда будут вложены остальные папки для хранения контента. Если нет — оставьте поле пустым, если да — укажите папку.
8. Выберите, как выгружать логи: в одну папку для всех CDN-ресурсов или в разные папки для каждого CDN-ресурса. Затем укажите имя папки. Если указать имя несуществующей папки, логи будут выгружаться в корневую папку.
9. Нажмите Сохранить изменения.

Время и статус выгрузки логов
Логи выгружаются в конце каждого часа. Если настроите опцию Сырые логи в 00:30, первые логи придут в интервале между 00:45 и 01:00, следующие — между 01:45 и 02:00.
Если запросов к CDN-серверу не было, в хранилище выгрузится пустой лог (файл весом ±20 байт).
В личном кабинете можно увидеть статус работы Сырых логов:
- 
Ожидание — статус сохраняется после подключения к хранилищу до первой отправки логов.
 - 
ОК — логи доставлены хотя бы с одного CDN-сервера.
 - 
Ошибка — ошибка при подключении к хранилищу или логи не принимались в течение 24 часов.
 - 
Пауза — опция установлена на паузу.
 

Пример пути до лог-файла
s3://log-bucket-name/2019/08/20/15/nodename_primarycname.domain.ru_access.log.gzФормат лога
"$remote_addr" "-" "$remote_user" "[$time_local]" "$request" "$status" "$body_bytes_sent" "$http_referer" "$http_user_agent" "$bytes_sent" 
"$edgename" "$scheme""$host" "$request_time" "$upstream_response_time" "$request_length" "$http_range" "[$responding_node]" 
"$upstream_cache_status" "$upstream_response_length" "$upstream_addr" "$gcdn_api_client_id" "$gcdn_api_resource_id" "$uid_got" "$uid_set" 
"$geoip_country_code" "$geoip_city" "$shield_type" "$server_addr" "$server_port" "$upstream_status" "-" "$upstream_connect_time" 
"$upstream_header_time" "$shard_addr" "$geoip2_data_asnumber" "$connection" "$connection_requests" "$request_id" "$http_x_forwarded_proto" 
"$http_x_forwarded_request_id" "$ssl_cipher" "$ssl_session_id" "$ssl_session_reused" "$sent_http_content_type" "$real_tcpinfo_rtt" 
"$http_x_forwarded_http_ver" "$vp_enabled" "$geoip2_region"Если увидите в логе дополнительные поля, которые не указаны выше, не удивляйтесь: периодически мы добавляем новые. И всегда рассказываем о них в email-рассылке. Новые поля добавляем в конец строки.
Пример лога
"0.0.0.0" "-" "-" "[26/Apr/2019:09:47:40 +0000]" "GET /ContentCommon/images/image.png HTTP/1.1" "200" "1514283" "https://example.com/videos/10" 
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 YaBrowser/16.10.0.2309 Safari/537.36" 
"1514848" "[dh-up-gc18]" "https" "cdn.example.com" "1.500" "0.445" "157" "bytes=0-1901653" "[dh]" "MISS" "10485760" "0.0.0.0:80" "2510" "7399" "-" 
"-" "KZ" "-" "shield_no" "0.0.0.0" "80" "206" "-" "0.000" "0.200" "0.0.0.0" "asnumber" "106980391" "1" "c1c0f12ab35b7cccccd5dc0a454879c5" "-" "-" 
"ECDHE-RSA-AES256-GCM-SHA384" "28a4184139cb43cdc79006cf2d1a4ac93bdc****" "r" "application/json" "11863" "HTTP/1.1" "1" "AMU"Переменные лога
Не все переменные важны. Некоторые из них относятся к внутренней системе нашего CDN и не несут ценной информации для клиентского анализа. В таблице ниже мы пометили системные переменные курсивом. Все остальные переменные могут пригодиться при анализе трафика или сбора статистики.
| 
 Переменная  | 
 Значение из примера  | 
 Пояснение  | 
| 
 $remote_addr  | 
 0.0.0.0  | 
 IP пользователя.  | 
| 
 -  | 
 -  | 
 Поле не используется.  | 
| 
 $remote_user (внутренняя системная переменная)  | 
 -  | 
 Имя пользователя, использованное в Basic-аутентификации.  | 
| 
 [$time_local]  | 
 [26/Apr/2019:09:47:40 +0000]  | 
 Локальное время в Common Log Format.  | 
| 
 $request  | 
 GET /ContentCommon/images/image.png HTTP/1.1  | 
 Тип HTTP-запроса, запрошенный путь к файлу, версия HTTP.  | 
| 
 $status  | 
 200  | 
 Код ответа от CDN-сервера.  | 
| 
 $body_bytes_sent  | 
 1514283  | 
 Число байт, переданное клиенту, без учёта заголовка ответа.  | 
| 
 $http_referer  | 
 https://example.com/videos/10  | 
 Реферал: с какого URL пришел пользователь.  | 
| 
 $http_user_agent  | 
 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1)  | 
 User Agent, с которым обратился пользователь  | 
| 
 $bytes_sent  | 
 1514848  | 
 Число байт, переданное пользователю.  | 
| 
 [$edgename]  | 
 [dh-up-gc18]  | 
 Имя ответившего CDN-сервера в нашей системе.  | 
| 
 $scheme  | 
 https  | 
 Протокол запроса (http или https).  | 
| 
 $host  | 
 cdn.example.com  | 
 Персональный домен CDN-ресурса.  | 
| 
 $request_time  | 
 1.500  | 
 Время обработки запроса, прошедшее с момента чтения первых байт от клиента  | 
| 
 $upstream_response_time  | 
 0.445  | 
 Время, затраченное на получение ответа от источника,  | 
| 
 $request_length  | 
 157  | 
 Длина запроса (включая строку, заголовок и тело запроса).  | 
| 
 $http_range  | 
 bytes=0-1901653  | 
 Размер фрагмента файла при Range-запросе.  | 
| 
 [$responding_node]  | 
 dh  | 
 Имя ответившего дата-центра в нашей системе.  | 
| 
 $upstream_cache_status  | 
 MISS  | 
 Статус запрошенного файла в кеше CDN: BYPASS — при первом запросе файла после очистки кеша.  | 
| 
 $upstream_response_length  | 
 10485760  | 
 Длина ответа, полученная от источника, хранится в байтах.  | 
| 
 $upstream_addr  | 
 0.0.0.0:80  | 
 IP-адрес источника и порт.  | 
| 
 $gcdn_api_client_id (внутренняя системная переменная)  | 
 123  | 
 Ваш ID в системе.  | 
| 
 $gcdn_api_resource_id  | 
 01  | 
 ID вашего CDN-ресурса в системе.  | 
| 
 $uid_got (внутренняя системная переменная)  | 
 -  | 
 Имя Cookie и полученный идентификатор пользователя.  | 
| 
 $uid_set (внутренняя системная переменная)  | 
 -  | 
 Имя Cookie и выданный идентификатор пользователя.  | 
| 
 $geoip_country_code  | 
 KZ  | 
 Код страны пользователя.  | 
| 
 $geoip_city  | 
 -  | 
 Код города пользователя.  | 
| 
 $shield_type (внутренняя системная переменная)  | 
 shield_no  | 
 Подключён ли шилдинг на этом ресурсе: shield_old — включён,  | 
| 
 $server_addr (внутренняя системная переменная)  | 
 0.0.0.0  | 
 IP -адрес ответившей anycast-зоны или CDN-сервера.  | 
| 
 $server_port (внутренняя системная переменная)  | 
 80  | 
 Порт, на который пришел запрос.  | 
| 
 $upstream_status  | 
 206  | 
 Код ответа от источника.  | 
| 
 -  | 
 -  | 
 Поле не используется.  | 
| 
 $upstream_connect_time  | 
 0.000  | 
 Время, затраченное подключение к источнику,  | 
| 
 $upstream_header_time  | 
 0.200  | 
 Время, затраченное на получение заголовков  | 
| 
 $shard_addr (внутренняя системная переменная)  | 
 0.0.0.0  | 
 IP-адрес CDN-сервера, который изначально  | 
| 
 $geoip2_data_asnumber  | 
 asnumber  | 
 Номер автономной системы,  | 
| 
 $connection (внутренняя системная переменная)  | 
 2897494295  | 
 Порядковый номер соединения.  | 
| 
 $connection_requests (внутренняя системная переменная)  | 
 1  | 
 Текущее число запросов в соединении.  | 
| 
 $request_id  | 
 c1c0f12ab35b7cccccd5dc0a454879c5  | 
 Уникальный идентификатор запроса,  | 
| 
 $http_x_forwarded_proto  | 
 -  | 
 Изначальный протокол входящего запроса (http или https).  | 
| 
 $http_x_forwarded_request_id  | 
 -  | 
 Изначальный ID входящего запроса.  | 
| 
 $ssl_cipher (внутренняя системная переменная)  | 
 ECDHE-RSA-AES256-GCM-SHA384  | 
 Название используемого шифра  | 
| 
 $ssl_session_id  | 
 28a4184139cb43cdc79006cf2d1a4ac93bdc****  | 
 Идентификатор сессии  | 
| 
 $ssl_session_reused  | 
 r  | 
 Возвращает «r», если сессия была использована повторно,  | 
| 
 $sent_http_content_type  | 
 application/json  | 
 Значение HTTP-заголовка Content-Type,  | 
| 
 $real_tcpinfo_rtt  | 
 11863  | 
 Среднее время (задержка), которое необходимо  | 
| 
 $http_x_forwarded_http_ver  | 
 HTTP/1.1  | 
 Версия HTTP в запросе пользователя.  | 
| 
 $vp_enabled  | 
 1  | 
 Флаг определяет, включён ли на ресурсе функционал 1 — включён,  | 
| $geoip2_region | 
 AMU  | 
 Название региона по стандарту ISO 3166-2.  |