Pub / Sub для объединения шаблона потока данных — запрошенный URL-адрес не найден на этом сервере

#google-cloud-dataflow #google-cloud-pubsub #splunk

#google-cloud-dataflow #google-cloud-pubsub #splunk

Вопрос:

Я использую шаблон потока данных (я пробовал как latest и 2020-11-02-00_RC00 Cloud_PubSub_to_Splunk ), который передает данные из раздела pubsub в splunk. Я выполнил все шаги из документации.

Мои аргументы job были:

 JOB_NAME=pubsub-to-splunk-$USER-`date  "%Y%m%d-%H%M%S%z"`
gcloud dataflow jobs run $JOB_NAME 
    --subnetwork=https://www.googleapis.com/compute/v1/projects/<PROJECT>/regions/us-central1/subnetworks/<NAME> 
    --gcs-location gs://dataflow-templates/2020-11-02-00_RC00/Cloud_PubSub_to_Splunk 
    --max-workers 2 
    --parameters=inputSubscription="projects/<PROJECT>/subscriptions/logs-export-subscription",token="<TOKEN>",url="https://<URL>:8088/services/collector/event",outputDeadletterTopic="projects/<PROJECT>/topics/splunk-pubsub-deadletter",batchCount="10",parallelism="8",disableCertificateValidation=true
  

Я могу успешно запустить задание потока данных, и начнется потоковая передача, и я вижу количество нераспакованных сообщений с момента моего logs-export-subscription перехода, однако задание завершается неудачно при записи в Splunk со следующей ошибкой:

Ошибка записи в Splunk. StatusCode: 404, content: {«text»:»Запрошенный URL-адрес не найден на этом сервере.»,»code»: 404}, StatusMessage: Не найден

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

 curl -k https://<URL>:8088/services/collector/event -H "Authorization: Splunk <HEC TOKEN>" -d '{"event": {"field1": "hello", "field2": "world"}}'

{"text":"Success","code":0}
  

Итак, я не думаю, что это проблема с подключением или URL, как следует из сообщения об ошибке.

Я могу воспроизвести сбой с помощью curl при удалении -d ключа и значения.

 curl -k https://<IP>:8088/services/collector/event -H "Authorization: Splunk <TOKEN>" 

{"text":"The requested URL was not found on this server.","code":404}
  

Есть идеи, что может быть причиной этой проблемы?

Комментарии:

1. На самом деле, похоже, что Google com.google.cloud.teleport.splunk.HttpEventPublisher добавляет путь services/collector/event к IP и ПОРТУ.. Документы были запрошены your-splunk-hec-url , и поэтому я подумал, что для этого требуется полный путь.

2. Можете ли вы проверить свои custom.googleapis.com/dataflow/outbound-successful-events показатели в обозревателе показателей и поделиться ими? Кроме того, создали ли вы свою сеть VPC и правила брандмауэра, подобные описанным здесь ?

3. да, теперь я получаю успешные события, указанные outbound-successful-events … Я могу подтвердить, что проблема была url="https://<URL>:8088/services/collector/event" против url="https://<URL>:8088

4. Хорошо ! Это задокументировано здесь]( cloud.google.com/dataflow/docs/guides /… ), когда вы используете общий VPC, вы должны использовать полный URL-адрес. Чтобы внести дальнейший вклад в сообщество, я опубликую ответ в качестве вики сообщества, хорошо?

5. Исправление не было URL подсети. Он настраивал полный URL-адрес splunk только на IP-адрес splunk и порт

Ответ №1:

То Splunk HEC URL , что должно быть указано, должно быть только https://[IP]:8088 , а НЕ полным путем https://[IP]:8088/services/collector/event , поскольку путь добавляется библиотекой Google.

Ответ №2:

Спасибо, что сообщили об этом. Мы обновили документы с помощью примера, чтобы уточнить этот параметр. В частности, url параметр шаблона Splunk HEC выглядит следующим образом:

 <protocol>://<host>:<port>
  

Например: https://splunk-hec.example.com:8088 .
Хост — это ПОЛНОЕ ДОМЕННОЕ имя (или IP) либо экземпляра Splunk, на котором выполняется HEC (в случае одного экземпляра HEC), либо HTTP (ов) Балансировщик нагрузки перед уровнем HEC (в случае установки распределенного HEC).

Вы не указали полный путь к конечной точке HEC. Шаблон Splunk Dataflow в настоящее время поддерживает только конечную точку объекта HEC JSON (т.Е. services/collector/event ), и он автоматически добавляет его в исходящие HTTP-запросы.

Кроме того, для более глубокого погружения обязательно ознакомьтесь с этими новыми ресурсами: