Я оцениваю подходы к сценарию, в котором мне нужно получить список журналов из Stackdriver. Может быть несколько критериев фильтрации (например, полезная нагрузка содержит слово «повторить» журналов типа «Предупреждение» ...)
С помощью gcp sdk я смог запросить stackdriver, но не уверен, насколько эффективен этот подход. Пожалуйста, предложите другие подходы, в которых я могу использовать эластичный поисковый клиент для запроса stackdrive и списка соответствующих журналов.
Похоже, у вас есть несколько наборов журналов, которые вы хотите использовать по отдельности, и каждый из этих наборов журналов можно описать с помощью фильтра Stackdriver. Это хорошее начало, поскольку использование фильтров для Stackdriver — эффективный способ сортировки данных. И вы правы, что запускать один и тот же фильтр против Stackdriver снова и снова было бы довольно неэффективно.
В следующем подходе используются приемники журналов Stackdriver, и именно так мы управляем журналами в нашей учетной записи GCP. Наша группа мониторинга очень довольна им, и его легко поддерживать.
Вы можете ознакомиться с приемниками журналов здесь и агрегированными приемниками журналов здесь.
Общая идея состоит в том, чтобы Google автоматически фильтровал и экспортировал журналы для вас, используя несколько приемников журналов (по одному на фильтр). Местом назначения экспорта может быть Google Storage, BigQuery или Pub/Sub. Каждый приемник должен экспортироваться в другое место и будет делать это постоянно, пока существует приемник. Кроме того, приемники журналов можно настроить для каждого проекта или на уровне организации (где он может наследовать все проекты ниже).
Например, предположим, что вы хотите настроить три приемника журналов. Каждый приемник использует другой фильтр и другое место экспорта (но все в одно и то же ведро):
Как только это настроено, SDK вашего кода может просто получить доступ к каждому местоположению в зависимости от того, какие журналы ему нужны в данный момент. Это устраняет необходимость в том, чтобы ваш код выполнял фильтрацию, поскольку Google уже обработал ее для вас в фоновом режиме.
Следует отметить одну вещь: экспорт журналов в BigQuery и Pub/Sub происходит мгновенно, но экспорт в Google Storage происходит в начале каждого часа. Поэтому, если вам нужно быстро обрабатывать журналы, избегайте Google Storage и используйте либо BigQuery, либо Pub/Sub.
Надеюсь это поможет!
Приемники журналов бесплатны и просты в настройке (особенно с Terraform), поэтому количество приемников не должно вызывать затруднений. И если вы хотите запросить SQL-подобное хранилище для журналов, то BigQuery — это то место, куда вы хотите экспортировать приемники журналов. Но если вам нужна простота, то минимально жизнеспособной конфигурацией будет наличие одного приемника журналов (с простым фильтром для захвата всех нужных вам журналов), экспорт журналов в BigQuery, где вы можете затем фильтровать их с помощью SQL. в вашем коде.
Как сказал @Himal, вы можете экспортировать журналы Stackdriver в BigQuery через приемник журналов. Затем вы можете фильтровать и анализировать свои журналы в BigQuery, используя стандартный SQL.
@vdenotaris Мне приходится обрабатывать несколько журналов проектов GCP, не уверен, что приемники будут работать в разных проектах.
@Темный рыцарь. Они работают над проектами. Просто настройте один приемник на уровне организации, который будет включать дочерние элементы, и он будет отслеживать журналы всех ваших проектов. Ссылка «агрегированные приемники журналов» в моем ответе описывает, как их настроить. Одна раковина, чтобы управлять ими всеми.
Удачи! Возвращайтесь сюда, если у вас возникнут какие-либо проблемы.
Подход к использованию Sink потрясающий. Однако меня беспокоит то, что количество раковин в моем случае будет порядка 10. Мое намерение состояло в том, чтобы запросить Stackdriver так же, как мы запрашиваем любую СУБД.