Проблемы соединения с приемником Serilog + ElasticSearch (ядро .net) - PullRequest
0 голосов
/ 21 февраля 2019

Я получил Serilog, записывающий в скользящий файл, и начал реализовывать соединение с экземпляром ElasticSearch на основе Docker.Однако у меня проблемы с подключением.

Для начала, мое приложение работает локально, и есть два больших приема:

  • Я могу получить сервис Elastic с моей машины elastic server
  • Кибана показывает, что моя служба создала индекс с указанным мною именем Kibana dashboard

Однако, когда я смотрю на вывод Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));,Я вижу, что есть какая-то проблема соединения с Elastic:

Поймано исключение при предварительном выполнении массовых операций для Elasticsearch: Elasticsearch.Net.ElasticsearchClientException: максимальное время ожидания достигнуто при повторной попытке запроса

debug output

Мой appsettings.json (да, я настраиваю с помощью json, а не кода):

"Serilog": {
    "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.ElasticSearch"],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": ["FromLogContext", "WithExceptionDetails"],
    "WriteTo": [
      { "Name": "Console" },
      { "Name": "Debug" },
      {
        "Name": "File",
        "Args": {
          "path": "%LogDir%\\someserverpath.xyz.com\\log-.txt",
          "rollingInterval": "Day",
          "shared": true
        }
      },
      {
        "Name":  "Elasticsearch",
        "Args": {
          "nodeUris": "http://sxdockertst1:9200",
          "indexFormat": "imaging4cast-index-{0:yyyy.MM}",
          "emitEventFailure": "WriteToSelfLog",
          "autoRegisterTemplate": true
        } 
      }
    ],
    "Properties": {
      "Application":  "xyz.yyy.Imaging4CastApi" 
    } 
  },

Мне кажется, что он получает элементарное соединение, потому что,в противном случае, как еще индекс был бы создан?На эластичном сервере тоже нет аутентификации.Но на самом деле отправка сообщения журнала не работает ...

Я в растерянности ...

1 Ответ

0 голосов
/ 22 февраля 2019

Хорошо, я понял это.

Причина, по которой сообщения не отправлялись, заключалась в том, что жесткий диск (технически, var на хосте докера) был переполнен.Мне пришлось очистить около 15 ГБ журналов и сообщений в var.

Затем мне нужно было запустить эту команду, чтобы вывести Elastic из режима «Только чтение» (я быстро столкнулся с проблемой, когда не могсоздали индексы в Кибане для панели мониторинга, и это произошло из-за того, что Elastic перешел в режим RO):

curl -XPUT -H "Content-Type: application/json" http://sxdockertst1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
...