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

Я добавил подключаемый модуль JVM Monitoring, как описано здесь

Все это отлично работает, и я могу, но теперь я хотел бы добавить больше показателей JMX. например Счетчики, специфичные для MemoryPool Итак, я добавил эту конфигурацию в /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, она отклоняется.

012    {#012      "index": 261,#012      "valueErrors": [#012        {#012          "error": {#012            "code": 3,#012            "message": "Unsupported
 collectd id: plugin: \"jvm\" type: \"gauge\" type_instance: \"memorypool-usagecommitted\""#012          }#012        }#012      ]#012    },#012    {#012
"index": 262,#012      "valueErrors": [#012        {#012          "error": {#012            "code": 3,#012            "message": "Unsupported collectd id: plug
in: \"jvm\" type: \"gauge\" type_instance: \"memorypool-usageinit\""#012          }#012        }#012      ]#012    },#012    {#012      "index": 263,#012
"valueErrors": [#012        {#012          "error": {#012            "code": 3,#012            "message": "Unsupported collectd id: plugin: \"jvm\" type: \"gau
ge\" type_instance: \"memorypool-usagemax\""#012          }#012        }#012      ]#012    },#012    {#012      "index": 264,#012      "valueErrors": [#012
    {#012          "error": {#012            "code": 3,#012            "message": "Unsupported

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

например как os-open_fd_count отображается на os/open_files?

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

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

я пробовал

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

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

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


person user3045844    schedule 16.06.2020    source источник


Ответы (2)


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

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

person Shafiq I    schedule 17.06.2020
comment
Спасибо @ shafiq-i, на самом деле ведение журнала было не таким полезным, как остальная часть связанной страницы. Я не уверен, как я пропустил эту страницу, когда пытался заставить ее работать раньше. Главное - переписать сообщение, включив метаданные stackdriver_metric_type. Это очень многословно, но я, по крайней мере, заставил его работать. Я добавлю ответ с моей конфигурацией для моего исходного сообщения. - person user3045844; 17.06.2020
comment
Можете ли вы предоставить файл jvm-sun-hotspot, который вы использовали? Столкнулся с той же проблемой - person Jagadheeswaran Mohan; 20.11.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), поэтому я скопировал его в метку «пул».

Это автоматически создало метрику в 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"
  ]
}

Результирующий график в обозревателе показателей выглядит следующим образом:  график метрического обозревателя использования пула памяти

person user3045844    schedule 17.06.2020