blob: 8d969e14a94b6f5c09cc818224a4e046c6f9d9b2 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{466:function(t,e,o){"use strict";o.r(e);var a=o(29),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"monitor-and-log-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#monitor-and-log-tools"}},[t._v("#")]),t._v(" Monitor and Log Tools")]),t._v(" "),e("h3",{attrs:{id:"system-monitor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#system-monitor"}},[t._v("#")]),t._v(" System Monitor")]),t._v(" "),e("p",[t._v("Currently, IoTDB provides users Java's JConsole tool to monitor system status or use IoTDB's open API to check data status.")]),t._v(" "),e("h4",{attrs:{id:"system-status-monitoring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#system-status-monitoring"}},[t._v("#")]),t._v(" System Status Monitoring")]),t._v(" "),e("p",[t._v("After starting JConsole tool and connecting to IoTDB server, a basic look at IoTDB system status(CPU Occupation, in-memory information, etc.) is provided. See "),e("a",{attrs:{href:"https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("official documentation"),e("OutboundLink")],1),t._v(" for more information.")]),t._v(" "),e("h4",{attrs:{id:"jmx-mbean-monitoring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#jmx-mbean-monitoring"}},[t._v("#")]),t._v(" JMX MBean Monitoring")]),t._v(" "),e("p",[t._v("By using JConsole tool and connecting with JMX you are provided with some system statistics and parameters.")]),t._v(" "),e("p",[t._v("This section describes how to use the JConsole "),e("code",[t._v("Mbean")]),t._v('tab of jconsole to monitor some system configurations of IoTDB, the statistics of writing, and so on. After connecting to JMX, you can find the "MBean" of "org.apache.iotdb.service", as shown in the figure below.')]),t._v(" "),e("p",[e("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/46039728/149951720-707f1ee8-32ee-4fde-9252-048caebd232e.png"}}),t._v(" "),e("br")]),t._v(" "),e("h3",{attrs:{id:"system-metric-framework"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#system-metric-framework"}},[t._v("#")]),t._v(" System Metric Framework")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/UserGuide/Master/Maintenance-Tools/Metric-Tool.html"}},[t._v("Metric Tool")])],1),t._v(" "),e("h3",{attrs:{id:"performance-monitor"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#performance-monitor"}},[t._v("#")]),t._v(" Performance Monitor")]),t._v(" "),e("h4",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("To grasp the performance of iotdb, this module is added to count the time-consumption of each operation. This module can compute the statistics of the avg time-consuming of each operation and the proportion of each operation whose time consumption falls into a time range. The output is in log_measure.log file. An output example is below.")]),t._v(" "),e("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/13203019/60937461-14296f80-a303-11e9-9602-a7bed624bfb3.png"}}),t._v(" "),e("h4",{attrs:{id:"configuration-parameter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-parameter"}},[t._v("#")]),t._v(" Configuration parameter")]),t._v(" "),e("p",[t._v("location:conf/iotdb-datanode.properties")]),t._v(" "),e("center",[e("p",[e("strong",[t._v("Table -parameter and description")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("Parameter")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("Default Value")]),t._v(" "),e("th",{staticStyle:{"text-align":"left"}},[t._v("Description")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("enable_performance_stat")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("false")]),t._v(" "),e("td",{staticStyle:{"text-align":"left"}},[t._v("Is stat performance of sub-module enable.")])])])])]),t._v(" "),e("h3",{attrs:{id:"cache-hit-ratio-statistics"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cache-hit-ratio-statistics"}},[t._v("#")]),t._v(" Cache Hit Ratio Statistics")]),t._v(" "),e("h4",{attrs:{id:"overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),e("p",[t._v("To improve query performance, IOTDB caches ChunkMetaData and TsFileMetaData. Users can view the cache hit ratio through debug level log and MXBean, and adjust the memory occupied by the cache according to the cache hit ratio and system memory. The method of using MXBean to view cache hit ratio is as follows:")]),t._v(" "),e("ol",[e("li",[t._v("Connect to jconsole with port 31999 and select 'MBean' in the menu item above.")]),t._v(" "),e("li",[t._v("Expand the sidebar and select 'org.apache.iotdb.db.service'. You will get the results shown in the following figure:")])]),t._v(" "),e("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/19167280/112426760-73e3da80-8d73-11eb-9a8f-9232d1f2033b.png"}}),t._v(" "),e("h2",{attrs:{id:"system-log"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#system-log"}},[t._v("#")]),t._v(" System log")]),t._v(" "),e("p",[t._v("IoTDB allows users to configure IoTDB system logs (such as log output level) by modifying the log configuration file. The default location of the system log configuration file is in $IOTDB_HOME/conf folder.")]),t._v(" "),e("p",[t._v("The default log configuration file is named logback.xml. The user can modify the configuration of the system running log by adding or changing the xml tree node parameters. It should be noted that the configuration of the system log using the log configuration file does not take effect immediately after the modification, instead, it will take effect after restarting the system. The usage of logback.xml is just as usual.")]),t._v(" "),e("p",[t._v("At the same time, in order to facilitate the debugging of the system by the developers and DBAs, we provide several JMX interfaces to dynamically modify the log configuration, and configure the Log module of the system in real time without restarting the system.")]),t._v(" "),e("h3",{attrs:{id:"dynamic-system-log-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dynamic-system-log-configuration"}},[t._v("#")]),t._v(" Dynamic System Log Configuration")]),t._v(" "),e("h4",{attrs:{id:"connect-jmx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#connect-jmx"}},[t._v("#")]),t._v(" Connect JMX")]),t._v(" "),e("p",[t._v("Here we use JConsole to connect with JMX.")]),t._v(" "),e("p",[t._v("Start the JConsole, establish a new JMX connection with the IoTDB Server (you can select the local process or input the IP and PORT for remote connection, the default operation port of the IoTDB JMX service is 31999). Fig 4.1 shows the connection GUI of JConsole.")]),t._v(" "),e("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/13203019/51577195-f94d7500-1ef3-11e9-999a-b4f67055d80e.png"}}),t._v(" "),e("p",[t._v("After connected, click "),e("code",[t._v("MBean")]),t._v(" and find "),e("code",[t._v("ch.qos.logback.classic.default.ch.qos.logback.classic.jmx.JMXConfigurator")]),t._v("(As shown in fig 4.2).\n"),e("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/13203019/51577204-fe122900-1ef3-11e9-9e89-2eb1d46e24b8.png"}})]),t._v(" "),e("p",[t._v("In the JMXConfigurator Window, there are 6 operations provided, as shown in fig 4.3. You can use these interfaces to perform operation.")]),t._v(" "),e("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/13203019/51577216-09fdeb00-1ef4-11e9-9005-542ad7d9e9e0.png"}}),t._v(" "),e("h4",{attrs:{id:"interface-instruction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#interface-instruction"}},[t._v("#")]),t._v(" Interface Instruction")]),t._v(" "),e("ul",[e("li",[t._v("reloadDefaultConfiguration")])]),t._v(" "),e("p",[t._v("This method is to reload the default logback configuration file. The user can modify the default configuration file first, and then call this method to reload the modified configuration file into the system to take effect.")]),t._v(" "),e("ul",[e("li",[t._v("reloadByFileName")])]),t._v(" "),e("p",[t._v("This method loads a logback configuration file with the specified path and name, and then makes it take effect. This method accepts a parameter of type String named p1, which is the path to the configuration file that needs to be specified for loading.")]),t._v(" "),e("ul",[e("li",[t._v("getLoggerEffectiveLevel")])]),t._v(" "),e("p",[t._v("This method is to obtain the current log level of the specified Logger. This method accepts a String type parameter named p1, which is the name of the specified Logger. This method returns the log level currently in effect for the specified Logger.")]),t._v(" "),e("ul",[e("li",[t._v("getLoggerLevel")])]),t._v(" "),e("p",[t._v("This method is to obtain the log level of the specified Logger. This method accepts a String type parameter named p1, which is the name of the specified Logger. This method returns the log level of the specified Logger.\nIt should be noted that the difference between this method and the "),e("code",[t._v("getLoggerEffectiveLevel")]),t._v(" method is that the method returns the log level that the specified Logger is set in the configuration file. If the user does not set the log level for the Logger, then return empty. According to Logger's log-level inheritance mechanism, a Logger's level is not explicitly set, it will inherit the log level settings from its nearest ancestor. At this point, calling the "),e("code",[t._v("getLoggerEffectiveLevel")]),t._v(" method will return the log level in which the Logger is in effect; calling "),e("code",[t._v("getLoggerLevel")]),t._v(" will return null.")])],1)}),[],!1,null,null,null);e.default=i.exports}}]);