blob: 6c9fb5b702997283a87646a0a265c17fa42a2fc2 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[745],{1139:function(t,_,e){"use strict";e.r(_);var a=e(29),s=Object(a.a)({},(function(){var t=this,_=t._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h2",{attrs:{id:"_1-什么是metrics"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_1-什么是metrics"}},[t._v("#")]),t._v(" 1. 什么是Metrics?")]),t._v(" "),_("p",[t._v("在IoTDB运行过程中,我们希望对IoTDB的状态进行观测,以便于排查系统问题或者及时发现系统潜在的风险。能"),_("strong",[t._v("反映系统运行状态的一系列指标")]),t._v("就是metrics。")]),t._v(" "),_("h2",{attrs:{id:"_2-什么场景下会使用到metrics"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_2-什么场景下会使用到metrics"}},[t._v("#")]),t._v(" 2. 什么场景下会使用到metrics?")]),t._v(" "),_("p",[t._v("那么什么时候会用到metrics呢?下面列举一些常见的场景。")]),t._v(" "),_("ol",[_("li",[_("p",[t._v("系统变慢了")]),t._v(" "),_("p",[t._v("系统变慢几乎是最常见也最头疼的问题,这时候我们需要尽可能多的信息来帮助我们找到系统变慢的原因,比如:")]),t._v(" "),_("ul",[_("li",[t._v("JVM信息:是不是有FGC?GC耗时多少?GC后内存有没有恢复?是不是有大量的线程?")]),t._v(" "),_("li",[t._v("系统信息:CPU使用率是不是太高了?磁盘IO是不是很频繁?")]),t._v(" "),_("li",[t._v("连接数:当前连接是不是太多?")]),t._v(" "),_("li",[t._v("接口:当前TPS是多少?各个接口耗时有没有变化?")]),t._v(" "),_("li",[t._v("线程池:系统中各种任务是否有积压?")]),t._v(" "),_("li",[t._v("缓存命中率")])])]),t._v(" "),_("li",[_("p",[t._v("磁盘快满了")]),t._v(" "),_("p",[t._v("这时候我们迫切想知道最近一段时间数据文件的增长情况,看看是不是某种文件有突增。")])]),t._v(" "),_("li",[_("p",[t._v("系统运行是否正常")]),t._v(" "),_("p",[t._v("此时我们可能需要通过错误日志的数量、集群节点的状态等指标来判断系统是否在正常运行。")])])]),t._v(" "),_("h2",{attrs:{id:"_3-什么人需要使用metrics"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_3-什么人需要使用metrics"}},[t._v("#")]),t._v(" 3. 什么人需要使用metrics?")]),t._v(" "),_("p",[t._v("所有关注系统状态的人员都可以使用,包括但不限于研发、测试、运维、DBA等等")]),t._v(" "),_("h2",{attrs:{id:"_4-iotdb都有哪些metrics"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-iotdb都有哪些metrics"}},[t._v("#")]),t._v(" 4. IoTDB都有哪些metrics?")]),t._v(" "),_("p",[t._v("目前,IoTDB对外提供一些主要模块的metrics,并且随着新功能的开发以及系统优化或者重构,metrics也会同步添加和更新。")]),t._v(" "),_("h3",{attrs:{id:"_4-1-名词解释"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-1-名词解释"}},[t._v("#")]),t._v(" 4.1. 名词解释")]),t._v(" "),_("p",[t._v("在进一步了解这些指标之前,我们先来看几个名词解释:")]),t._v(" "),_("ul",[_("li",[_("p",[t._v("Metric Name")]),t._v(" "),_("p",[t._v("指标名称,比如logback_events_total表示日志事件发生的总次数。")])]),t._v(" "),_("li",[_("p",[t._v("Tag")]),t._v(" "),_("p",[t._v("每个指标下面可以有0到多个分类,比如logback_events_total下有一个"),_("code",[t._v("level")]),t._v("的分类,用来表示特定级别下的日志数量。")])])]),t._v(" "),_("h3",{attrs:{id:"_4-2-数据格式"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-2-数据格式"}},[t._v("#")]),t._v(" 4.2. 数据格式")]),t._v(" "),_("p",[t._v("IoTDB对外提供JMX和Prometheus格式的监控指标,对于JMX,可以通过"),_("code",[t._v("org.apache.iotdb.metrics")]),t._v("获取metrics指标。")]),t._v(" "),_("p",[t._v("接下来我们以Prometheus格式为例对目前已有监控项进行说明。")]),t._v(" "),_("h3",{attrs:{id:"_4-3-iotdb-默认指标"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-iotdb-默认指标"}},[t._v("#")]),t._v(" 4.3. IoTDB 默认指标")]),t._v(" "),_("h4",{attrs:{id:"_4-3-1-接入层"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-1-接入层"}},[t._v("#")]),t._v(" 4.3.1. 接入层")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("entry_seconds_count")]),t._v(" "),_("td",[t._v('name="'+t._s(t.interface)+'"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("接口累计访问次数")]),t._v(" "),_("td",[t._v('entry_seconds_count{name="openSession",} 1.0')])]),t._v(" "),_("tr",[_("td",[t._v("entry_seconds_sum")]),t._v(" "),_("td",[t._v('name="'+t._s(t.interface)+'"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("接口累计耗时(s)")]),t._v(" "),_("td",[t._v('entry_seconds_sum{name="openSession",} 0.024')])]),t._v(" "),_("tr",[_("td",[t._v("entry_seconds_max")]),t._v(" "),_("td",[t._v('name="'+t._s(t.interface)+'"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("接口最大耗时(s)")]),t._v(" "),_("td",[t._v('entry_seconds_max{name="openSession",} 0.024')])]),t._v(" "),_("tr",[_("td",[t._v("quantity_total")]),t._v(" "),_("td",[t._v('name="pointsIn"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("系统累计写入点数")]),t._v(" "),_("td",[t._v('quantity_total{name="pointsIn",} 1.0')])]),t._v(" "),_("tr",[_("td",[t._v("thrift_connections")]),t._v(" "),_("td",[t._v('name="'+t._s(t.thriftService)+'"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("thrift当前连接数")]),t._v(" "),_("td",[t._v('thrift_connections{name="RPC",} 1.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-3-2-task"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-2-task"}},[t._v("#")]),t._v(" 4.3.2. Task")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("queue")]),t._v(" "),_("td",[t._v('name="compaction_inner/compaction_cross/flush",'),_("br"),t._v('status="running/waiting"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前时间任务数")]),t._v(" "),_("td",[t._v('queue{name="flush",status="waiting",} 0.0'),_("br"),t._v('queue{name="compaction/flush",status="running",} 0.0')])]),t._v(" "),_("tr",[_("td",[t._v("cost_task_seconds_count")]),t._v(" "),_("td",[t._v('name="compaction/flush"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("任务累计发生次数")]),t._v(" "),_("td",[t._v('cost_task_seconds_count{name="flush",} 1.0')])]),t._v(" "),_("tr",[_("td",[t._v("cost_task_seconds_max")]),t._v(" "),_("td",[t._v('name="compaction/flush"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("到目前为止任务耗时(s)最大的一次")]),t._v(" "),_("td",[t._v('cost_task_seconds_max{name="flush",} 0.363')])]),t._v(" "),_("tr",[_("td",[t._v("cost_task_seconds_sum")]),t._v(" "),_("td",[t._v('name="compaction/flush"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("任务累计耗时(s)")]),t._v(" "),_("td",[t._v('cost_task_seconds_sum{name="flush",} 0.363')])]),t._v(" "),_("tr",[_("td",[t._v("data_written")]),t._v(" "),_("td",[t._v('name="compaction", '),_("br"),t._v('type="aligned/not-aligned/total"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("合并文件时写入量")]),t._v(" "),_("td",[t._v('data_written{name="compaction",type="total",} 10240')])]),t._v(" "),_("tr",[_("td",[t._v("data_read")]),t._v(" "),_("td",[t._v('name="compaction"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("合并文件时的读取量")]),t._v(" "),_("td",[t._v('data_read={name="compaction",} 10240')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-3-3-内存占用"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-3-内存占用"}},[t._v("#")]),t._v(" 4.3.3. 内存占用")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("mem")]),t._v(" "),_("td",[t._v('name="chunkMetaData/storageGroup/mtree"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("chunkMetaData/storageGroup/mtree占用的内存(byte)")]),t._v(" "),_("td",[t._v('mem{name="chunkMetaData",} 2050.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-3-4-缓存命中率"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-4-缓存命中率"}},[t._v("#")]),t._v(" 4.3.4. 缓存命中率")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("cache_hit")]),t._v(" "),_("td",[t._v('name="chunk/timeSeriesMeta/bloomFilter"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("chunk/timeSeriesMeta缓存命中率,bloomFilter拦截率")]),t._v(" "),_("td",[t._v('cache_hit{name="chunk",} 80')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-3-5-业务数据"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-5-业务数据"}},[t._v("#")]),t._v(" 4.3.5. 业务数据")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("quantity")]),t._v(" "),_("td",[t._v('name="timeSeries/storageGroup/device", type="total/normal/template"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前时间timeSeries/storageGroup/device的数量")]),t._v(" "),_("td",[t._v('quantity{name="timeSeries",type="normal"} 1.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-3-6-集群"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-3-6-集群"}},[t._v("#")]),t._v(" 4.3.6. 集群")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("cluster_node_leader_count")]),t._v(" "),_("td",[t._v('name="'+t._s(t.ip)+'"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("节点上"),_("code",[t._v("dataGroupLeader")]),t._v("的数量,用来观察leader是否分布均匀")]),t._v(" "),_("td",[t._v('cluster_node_leader_count{name="127.0.0.1",} 2.0')])]),t._v(" "),_("tr",[_("td",[t._v("cluster_uncommitted_log")]),t._v(" "),_("td",[t._v('name="'+t._s(t.ip_datagroupHeader)+'"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("节点"),_("code",[t._v("uncommitted_log")]),t._v("的数量")]),t._v(" "),_("td",[t._v('cluster_uncommitted_log{name="127.0.0.1_Data-127.0.0.1-40010-raftId-0",} 0.0')])]),t._v(" "),_("tr",[_("td",[t._v("cluster_node_status")]),t._v(" "),_("td",[t._v('name="'+t._s(t.ip)+'"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("节点状态,1=online 2=offline")]),t._v(" "),_("td",[t._v('cluster_node_status{name="127.0.0.1",} 1.0')])]),t._v(" "),_("tr",[_("td",[t._v("cluster_elect_total")]),t._v(" "),_("td",[t._v('name="'+t._s(t.ip)+'",status="fail/win"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("节点参与选举的次数及结果")]),t._v(" "),_("td",[t._v('cluster_elect_total{name="127.0.0.1",status="win",} 1.0')])])])]),t._v(" "),_("h3",{attrs:{id:"_4-4-iotdb-预定义指标集"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-iotdb-预定义指标集"}},[t._v("#")]),t._v(" 4.4. IoTDB 预定义指标集")]),t._v(" "),_("p",[t._v("用户可以在"),_("code",[t._v("iotdb-metric.yml")]),t._v("文件中,修改"),_("code",[t._v("predefinedMetrics")]),t._v("的值来启用预定义指标集,目前有"),_("code",[t._v("JVM")]),t._v("、"),_("code",[t._v("LOGBACK")]),t._v("、"),_("code",[t._v("FILE")]),t._v("、"),_("code",[t._v("PROCESS")]),t._v("、"),_("code",[t._v("SYSYTEM")]),t._v("这五种。")]),t._v(" "),_("h4",{attrs:{id:"_4-4-1-jvm"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-1-jvm"}},[t._v("#")]),t._v(" 4.4.1. JVM")]),t._v(" "),_("h5",{attrs:{id:"_4-4-1-1-线程"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-1-1-线程"}},[t._v("#")]),t._v(" 4.4.1.1. 线程")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("jvm_threads_live_threads")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前线程数")]),t._v(" "),_("td",[t._v("jvm_threads_live_threads 25.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_threads_daemon_threads")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前daemon线程数")]),t._v(" "),_("td",[t._v("jvm_threads_daemon_threads 12.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_threads_peak_threads")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("峰值线程数")]),t._v(" "),_("td",[t._v("jvm_threads_peak_threads 28.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_threads_states_threads")]),t._v(" "),_("td",[t._v('state="runnable/blocked/waiting/timed-waiting/new/terminated"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前处于各种状态的线程数")]),t._v(" "),_("td",[t._v('jvm_threads_states_threads{state="runnable",} 10.0')])])])]),t._v(" "),_("h5",{attrs:{id:"_4-4-1-2-垃圾回收"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-1-2-垃圾回收"}},[t._v("#")]),t._v(" 4.4.1.2. 垃圾回收")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("jvm_gc_pause_seconds_count")]),t._v(" "),_("td",[t._v('action="end of major GC/end of minor GC",cause="xxxx"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("YGC/FGC发生次数及其原因")]),t._v(" "),_("td",[t._v('jvm_gc_pause_seconds_count{action="end of major GC",cause="Metadata GC Threshold",} 1.0')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_gc_pause_seconds_sum")]),t._v(" "),_("td",[t._v('action="end of major GC/end of minor GC",cause="xxxx"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("YGC/FGC累计耗时及其原因")]),t._v(" "),_("td",[t._v('jvm_gc_pause_seconds_sum{action="end of major GC",cause="Metadata GC Threshold",} 0.03')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_gc_pause_seconds_max")]),t._v(" "),_("td",[t._v('action="end of major GC",cause="Metadata GC Threshold"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("YGC/FGC最大耗时及其原因")]),t._v(" "),_("td",[t._v('jvm_gc_pause_seconds_max{action="end of major GC",cause="Metadata GC Threshold",} 0.0')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_gc_memory_promoted_bytes_total")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("从GC之前到GC之后老年代内存池大小正增长的累计")]),t._v(" "),_("td",[t._v("jvm_gc_memory_promoted_bytes_total 8425512.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_gc_max_data_size_bytes")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("老年代内存的历史最大值")]),t._v(" "),_("td",[t._v("jvm_gc_max_data_size_bytes 2.863661056E9")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_gc_live_data_size_bytes")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("GC后老年代内存的大小")]),t._v(" "),_("td",[t._v("jvm_gc_live_data_size_bytes 8450088.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_gc_memory_allocated_bytes_total")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("在一个GC之后到下一个GC之前年轻代增加的内存")]),t._v(" "),_("td",[t._v("jvm_gc_memory_allocated_bytes_total 4.2979144E7")])])])]),t._v(" "),_("h5",{attrs:{id:"_4-4-1-3-内存"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-1-3-内存"}},[t._v("#")]),t._v(" 4.4.1.3. 内存")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("jvm_buffer_memory_used_bytes")]),t._v(" "),_("td",[t._v('id="direct/mapped"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("已经使用的缓冲区大小")]),t._v(" "),_("td",[t._v('jvm_buffer_memory_used_bytes{id="direct",} 3.46728099E8')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_buffer_total_capacity_bytes")]),t._v(" "),_("td",[t._v('id="direct/mapped"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("最大缓冲区大小")]),t._v(" "),_("td",[t._v('jvm_buffer_total_capacity_bytes{id="mapped",} 0.0')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_buffer_count_buffers")]),t._v(" "),_("td",[t._v('id="direct/mapped"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前缓冲区数量")]),t._v(" "),_("td",[t._v('jvm_buffer_count_buffers{id="direct",} 183.0')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_memory_committed_bytes")]),t._v(" "),_("td",[t._v('{area="heap/nonheap",id="xxx",}')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前向JVM申请的内存大小")]),t._v(" "),_("td",[t._v('jvm_memory_committed_bytes{area="heap",id="Par Survivor Space",} 2.44252672E8'),_("br"),t._v('jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 3.9051264E7'),_("br")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_memory_max_bytes")]),t._v(" "),_("td",[t._v('{area="heap/nonheap",id="xxx",}')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("JVM最大内存")]),t._v(" "),_("td",[t._v('jvm_memory_max_bytes{area="heap",id="Par Survivor Space",} 2.44252672E8'),_("br"),t._v('jvm_memory_max_bytes{area="nonheap",id="Compressed Class Space",} 1.073741824E9')])]),t._v(" "),_("tr",[_("td",[t._v("jvm_memory_used_bytes")]),t._v(" "),_("td",[t._v('{area="heap/nonheap",id="xxx",}')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("JVM已使用内存大小")]),t._v(" "),_("td",[t._v('jvm_memory_used_bytes{area="heap",id="Par Eden Space",} 1.000128376E9'),_("br"),t._v('jvm_memory_used_bytes{area="nonheap",id="Code Cache",} 2.9783808E7'),_("br")])])])]),t._v(" "),_("h5",{attrs:{id:"_4-4-1-4-classes"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-1-4-classes"}},[t._v("#")]),t._v(" 4.4.1.4. Classes")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("jvm_classes_unloaded_classes_total")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("jvm累计卸载的class数量")]),t._v(" "),_("td",[t._v("jvm_classes_unloaded_classes_total 680.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_classes_loaded_classes")]),t._v(" "),_("td",[t._v("无")]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("jvm累计加载的class数量")]),t._v(" "),_("td",[t._v("jvm_classes_loaded_classes 5975.0")])]),t._v(" "),_("tr",[_("td",[t._v("jvm_compilation_time_ms_total")]),t._v(" "),_("td",[t._v('{compiler="HotSpot 64-Bit Tiered Compilers",}')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("jvm耗费在编译上的时间")]),t._v(" "),_("td",[t._v('jvm_compilation_time_ms_total{compiler="HotSpot 64-Bit Tiered Compilers",} 107092.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-4-2-文件-file"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-2-文件-file"}},[t._v("#")]),t._v(" 4.4.2. 文件(File)")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("file_size")]),t._v(" "),_("td",[t._v('name="wal/seq/unseq"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前时间wal/seq/unseq文件大小(byte)")]),t._v(" "),_("td",[t._v('file_size{name="wal",} 67.0')])]),t._v(" "),_("tr",[_("td",[t._v("file_count")]),t._v(" "),_("td",[t._v('name="wal/seq/unseq"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("当前时间wal/seq/unseq文件个数")]),t._v(" "),_("td",[t._v('file_count{name="seq",} 1.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-4-3-日志-logback"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-3-日志-logback"}},[t._v("#")]),t._v(" 4.4.3. 日志(logback)")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("logback_events_total")]),t._v(" "),_("td",[t._v('{level="trace/debug/info/warn/error",}')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("trace/debug/info/warn/error日志累计数量")]),t._v(" "),_("td",[t._v('logback_events_total{level="warn",} 0.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-4-4-进程-process"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-4-进程-process"}},[t._v("#")]),t._v(" 4.4.4. 进程(Process)")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("process_cpu_load")]),t._v(" "),_("td",[t._v('name="cpu"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("process当前CPU占用率(%)")]),t._v(" "),_("td",[t._v('process_cpu_load{name="process",} 5.0')])]),t._v(" "),_("tr",[_("td",[t._v("process_cpu_time")]),t._v(" "),_("td",[t._v('name="cpu"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("process累计占用CPU时间(ns)")]),t._v(" "),_("td",[t._v('process_cpu_time{name="process",} 3.265625E9')])]),t._v(" "),_("tr",[_("td",[t._v("process_max_mem")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("JVM最大可用内存")]),t._v(" "),_("td",[t._v('process_max_mem{name="process",} 3.545759744E9')])]),t._v(" "),_("tr",[_("td",[t._v("process_used_mem")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("JVM当前使用内存")]),t._v(" "),_("td",[t._v('process_used_mem{name="process",} 4.6065456E7')])]),t._v(" "),_("tr",[_("td",[t._v("process_total_mem")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("JVM当前已申请内存")]),t._v(" "),_("td",[t._v('process_total_mem{name="process",} 2.39599616E8')])]),t._v(" "),_("tr",[_("td",[t._v("process_free_mem")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("JVM当前剩余可用内存")]),t._v(" "),_("td",[t._v('process_free_mem{name="process",} 1.94035584E8')])]),t._v(" "),_("tr",[_("td",[t._v("process_mem_ratio")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("进程的内存占用比例")]),t._v(" "),_("td",[t._v('process_mem_ratio{name="process",} 0.0')])]),t._v(" "),_("tr",[_("td",[t._v("process_threads_count")]),t._v(" "),_("td",[t._v('name="process"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("当前线程数")]),t._v(" "),_("td",[t._v('process_threads_count{name="process",} 11.0')])]),t._v(" "),_("tr",[_("td",[t._v("process_status")]),t._v(" "),_("td",[t._v('name="process"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("进程存活状态,1.0为存活,0.0为终止")]),t._v(" "),_("td",[t._v('process_status{name="process",} 1.0')])])])]),t._v(" "),_("h4",{attrs:{id:"_4-4-5-系统-system"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-4-5-系统-system"}},[t._v("#")]),t._v(" 4.4.5. 系统(System)")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Metric")]),t._v(" "),_("th",[t._v("Tag")]),t._v(" "),_("th",[t._v("level")]),t._v(" "),_("th",[t._v("说明")]),t._v(" "),_("th",[t._v("示例")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("sys_cpu_load")]),t._v(" "),_("td",[t._v('name="cpu"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("system当前CPU占用率(%)")]),t._v(" "),_("td",[t._v('sys_cpu_load{name="system",} 15.0')])]),t._v(" "),_("tr",[_("td",[t._v("sys_cpu_cores")]),t._v(" "),_("td",[t._v('name="cpu"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("jvm可用处理器数")]),t._v(" "),_("td",[t._v('sys_cpu_cores{name="system",} 16.0')])]),t._v(" "),_("tr",[_("td",[t._v("sys_total_physical_memory_size")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("system最大物理内存")]),t._v(" "),_("td",[t._v('sys_total_physical_memory_size{name="system",} 1.5950999552E10')])]),t._v(" "),_("tr",[_("td",[t._v("sys_free_physical_memory_size")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("system当前剩余可用内存")]),t._v(" "),_("td",[t._v('sys_free_physical_memory_size{name="system",} 4.532396032E9')])]),t._v(" "),_("tr",[_("td",[t._v("sys_total_swap_space_size")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("system交换区最大空间")]),t._v(" "),_("td",[t._v('sys_total_swap_space_size{name="system",} 2.1051273216E10')])]),t._v(" "),_("tr",[_("td",[t._v("sys_free_swap_space_size")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("system交换区剩余可用空间")]),t._v(" "),_("td",[t._v('sys_free_swap_space_size{name="system",} 2.931576832E9')])]),t._v(" "),_("tr",[_("td",[t._v("sys_committed_vm_size")]),t._v(" "),_("td",[t._v('name="memory"')]),t._v(" "),_("td",[t._v("important")]),t._v(" "),_("td",[t._v("system保证可用于正在运行的进程的虚拟内存量")]),t._v(" "),_("td",[t._v('sys_committed_vm_size{name="system",} 5.04344576E8')])]),t._v(" "),_("tr",[_("td",[t._v("sys_disk_total_space")]),t._v(" "),_("td",[t._v('name="disk"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("磁盘总大小")]),t._v(" "),_("td",[t._v('sys_disk_total_space{name="system",} 5.10770798592E11')])]),t._v(" "),_("tr",[_("td",[t._v("sys_disk_free_space")]),t._v(" "),_("td",[t._v('name="disk"')]),t._v(" "),_("td",[t._v("core")]),t._v(" "),_("td",[t._v("磁盘可用大小")]),t._v(" "),_("td",[t._v('sys_disk_free_space{name="system",} 3.63467845632E11')])])])]),t._v(" "),_("h3",{attrs:{id:"_4-5-自定义添加埋点"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_4-5-自定义添加埋点"}},[t._v("#")]),t._v(" 4.5. 自定义添加埋点")]),t._v(" "),_("ul",[_("li",[t._v("如果想自己在IoTDB中添加更多Metrics埋点,可以参考"),_("a",{attrs:{href:"https://github.com/apache/iotdb/tree/master/metrics",target:"_blank",rel:"noopener noreferrer"}},[t._v("IoTDB Metrics Framework"),_("OutboundLink")],1),t._v("使用说明")]),t._v(" "),_("li",[t._v("Metric 埋点定义规则\n"),_("ul",[_("li",[_("code",[t._v("Metric")]),t._v(":监控项的名称,比如"),_("code",[t._v("entry_seconds_count")]),t._v("为接口累计访问次数,file_size 为文件总数。")]),t._v(" "),_("li",[_("code",[t._v("Tags")]),t._v(":Key-Value对,用来明确被监控项,可选项\n"),_("ul",[_("li",[_("code",[t._v("name = xxx")]),t._v(":被监控项的名称,比如对"),_("code",[t._v("entry_seconds_count")]),t._v("这个监控项,name 的含义是被监控的接口名称。")]),t._v(" "),_("li",[_("code",[t._v("status = xxx")]),t._v(":被监控项的状态细分,比如监控 Task 的监控项可以通过该参数,将运行的 Task 和停止的 Task 分开。")]),t._v(" "),_("li",[_("code",[t._v("user = xxx")]),t._v(":被监控项和某个特定用户相关,比如统计root用户的写入总次数。")]),t._v(" "),_("li",[t._v("根据具体情况自定义......")])])])])]),t._v(" "),_("li",[t._v("监控指标级别含义:\n"),_("ul",[_("li",[t._v("线上运行默认启动级别为"),_("code",[t._v("Important")]),t._v("级,线下调试默认启动级别为"),_("code",[t._v("Normal")]),t._v("级,审核严格程度"),_("code",[t._v("Core > Important > Normal > All")])]),t._v(" "),_("li",[_("code",[t._v("Core")]),t._v(":系统的核心指标,供"),_("strong",[t._v("运维人员")]),t._v("使用,关乎系统的"),_("strong",[t._v("性能、稳定性、安全性")]),t._v(",比如实例的状况,系统的负载等。")]),t._v(" "),_("li",[_("code",[t._v("Important")]),t._v(":模块的重要指标,供"),_("strong",[t._v("运维和测试人员")]),t._v("使用,直接关乎"),_("strong",[t._v("每个模块的运行状态")]),t._v(",比如合并文件个数、执行情况等。")]),t._v(" "),_("li",[_("code",[t._v("Normal")]),t._v(":模块的一般指标,供"),_("strong",[t._v("开发人员")]),t._v("使用,方便在出现问题时"),_("strong",[t._v("定位模块")]),t._v(",比如合并中的特定关键操作情况。")]),t._v(" "),_("li",[_("code",[t._v("All")]),t._v(":模块的全部指标,供"),_("strong",[t._v("模块开发人员")]),t._v("使用,往往在复现问题的时候使用,从而快速解决问题。")])])])]),t._v(" "),_("h2",{attrs:{id:"_5-怎样获取这些metrics"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_5-怎样获取这些metrics"}},[t._v("#")]),t._v(" 5. 怎样获取这些metrics?")]),t._v(" "),_("p",[t._v("metric采集默认是关闭的,需要先到conf/iotdb-metric.yml中打开后启动server,目前也支持启动后,通过"),_("code",[t._v("load configuration")]),t._v("热加载。")]),t._v(" "),_("h3",{attrs:{id:"_5-1-配置文件"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_5-1-配置文件"}},[t._v("#")]),t._v(" 5.1. 配置文件")]),t._v(" "),_("div",{staticClass:"language-yaml line-numbers-mode"},[_("pre",{pre:!0,attrs:{class:"language-yaml"}},[_("code",[_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启动监控模块,默认为false")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("enableMetric")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 是否启用操作延迟统计")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("enablePerformanceStat")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("false")]),t._v("\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 数据提供方式,对外部通过jmx和prometheus协议提供metrics的数据, 可选参数:[JMX, PROMETHEUS, IOTDB],IOTDB是默认关闭的。")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("metricReporterList")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" JMX\n "),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" PROMETHEUS\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 底层使用的metric架构,可选参数:[MICROMETER, DROPWIZARD]")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("monitorType")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" MICROMETER\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 初始化metric的级别,可选参数: [CORE, IMPORTANT, NORMAL, ALL]")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("metricLevel")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" IMPORTANT\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 预定义的指标集, 可选参数: [JVM, LOGBACK, FILE, PROCESS, SYSTEM]")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("predefinedMetrics")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" JVM\n "),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" FILE\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Prometheus Reporter 使用的端口")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("prometheusExporterPort")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token number"}},[t._v("9091")]),t._v("\n\n"),_("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# IoTDB Reporter相关的配置")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("ioTDBReporterConfig")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("host")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 127.0.0.1\n "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("port")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token number"}},[t._v("6667")]),t._v("\n "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" root\n "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" root\n "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("database")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" _metric\n "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("pushPeriodInSecond")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),t._v("\n")])]),t._v(" "),_("div",{staticClass:"line-numbers-wrapper"},[_("span",{staticClass:"line-number"},[t._v("1")]),_("br"),_("span",{staticClass:"line-number"},[t._v("2")]),_("br"),_("span",{staticClass:"line-number"},[t._v("3")]),_("br"),_("span",{staticClass:"line-number"},[t._v("4")]),_("br"),_("span",{staticClass:"line-number"},[t._v("5")]),_("br"),_("span",{staticClass:"line-number"},[t._v("6")]),_("br"),_("span",{staticClass:"line-number"},[t._v("7")]),_("br"),_("span",{staticClass:"line-number"},[t._v("8")]),_("br"),_("span",{staticClass:"line-number"},[t._v("9")]),_("br"),_("span",{staticClass:"line-number"},[t._v("10")]),_("br"),_("span",{staticClass:"line-number"},[t._v("11")]),_("br"),_("span",{staticClass:"line-number"},[t._v("12")]),_("br"),_("span",{staticClass:"line-number"},[t._v("13")]),_("br"),_("span",{staticClass:"line-number"},[t._v("14")]),_("br"),_("span",{staticClass:"line-number"},[t._v("15")]),_("br"),_("span",{staticClass:"line-number"},[t._v("16")]),_("br"),_("span",{staticClass:"line-number"},[t._v("17")]),_("br"),_("span",{staticClass:"line-number"},[t._v("18")]),_("br"),_("span",{staticClass:"line-number"},[t._v("19")]),_("br"),_("span",{staticClass:"line-number"},[t._v("20")]),_("br"),_("span",{staticClass:"line-number"},[t._v("21")]),_("br"),_("span",{staticClass:"line-number"},[t._v("22")]),_("br"),_("span",{staticClass:"line-number"},[t._v("23")]),_("br"),_("span",{staticClass:"line-number"},[t._v("24")]),_("br"),_("span",{staticClass:"line-number"},[t._v("25")]),_("br"),_("span",{staticClass:"line-number"},[t._v("26")]),_("br"),_("span",{staticClass:"line-number"},[t._v("27")]),_("br"),_("span",{staticClass:"line-number"},[t._v("28")]),_("br"),_("span",{staticClass:"line-number"},[t._v("29")]),_("br"),_("span",{staticClass:"line-number"},[t._v("30")]),_("br"),_("span",{staticClass:"line-number"},[t._v("31")]),_("br"),_("span",{staticClass:"line-number"},[t._v("32")]),_("br"),_("span",{staticClass:"line-number"},[t._v("33")]),_("br")])]),_("p",[t._v("然后按照下面的操作获取metrics数据")]),t._v(" "),_("ol",[_("li",[t._v("打开配置文件中的metric开关")]),t._v(" "),_("li",[t._v("其他参数使用默认配置即可")]),t._v(" "),_("li",[t._v("启动IoTDB")]),t._v(" "),_("li",[t._v("打开浏览器或者用"),_("code",[t._v("curl")]),t._v(" 访问 "),_("code",[t._v("http://servier_ip:9091/metrics")]),t._v(", 就能看到metric数据了:")])]),t._v(" "),_("div",{staticClass:"language- line-numbers-mode"},[_("pre",{pre:!0,attrs:{class:"language-text"}},[_("code",[t._v('...\n# HELP file_count\n# TYPE file_count gauge\nfile_count{name="wal",} 0.0\nfile_count{name="unseq",} 0.0\nfile_count{name="seq",} 2.0\n# HELP file_size\n# TYPE file_size gauge\nfile_size{name="wal",} 0.0\nfile_size{name="unseq",} 0.0\nfile_size{name="seq",} 560.0\n# HELP queue\n# TYPE queue gauge\nqueue{name="flush",status="waiting",} 0.0\nqueue{name="flush",status="running",} 0.0\n# HELP quantity\n# TYPE quantity gauge\nquantity{name="timeSeries",} 1.0\nquantity{name="storageGroup",} 1.0\nquantity{name="device",} 1.0\n# HELP logback_events_total Number of error level events that made it to the logs\n# TYPE logback_events_total counter\nlogback_events_total{level="warn",} 0.0\nlogback_events_total{level="debug",} 2760.0\nlogback_events_total{level="error",} 0.0\nlogback_events_total{level="trace",} 0.0\nlogback_events_total{level="info",} 71.0\n# HELP mem\n# TYPE mem gauge\nmem{name="storageGroup",} 0.0\nmem{name="mtree",} 1328.0\n...\n')])]),t._v(" "),_("div",{staticClass:"line-numbers-wrapper"},[_("span",{staticClass:"line-number"},[t._v("1")]),_("br"),_("span",{staticClass:"line-number"},[t._v("2")]),_("br"),_("span",{staticClass:"line-number"},[t._v("3")]),_("br"),_("span",{staticClass:"line-number"},[t._v("4")]),_("br"),_("span",{staticClass:"line-number"},[t._v("5")]),_("br"),_("span",{staticClass:"line-number"},[t._v("6")]),_("br"),_("span",{staticClass:"line-number"},[t._v("7")]),_("br"),_("span",{staticClass:"line-number"},[t._v("8")]),_("br"),_("span",{staticClass:"line-number"},[t._v("9")]),_("br"),_("span",{staticClass:"line-number"},[t._v("10")]),_("br"),_("span",{staticClass:"line-number"},[t._v("11")]),_("br"),_("span",{staticClass:"line-number"},[t._v("12")]),_("br"),_("span",{staticClass:"line-number"},[t._v("13")]),_("br"),_("span",{staticClass:"line-number"},[t._v("14")]),_("br"),_("span",{staticClass:"line-number"},[t._v("15")]),_("br"),_("span",{staticClass:"line-number"},[t._v("16")]),_("br"),_("span",{staticClass:"line-number"},[t._v("17")]),_("br"),_("span",{staticClass:"line-number"},[t._v("18")]),_("br"),_("span",{staticClass:"line-number"},[t._v("19")]),_("br"),_("span",{staticClass:"line-number"},[t._v("20")]),_("br"),_("span",{staticClass:"line-number"},[t._v("21")]),_("br"),_("span",{staticClass:"line-number"},[t._v("22")]),_("br"),_("span",{staticClass:"line-number"},[t._v("23")]),_("br"),_("span",{staticClass:"line-number"},[t._v("24")]),_("br"),_("span",{staticClass:"line-number"},[t._v("25")]),_("br"),_("span",{staticClass:"line-number"},[t._v("26")]),_("br"),_("span",{staticClass:"line-number"},[t._v("27")]),_("br"),_("span",{staticClass:"line-number"},[t._v("28")]),_("br"),_("span",{staticClass:"line-number"},[t._v("29")]),_("br"),_("span",{staticClass:"line-number"},[t._v("30")]),_("br"),_("span",{staticClass:"line-number"},[t._v("31")]),_("br"),_("span",{staticClass:"line-number"},[t._v("32")]),_("br")])]),_("h3",{attrs:{id:"_5-2-对接prometheus和grafana"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_5-2-对接prometheus和grafana"}},[t._v("#")]),t._v(" 5.2. 对接Prometheus和Grafana")]),t._v(" "),_("p",[t._v("如上面所述,IoTDB对外透出标准Prometheus格式的metrics数据,可以直接和Prometheus以及Grafana集成。")]),t._v(" "),_("p",[t._v("IoTDB、Prometheus、Grafana三者的关系如下图所示:")]),t._v(" "),_("p",[_("img",{attrs:{src:"https://raw.githubusercontent.com/apache/iotdb-bin-resources/main/docs/UserGuide/System%20Tools/Metrics/iotdb_prometheus_grafana.png",alt:"iotdb_prometheus_grafana"}})]),t._v(" "),_("ol",[_("li",[t._v("IoTDB在运行过程中持续收集metrics数据。")]),t._v(" "),_("li",[t._v("Prometheus以固定的间隔(可配置)从IoTDB的HTTP接口拉取metrics数据。")]),t._v(" "),_("li",[t._v("Prometheus将拉取到的metrics数据存储到自己的TSDB中。")]),t._v(" "),_("li",[t._v("Grafana以固定的间隔(可配置)从Prometheus查询metrics数据并绘图展示。")])]),t._v(" "),_("p",[t._v("从交互流程可以看出,我们需要做一些额外的工作来部署和配置Prometheus和Grafana。")]),t._v(" "),_("p",[t._v("比如,你可以对Prometheus进行如下的配置(部分参数可以自行调整)来从IoTDB获取监控数据")]),t._v(" "),_("div",{staticClass:"language-yaml line-numbers-mode"},[_("pre",{pre:!0,attrs:{class:"language-yaml"}},[_("code",[_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("job_name")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" pull"),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("metrics\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("honor_labels")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("honor_timestamps")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_interval")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 15s\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scrape_timeout")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" 10s\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("metrics_path")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" /metrics\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("scheme")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" http\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("follow_redirects")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n"),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("static_configs")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),_("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("targets")]),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" localhost"),_("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),_("span",{pre:!0,attrs:{class:"token number"}},[t._v("9091")]),t._v("\n")])]),t._v(" "),_("div",{staticClass:"line-numbers-wrapper"},[_("span",{staticClass:"line-number"},[t._v("1")]),_("br"),_("span",{staticClass:"line-number"},[t._v("2")]),_("br"),_("span",{staticClass:"line-number"},[t._v("3")]),_("br"),_("span",{staticClass:"line-number"},[t._v("4")]),_("br"),_("span",{staticClass:"line-number"},[t._v("5")]),_("br"),_("span",{staticClass:"line-number"},[t._v("6")]),_("br"),_("span",{staticClass:"line-number"},[t._v("7")]),_("br"),_("span",{staticClass:"line-number"},[t._v("8")]),_("br"),_("span",{staticClass:"line-number"},[t._v("9")]),_("br"),_("span",{staticClass:"line-number"},[t._v("10")]),_("br"),_("span",{staticClass:"line-number"},[t._v("11")]),_("br")])]),_("p",[t._v("更多细节可以参考下面的文档:")]),t._v(" "),_("p",[_("a",{attrs:{href:"https://prometheus.io/docs/prometheus/latest/getting_started/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Prometheus安装使用文档"),_("OutboundLink")],1)]),t._v(" "),_("p",[_("a",{attrs:{href:"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config",target:"_blank",rel:"noopener noreferrer"}},[t._v("Prometheus从HTTP接口拉取metrics数据的配置说明"),_("OutboundLink")],1)]),t._v(" "),_("p",[_("a",{attrs:{href:"https://grafana.com/docs/grafana/latest/getting-started/getting-started/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Grafana安装使用文档"),_("OutboundLink")],1)]),t._v(" "),_("p",[_("a",{attrs:{href:"https://prometheus.io/docs/visualization/grafana/#grafana-support-for-prometheus",target:"_blank",rel:"noopener noreferrer"}},[t._v("Grafana从Prometheus查询数据并绘图的文档"),_("OutboundLink")],1)]),t._v(" "),_("h3",{attrs:{id:"_5-3-apache-iotdb-dashboard"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#_5-3-apache-iotdb-dashboard"}},[t._v("#")]),t._v(" 5.3. Apache IoTDB Dashboard")]),t._v(" "),_("p",[t._v("我们提供了Apache IoTDB Dashboard,在Grafana中显示的效果图如下所示:")]),t._v(" "),_("p",[_("img",{attrs:{src:"https://github.com/apache/iotdb-bin-resources/blob/main/docs/UserGuide/System%20Tools/Metrics/dashboard.png",alt:"Apache IoTDB Dashboard"}})]),t._v(" "),_("p",[t._v("Apache IoTDB Dashboard的获取方式:")]),t._v(" "),_("ol",[_("li",[t._v("您可以在grafana-metrics-example文件夹下获取到对应不同iotdb版本的Dashboard的json文件。")]),t._v(" "),_("li",[t._v("您可以访问"),_("a",{attrs:{href:"https://grafana.com/grafana/dashboards/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Grafana Dashboard官网"),_("OutboundLink")],1),t._v("搜索"),_("code",[t._v("Apache IoTDB Dashboard")]),t._v("并使用")])]),t._v(" "),_("p",[t._v("在创建Grafana时,您可以选择Import刚刚下载的json文件,并为Apache IoTDB Dashboard选择对应目标数据源。")])])}),[],!1,null,null,null);_.default=s.exports}}]);