#google-cloud-platform #google-cloud-sql #audit-logging
#google-облачная платформа #google-cloud-sql #аудит-ведение журнала
Вопрос:
Я включил ведение журнала в своей базе данных GCP PostgreSQL 11 Cloud SQL. Журналы перенаправляются в корзину в том же проекте, и они представлены в формате JSON.
Журналы содержат запросы, которые были выполнены в базе данных. Есть ли способ создать достойный отчет из этих журналов JSON с несколькими полями из записей журнала? В настоящее время файлы журналов находятся в формате JSON и не очень удобны для чтения.
Кроме того, если выполняется многострочный запрос, для этого запроса создается столько записей журнала. Если есть также способ распознавать журналы, которые принадлежат одному и тому же запросу, это тоже будет полезно!
Комментарии:
1. Теоретически это похоже на преобразование NoSQL в SQL — иногда возможно, иногда нет… Можете ли вы показать примеры журналов?
Ответ №1:
Я думаю, что самый простой способ — использовать BigQuery.
BigQuery правильно импортирует эти файлы jsonl и назначит правильные имена полей для данных json
Когда у вас есть многострочные запросы, вы увидите, что они отображаются в виде нескольких записей журнала в файлах json.
Похоже, что все записи из многострочного запроса имеют одинаковую метку времени получения (что имеет смысл, поскольку они были созданы в одно и то же время).
Кроме того, поле insertId имеет подполе ‘s = xxxx’, которое не изменяется для строк в том же операторе. Например:
insertId: "s=6657e04f732a4f45a107bc2b56ae428c;i=1d4598;b=c09b782e120c4f1f983cec0993fdb866;m=c4ae690400;t=5b1b334351733;x=ccf0744974395562-0@a1"
Стратегия извлечения этих операторов в правильном порядке строк:
- Сортировка по полю ‘s’ в insertId
- Затем отсортируйте по возрастанию метки времени получения (чтобы все строки сразу отправлялись агенту системного журнала в службе cloudsql)
- И, наконец, отсортируйте по возрастанию временной метки (чтобы правильно упорядочить строки)