scollector - пометка метрик из сферы

Просто вопрос о пометке scollector. У меня есть файл конфигурации, который выглядит так:

Host = "bosun01:80"
BatchSize = 5000

[Tags]
  customer = "Admin"
  environment = "bosun"
  datacenter = "SITE1"

[[Vsphere]]
  Host = "CUST2SITE1VC01.F.Q.D.N"
  User = "user"
  Password = "pass"

[[Vsphere]]
  Host = "CUST3SITE1VC01.F.Q.D.N"
  User = "user"
  Password = "pass"

[[Vsphere]]
  Host = "CUST4SITE1VC01.F.Q.D.N"
  User = "user"
  Password = "pass"

[[Vsphere]]
  Host = "CUST4SITE2VC01.F.Q.D.N"
  User = "user"
  Password = "pass"

[[TagOverride]]
  CollectorExpr = "Vsphere"
    [TagOverride.MatchedTags]
      Host = '^(?P<customer>.{5})(?P<datacenter>.{5})(?P<environment>)\.[.]+'

идея заключается в том, что мы можем извлекать и маркировать данные с разных серверов vsphere.

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

Однако, когда я реализую это, я замечаю, что эти метрики приходят с исходным тегом среды "bosun", а не с применяемым переопределением.

Я попробовал альтернативный конфиг:

Host = "bosun01:80"
BatchSize = 5000

[Tags]
  customer = "Admin"
  environment = "bosun"
  datacenter = "SITE1"

[[Vsphere]]
  Host = "CUST2SITE1VC01.F.Q.D.N"
  User = "user"
  Password = "pass"
  [[TagOverride]]
    [TagOverride.Tags]
      environment = "Env01"

[[Vsphere]]
  Host = "CUST3SITE1VC01.F.Q.D.N"
  User = "user"
  Password = "pass"
  [[TagOverride]]
    [TagOverride.Tags]
      environment = "Env02"


[[Vsphere]]
  Host = "CUST4SITE1VC01.F.Q.D.N"
  User = "user"
  Password = "pass"
  [[TagOverride]]
    [TagOverride.Tags]
      environment = "Env03"


[[Vsphere]]
  Host = "CUST4SITE2VC01.F.Q.D.N"
  User = "user"
  Password = "pass"
  [[TagOverride]]
    [TagOverride.Tags]
      environment = "Env04"

Но я вижу похожее поведение (последний тег окружения применяется ко всем данным vpshere), поэтому я не совсем уверен, где я ошибаюсь.

Может ли кто-нибудь помочь мне понять, где я иду не так?

Обновить

В соответствии с ответом Грега ниже, моя проблема заключалась в том, что у меня не совсем подходил CollectorExpr.

С помощью scollector -l я смог придумать правильный CollectorExpr.

# ./scollector-linux-amd64 -l | grep vsphere
vsphere-CUST1-SITE1-MGMTVC01
vsphere-CUST1-SITE2-MGMTVC01
vsphere-CUST1-SITE1-CLIVC01
vsphere-CUST1-SITE2-CLIVC01
#

Наш конфиг (для тех, кто ищет примеры) закончился примерно так:

Host = "hwbosun01:80"
BatchSize = 5000

[Tags]
  customer = "Customer1"
  environment = "bosun"
  datacenter = "eq"

[[Vsphere]]
  Host = "CUST1-SITE1-MGMTVC01"
  User = "user"
  Password = "pass"

[[Vsphere]]
  Host = "CUST1-SITE2-MGMTVC01"
  User = "user"
  Password = "pass"

[[Vsphere]]
  Host = "CUST1-SITE1-CLIVVC01"
  User = "user"
  Password = "pass"

[[Vsphere]]
  Host = "CUST-SITE1-CLIVVC01"
  User = "user"
  Password = "pass"

[[TagOverride]]
  CollectorExpr = "CUST-SITE1-MGMTVC01"
    [TagOverride.Tags]
      environment = "vsphere.mgmt"
      datacenter = 'site1'

[[TagOverride]]
  CollectorExpr = "CUST-SITE1-MGMTVC01"
    [TagOverride.Tags]
      environment = "vsphere.mgmt"
      datacenter = 'site2'

[[TagOverride]]
  CollectorExpr = "CUST-SITE1-CLIVC01"
    [TagOverride.Tags]
      environment = "vsphere.mgmt"
      datacenter = 'site1'

[[TagOverride]]
  CollectorExpr = "CUST-SITE1-CLIVC01"
    [TagOverride.Tags]
      environment = "vsphere.mgmt"
      datacenter = 'site2' 

1 ответ

Решение

Я считаю, что CollectorExpr - это регулярное выражение, которое должно соответствовать выводу scollector -l или значения тега коллектора, используемые в scollector.collector.duration Метрика. Наши экземпляры vsphere получают значения тегов vsphere-ny-vsphere02 для ny-vsphere02 и vsphere-nyhq-vsphere01 для nyhq-vsphere01. Следующие параметры должны соответствовать этим именам сборщика:

[[TagOverride]]
  CollectorExpr = "vsphere-ny-"
    [TagOverride.Tags]
      datacenter = 'ny'

[[TagOverride]]
  CollectorExpr = "vsphere-nyhq-"
    [TagOverride.Tags]
      datacenter = 'nyhq'

С помощью [TagOverride.MatchedTags] вместо [TagOverride.Tags] должно работать для извлечения значения из имени хоста, но имейте в виду, что все имена хостов усекаются до их короткого имени (без полного доменного имени), если только вы не установите FullHost = true в файле scollector.toml. Я предполагаю, что ваши настройки не работают, потому что CollectorExpr неверен. Попробуйте что-то вроде:

[[TagOverride]]
  CollectorExpr = "vsphere-"
    [TagOverride.MatchedTags]
      Host = '^(?P<customer>.{5})(?P<datacenter>.{5})(?P<environment>[^.]+)'

Если это не сработает, попробуйте использовать '[TagOverride.Tags]' в среде разработчика, чтобы посмотреть, можете ли вы добавить тестовые теги / значения к этим метрикам.

Другие вопросы по тегам