Добавление пользовательских метрик jmx в конфигурацию Google Cloud Monitoring collectd - PullRequest
0 голосов
/ 16 июня 2020

Я добавил плагин JVM Monitoring, как описано здесь

Все работает отлично, и я могу, но теперь я хотел бы добавить больше показателей JMX. например, MemoryPool указывает счетчики c Итак, я добавил эту конфигурацию в /opt/stackdriver/collectd/etc/collectd.d/jvm-sun-hotspot.conf

<MBean "jvm_localhost_MemoryPool">
    ObjectName "java.lang:type=MemoryPool,name=*"
    InstanceFrom "name"
    <Value>
        Type "gauge"
        InstancePrefix "memorypool-usage_used"
        Table false
        Attribute "Usage.used"
    </Value>
</MBean>

и

Collect "jvm_localhost_MemoryPool"

в разделе Connection

Это кажется действительной конфигурацией collectd, но когда она отправляется в Stackdriver / Google Cloud Monitoring, она отклоняется. 1018 * этот документ предполагает, что он будет создан автоматически. И действительно, когда я смотрю на список встроенных метрик jvm , я не вижу, как они сопоставляются с существующими в конфигурации collectd.

например, как os-open_fd_count сопоставляется с os/open_files?

Было бы полезно увидеть фактический запрос api, отправленный кастомной реализацией collectd от Google , но я не вижу способа увеличить ведение журнала.

Из этого сообщения я вижу, что это, вероятно, пользовательские метрики, в которых я хочу искать, но как мне это сделать в конфигурации collectd?

Я пробовал

InstancePrefix "custom.googleapis.com/memorypool-usage"

но все равно без радости.

Кто-нибудь делал это раньше или может предложить какие-то предложения, что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Чтобы получить этот журнал, мне нужно было добавить stackdriver_metric_type метаданные.

Полная цепочка теперь

<Chain "GenericJMX_jvm">
    <Rule "rewrite_custom_jmx">
        <Match regex>
            Plugin "^GenericJMX$"
            PluginInstance "^jvm.*$"
            TypeInstance "^memorypool-usage_used$"
        </Match>
        <Target "set">
            MetaData "stackdriver_metric_type" "custom.googleapis.com/jvm/memorypool/usage_used"
            MetaData "label:pool" "%{plugin_instance}"
        </Target>
        <Target "replace">
            MetaData "label:pool" "jvm" ""
        </Target>
    </Rule>
    <Rule "rewrite_genericjmx_to_jvm">
        <Match regex>
            Plugin "^GenericJMX$"
            PluginInstance "^jvm.*$"
        </Match>
        <Target "replace">
            PluginInstance "jvm" ""
        </Target>
        <Target "set">
            Plugin "jvm"
        </Target>
        Target "return"
    </Rule>
</Chain>

Экземпляр плагина - это имя пула (например, G1 Eden Space), которое вот почему я скопировал его в метку «пул».

Это автоматически создало метрику c в Stackdriver, но я также использовал следующее тело в projects.metricDescriptors.create метод добавления описания и единиц измерения.

{
  "name": "projects/yourprojecthere/metricDescriptors/custom.googleapis.com/jvm/memorypool/usage_used",
  "labels": [
    {
      "key": "pool",
      "description": "Name of the JVM memory pool."
    }
  ],
  "metricKind": "GAUGE",
  "valueType": "DOUBLE",
  "unit": "By",
  "description": "Current size in bytes of the memory pool.",
  "type": "custom.googleapis.com/jvm/memorypool/usage_used",
  "monitoredResourceTypes": [
    "gce_instance"
  ]
}

Результирующий график в метри c проводнике выглядит следующим образом metric explorer graph of memory pool usage

0 голосов
/ 17 июня 2020

Документы по устранению неполадок [1] ​​могут быть полезны для определения того, какие точки необходимо преобразовать, а также для обеспечения ожидаемого поведения преобразований.

[1] https://cloud.google.com/monitoring/agent/custom-metrics-agent#troubleshooting

...