Amazon CloudFront
Amazon CloudFront може надсилати свої журнали доступу до потоку Amazon Data Firehose, а Firehose може пересилати їх до Ahrefs через HTTPS. Ви створюєте потік і вмикаєте доставку логів у власному обліковому записі AWS через консоль AWS; Ahrefs ніколи не потребує доступу до нього.
Передумови
- Дистрибутив CloudFront, що обслуговує домен вашого проєкту Ahrefs.
- Дозволи в цьому обліковому записі AWS на створення потоку Firehose, бакета S3 та ролі IAM, а також на редагування налаштувань логування дистрибутива.
- Потік Firehose потрібно створити в регіоні US East (N. Virginia)
us-east-1. CloudFront доставляє логи Standard до потоків Firehose лише в цьому регіоні — незалежно від того, у якому регіоні розміщене ваше джерело.
Крок 1 — Отримайте URL кінцевої точки та ключ доступу
- В Ahrefs перейдіть у Налаштування проєкту → Bot Analytics для вашого проєкту.
- Виберіть Amazon CloudFront.
- Скопіюйте URL HTTP кінцевої точки та ключ доступу, показані на сторінці. Ключ доступу ідентифікує ваш проєкт; ставтеся до нього як до пароля.
URL кінцевої точки однаковий для всіх:
https://analytics.ahrefs.com/api/aws_firehose/logs
Крок 2 — Створіть потік Firehose
У консолі AWS перемкніться на регіон US East (N. Virginia), відкрийте Amazon Data Firehose і натисніть Створити потік Firehose.
Виберіть джерело та призначення
Установіть для Джерела значення Direct PUT, а для Призначення — Кінцева точка HTTP, потім задайте назву потоку, наприклад ahrefs-bot-analytics. Після створення потоку джерело та призначення змінити не можна. Залиште розділ Перетворення записів без змін.
Налаштування призначення
- Назва HTTP кінцевої точки:
Ahrefs Bot Analytics - URL HTTP кінцевої точки: URL з кроку 1
- Автентифікація: Використовувати ключ доступу; вставте ключ доступу з кроку 1 у поле Ключ доступу
- Кодування контенту: GZIP
- Тривалість повторних спроб:
300секунд - Параметри: залиште порожніми
- Підказки щодо буферизації: залиште значення за замовчуванням
warning
Ключ доступу — єдине, що прив’язує потік до вашого проєкту Ahrefs. Кожному проєкту Ahrefs потрібен власний потік Firehose зі своїм ключем доступу; кілька дистрибутивів, що обслуговують один і той самий проєкт, можуть використовувати один спільний потік.
Налаштування резервного копіювання
У розділі Резервне копіювання вихідних записів в Amazon S3 виберіть Лише дані з помилками, потім натисніть Огляд, щоб вибрати наявний бакет S3, або Створити, щоб створити новий. Firehose записує туди будь-який пакет даних, який Ahrefs не зміг прийняти, разом із причиною, тож цей бакет — перше місце, куди варто заглянути під час усунення несправностей.
Додаткові налаштування
Розгорніть Налаштування Advanced, установіть для Журналювання помилок Amazon CloudWatch значення Увімкнено, а в розділі Дозволи дозвольте консолі створити нову роль IAM. Натисніть Створити потік Firehose і зачекайте, доки статус потоку стане Активний.
Крок 3 — Надсилайте логи CloudFront у потік
- У консолі CloudFront відкрийте Дистрибутиви і виберіть свій дистрибутив.
- На вкладці Журналювання у розділі Призначення логів Standard натисніть Додати.
- На сторінці Додати призначення логів доступу установіть для Доставляти до значення Amazon Kinesis Data Firehose і виберіть свій потік у полі Потік призначення.
- Розгорніть Додаткові налаштування:
- Вибір полів: виберіть поля, наведені в розділі Поля журналу. Також можна залишити вибраними всі 33 поля.
- Формат виводу: JSON. Інші формати не приймаються.
- Натисніть Надіслати. CloudFront застосовує зміни журналювання протягом кількох хвилин.
Поля журналу
Ahrefs потрібні мітка часу, c-ip, x-host-header, cs-uri-stem і cs(User-Agent). Рекомендований вибір:
timestamp(ms) date time c-ip x-forwarded-for cs-method x-host-header cs-protocol
cs-protocol-version cs-uri-stem cs-uri-query cs(User-Agent) cs(Referer) sc-status sc-bytes
sc-content-type time-to-first-byte time-taken x-edge-result-type x-edge-request-id
x-edge-location c-country asn
timestamp(ms), c-country і asn входять до підмножини реального часу в засобі вибору полів. Вони необов’язкові: без timestamp(ms) Ahrefs використовує date і time з точністю до однієї секунди.
Крок 4 — Перевірка
CloudFront доставляє журнали Standard пакетами, зазвичай протягом години після запитів і стабільно приблизно через чотири години після ввімкнення журналювання. Потім Firehose пересилає кожен пакет у межах свого буферного інтервалу.
- У консолі Firehose на вкладці потоку Моніторинг відображаються
IncomingRecords, щойно CloudFront починає доставляти дані, іDeliveryToHttpEndpoint.Success, щойно Ahrefs приймає пакети. - В Ahrefs звіт Bot Analytics заповнюється, коли боти відвідують ваш сайт.
Усунення несправностей
Якщо доставка не вдається, Firehose повторює спроби протягом періоду повторних спроб, а потім записує пакет у ваш резервний бакет під префіксом http-endpoint-failed/ разом із повідомленням про помилку, яке повертає Ahrefs. Те саме повідомлення з’являється на вкладці потоку Журнали помилок призначення.
| Повідомлення про помилку | Причина |
|---|---|
missing authentication header | Поле ключа доступу в місці призначення Firehose порожнє. |
invalid authentication | Ключ доступу не відповідає проєкту Ahrefs. Скопіюйте його ще раз із Кроку 1. |
records are not JSON: configure CloudFront standard logging (v2) with output format JSON | Формат виводу доставки — не JSON, або потік отримує журнали CloudFront у режимі реального часу. Підтримуються лише журнали Standard у форматі JSON. |
Response … must contain a 'content-type: application/json' header … 404 | URL кінцевої точки написано з помилкою. Порівняйте його з URL у Кроці 1. |
Вимкнення
- У консолі CloudFront на вкладці дистрибутива Журналювання виберіть місце призначення Firehose та видаліть його. Це зупинить доставку журналів.
- Видаліть потік Firehose і резервний бакет, якщо він вам більше не потрібен.
- В Ahrefs вимкніть Amazon CloudFront у розділі Налаштування проєкту → Bot Analytics.
Видалення місця призначення залишає джерело доставки дистрибутива в CloudWatch Logs. Це нешкідливо, і його буде повторно використано, якщо ви знову ввімкнете журналювання.
info
Журнали CloudFront у режимі реального часу (які доставляються через Kinesis Data Streams) не підтримуються. Використовуйте журналювання Standard (v2) з виводом у форматі JSON, як описано вище.