【问题标题】:Stackdriver-agent didn't collect monitoring data (HitRate for KeyCache)Stackdriver-agent 没有收集监控数据(KeyCache 的 HitRate)
【发布时间】:2018-07-29 19:36:43
【问题描述】:

我正在 GCE VM 中配置 Stackdriver-agent 以监控 Cassandra 指标。 (基于 GCP 指南:https://cloud.google.com/monitoring/agent/plugins/cassandra

我使用了上面链接的默认设置,它们工作正常。 但是,我添加的一个指标不适用于以下错误。

我尝试了类型和值的计量器或计数器或属性的计数。但是,它们中的任何一个都不能很好地工作。

任何建议,请。

  • 错误

    2 月 19 日 23:14:08 pgxxxxxxx1 collectd[16917]:write_gcm:服务器响应 (CollectdTimeseriesRequest) 包含错误: { “有效载荷错误”:[ { “索引”:161, “价值错误”:[ { “错误”: { “代码”:3, "message": "不支持的 collectd id: plugin: \"cassandra\" type: \"gauge\" type_instance: \"cache_key_cache-hitrate\"" } } ] } ] }

配置(在指南中的原始配置中添加了 KeyCache-Hitrate 指标)

  • 连接部分:

    <Connection>
    # When using non-standard Cassandra configurations, replace the below with
    #ServiceURL "service:jmx:rmi:///jndi/rmi://CASSANDRA_HOST:CASSANDRA_PORT/jmxrmi"
    ServiceURL "service:jmx:rmi:///jndi/rmi://localhost:7199/jmxrmi"
    InstancePrefix "cassandra"
    User "cassandra"
    Password "xxxxxxxx"
    Collect "cassandra_storageservice-load"
    Collect "cassandra_Cache_KeyCache-Hits"
    Collect "cassandra_Cache_KeyCache-HitRate"   <===== Added line
    ...
    Collect "cassandra_DroppedMessage_MUTATION-Dropped"
    Collect "cassandra_DroppedMessage_READ-Dropped"
    

  • MBean 部分:

    <MBean "cassandra_Cache_KeyCache-HitRate">
        ObjectName "org.apache.cassandra.metrics:type=Cache,scope=KeyCache,name=HitRate"
        <Value>
            Type "gauge"
            InstancePrefix "cache_key_cache-hitrate"
            Table false
            Attribute "Value"
        </Value>
    </MBean>
    

我的环境 堆栈驱动程序代理 5.5.2-379.sdl.stretch 卡桑德拉 3.11.1

【问题讨论】:

  • 使用 sjk(瑞士 Java 刀)工具,我得到了以下结果,在我看来,属性应该是值。 $ java -jar sjk-0.9.2.jar mx -s localhost:7199 -b "org.apache.cassandra.metrics:name=HitRate,scope=KeyCache,type=Cache" -mi org.apache.cassandra.metrics: type=Cache,scope=KeyCache,name=HitRate org.apache.cassandra.metrics.CassandraMetricsRegistry$JmxGauge - MBean 的管理接口信息 (A) Value : java.lang.Object - 为管理公开的属性 (O) objectName () : javax.management.ObjectName - 为管理公开的操作
  • 目前似乎不支持许多指标。我尝试使用其他指标,但它们也因相同的错误而失败。应该尝试其他解决方案,如 datadog 或 prometheus... ref) cloud.google.com/monitoring/api/metrics_agent#agent-cassandra

标签: cassandra collectd google-cloud-stackdriver


【解决方案1】:

按照自定义指标指南,我可以解决我的问题。

  1. 创建自定义指标 按照这里的指南:https://cloud.google.com/monitoring/custom-metrics/creating-metrics#monitoring-create-metric-python (从自定义指标名称直到调用 create 方法。时间序列不是必需的)

还需要被授权才能访问监控。 (遵循 IAM 指南)。

  1. 配置cassandra插件(.conf文件) 此处指南:https://cloud.google.com/monitoring/agent/custom-metrics-agent (从顶部到加载新配置)

我的示例代码

  1. 创建自定义指标的代码 client_request_read-latency-1minrate.py

    从 google.cloud 导入监控

    client = 监控.Client() 描述符 = client.metric_descriptor( 'custom.googleapis.com/cassandra/client_request/latency/1minrate', metric_kind=monitoring.MetricKind.GAUGE, value_type=monitoring.ValueType.DOUBLE, labels=[monitoring.label.LabelDescriptor("操作", description="存储操作名称。")], description='Cassandra 读取 1 分钟的延迟率', display_name='读取延迟 1 分钟速率') 描述符.create()

  2. cassandra 插件示例 (在同一个配置文件中遵循 2-1 和 2-2) 2-1。 cassandra 插件示例第 1 部分 在

     <MBean "cassandra_custom_ClientRequest_Read-Latency">
         ObjectName "org.apache.cassandra.metrics:type=ClientRequest,scope=Read,name=Latency"
         <Value>
             Type "gauge"
             InstancePrefix "client_request_read-latency-1minrate"
             Table false
             Attribute "OneMinuteRate"
         </Value>
     </MBean>
    
    <Connection>
        # When using non-standard Cassandra configurations, replace the below with
        #ServiceURL "service:jmx:rmi:///jndi/rmi://CASSANDRA_HOST:CASSANDRA_PORT/jmxrmi"
        ServiceURL "service:jmx:rmi:///jndi/rmi://localhost:7199/jmxrmi"
        InstancePrefix "cassandra_custom"
        User "cassandra user name"
        Password "your password"
    
        Collect "cassandra_custom_ClientRequest_Read-Latency"
    </Connection>
    

2-2。 cassandra 插件示例第 2 部分

<Chain "GenericJMX_cassandra_custom">
    <Rule "rewrite_genericjmx_to_cassandra_custom">
        <Match regex>
            Plugin "^GenericJMX$"
            PluginInstance "^cassandra_custom.*$"
        </Match>
        <Target "set">
            MetaData "stackdriver_metric_type" "custom.googleapis.com/cassandra/client_request/latency/1minrate"
            MetaData "label:operation" "%{plugin_instance}"
        </Target>
        <Target "replace">
            MetaData "label:operation" "cassandra_custom_" ""
        </Target>
    </Rule>
    <Rule "go_back">
        Target "return"
    </Rule>
</Chain>

<Chain "PreCache">
    <Rule "jump_to_GenericJMX_cassandra_custom">
        <Target "jump">
            Chain "GenericJMX_cassandra_custom"
        </Target>
    </Rule>
</Chain>
PreCacheChain "PreCache"

Stackdriver 监控手册的官方指南不易阅读和理解。 我希望这会有所帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多