1. 程式人生 > >java效能監控工具MoSKito學習--一步一步開始工作3

java效能監控工具MoSKito學習--一步一步開始工作3

>MoSKito-Essential Configuration Guide Moskito的配置指導
從v2.x版本開始,MoSKito可以通過使用外部配置檔案來完成配置。這個配置是基於ConfigeMe-使用JSON配置結構的語法來完成。
MoSKito 配置是建立不同的配置物件,使得它更容易修改和維護。每一個物件都能夠獨立被配置,下面是典型的配置,不同的部分將會單獨討論。
{
   "@thresholdsAlertsConfig":{
      "@notificationProviders":[
         {
            "className":"net.anotheria.moskito.core.threshold.alerts.notificationprovider.LogFileNotificationProvider",
            "parameter":"MoskitoAlert",
            "guardedStatus":"GREEN"
         },
         {
            "className":"net.anotheria.moskito.core.threshold.alerts.notificationprovider.MailNotificationProvider",
            "parameter":"
[email protected]
",
            "guardedStatus":"RED"
         },
         {
            "className":"net.anotheria.moskito.core.threshold.alerts.notificationprovider.SysoutNotificationProvider",
            "parameter":"",
            "guardedStatus":"GREEN"
         }
      ],
      "@alertHistoryConfig":{
         "maxNumberOfItems":500,
         "toleratedNumberOfItems":550
      }
   },
   "@accumulatorsConfig":{
      "accumulationAmount":500,
      "@accumulators":[
         {
            "name":"Configured SessionCount Cur 5m",
            "producerName":"SessionCount",
            "statName":"Sessions",
            "valueName":"cur",
            "intervalName":"5m"
         }
      ]
   },
   "@thresholdsConfig":{
      "@thresholds":[
         {
            "name":"Configured-5m-ThreadCount",
            "producerName":"ThreadCount",
            "statName":"ThreadCount",
            "valueName":"Current",
            "intervalName":"5m",
            // time unit can be ignored here
            "@guards":[
               {
                  "value":"30",
                  "direction":"DOWN",
                  "status":"GREEN"
               },
               {
                  "value":"30",
                  "direction":"UP",
                  "status":"YELLOW"
               },
               {
                  "value":"45",
                  "direction":"UP",
                  "status":"ORANGE"
               },
               {
                  "value":"60",
                  "direction":"UP",
                  "status":"RED"
               },
               {
                  "value":"100",
                  "direction":"UP",
                  "status":"PURPLE"
               }
            ]
         }
      ]
   },
   "@dashboardsConfig":{
      "@dashboards":[
         {
            "name":"Example Dashboard",
            "refresh":60,
            "@charts":[
               {
                  "caption":"Threads",
                  "accumulators":[
                     "ThreadCount",
                     "ThreadStateBlocked-1m",
                     "ThreadStateRunnable-1m",
                     "ThreadStateTimedWaiting-1m",
                     "ThreadStateWaiting-1m"
                  ]
               },
               {
                  "accumulators":[
                     "URL REQ 1m"
                  ]
               }
            ],
            "@thresholds":[
               "OrderPerMinuteThreshold",
               "ShopServiceAVG"
            ],
            "@gauges":[
               "Memory",
               "Running",
               "Sessions",
               "SysLoad"
            ],
            "@producers":[
               "ingredients",
               "orders"
            ],
            "@widgets":[
               "gauges",
               "charts",
               "producers",
               "thresholds"
            ],
         }
     ]
  }
}
Configuration file and location 配置檔案和位置
MoSKito是基於@ConfigureMe的註解來配置的
@ConfigureMe(name="moskito")
public class MoskitoConfiguration {
    @Configure
    private ThresholdsAlertsConfig thresholdsAlertsConfig = new ThresholdsAlertsConfig();
    @Configure
    private ThresholdsConfig thresholdsConfig = new ThresholdsConfig();
    @Configure
    private AccumulatorsConfig accumulatorsConfig = new AccumulatorsConfig();
...
ConfigureMe 要求配置檔案以moskito.json來命名並且在類路徑下查詢它。然而,你可能對該檔案給出不同的名字(或者使用xml或是properties來代替json)。
MoskitoConfiguration configuration = new MoskitoConfiguration();
ConfigurationManager.INSTANCE.configureAs(configuration, "anothername");
MoskitoConfigurationHolder.INSTANCE.setConfiguration(configuration);
當然,你能設定配置物件完全由你自己來完成(寫出需要的程式碼)或者獲取當前配置物件從MoskitoConfigurationHolder 並且修改它。並且完成它自系統開始之前,因為許多配置選項在系統執行中不允許修改。不過,有些你還是可以修改的。
Sections 部分
ThresholdsAlerts 報警閾值
報警閾值包含兩部分:AlertHistory and NotificationProviders. 告警歷史和通知提供者
"@thresholdsAlertsConfig": {
    "@notificationProviders": [ NOTIFICATIONPROVIDER ],
    "@alertHistoryConfig": { }
}
AlertHistory
告警歷史的配置定義了多少項被儲存在記憶體中用於告警,並且能夠被展示在MoSKito-WebUI:
"@alertHistoryConfig": {
    "maxNumberOfItems": 500,
    "toleratedNumberOfItems": 550
---------------------------------------------------------------------
屬性                      值                                                                       預設值
maxNumberOfItems         用於儲存在告警歷史中的專案數                200
toleratedNumberOfItems   允許負載。AlertHistory將會縮短當
                         大小超過了toleratedNumberOfItems                         220
                         配置的數量。這可以幫助減少列表操作的
                         數量。
--------------------------------------------------------------------
NotificationProviders 通知提供者
通知系統的構建允許配置多個通知提供者。通知提供者將會被觸發只要一個閾值改變了它的狀態並且這個改變突破了通知提供者的限制。
每一個通知提供者被配置瞭如下的屬性:
--------------------------------------------------------------------
屬性                        值
className                 實現了net.anotheria.moskito.core.
                          threshold.alerts.NotificationProvider的類名
parameter                 提供者的專有化。這屬性是提供者特有
guardedStatus             觸發的狀態
--------------------------------------------------------------------
引數說明:
--------------------------------------------------------------------
類名                                                  解釋
net.anotheria.moskito.core.threshold
.alerts.notificationprovider                         日誌的名字
.LogFileNotificationProvider


net.anotheria.moskito.core.threshold
.alerts.notificationprovider                      逗號分隔接收者的郵件地址
.MailNotificationProvider


net.anotheria.moskito.core.threshold
.alerts.notificationprovider                         忽略
.SysoutNotificationProvider
--------------------------------------------------------------------
Thresholds閾值集
什麼是一個閾值集?
閾值持續觀察一個單一的生產者並在它的效能改變時給出一個訊號。更多資訊,請看MoSKito概念部分的閾值部分介紹。
閾值配置包含了一個閾值物件的集合。這是另外的一種定義閾值的方法。
閾值也可以通過MoSKito-Inspect來新增。
"@thresholdsConfig": {
    "@thresholds": [ THRESHOLD ]
},
或者,在java程式碼關鍵字:
public class ThresholdsConfig {


    /**
     * Configured thresholds.
     */
    @Configure
    private ThresholdConfig[] thresholds;
閾值
每個閾值包含如下資訊:
{
  "name": "Configured-5m-ThreadCount",
  "producerName": "ThreadCount",
  "statName": "ThreadCount",
  "valueName": "Current",
  "intervalName": "5m",
  //timeUnit can be ignored here
  "@guards": [ GUARD ]
}
--------------------------------------------------------------------
屬性                    值
name             AlertHistory,Logs和WebUi的值的名字
producerName     生產者的名字或id,要求精確匹配
statName         StatValue的名字,要求精確匹配
valueName        Value的名字,要求精確匹配
intervalName     系在閾值間隙的名字
timeUtil         使用的時間單元(例如,毫秒或者秒) 請看net.anotheria.moskito
                 .core.stats.TimeUnit
guards           GUARD物件集合
--------------------------------------------------------------------
Threshold Guards 閾值守衛
一個守衛是一個觸發器(被設定)用於改變閾值的狀態。
例如:
{"value": "30", "direction": "DOWN", "status": "GREEN"},
{"value": "30", "direction": "UP", "status": "YELLOW"},
{"value": "45", "direction": "UP", "status": "ORANGE"},
--------------------------------------------------------------------
屬性                    值
value            關聯的元組(生產者|stat|stat值)的值,用於改變閾值物件的值
direction        值通過以後的方向:UP意味著當前值高於守衛值,DOWN意味著低於守衛值
status           閾值物件設定的當守衛值觸發以後的狀態
--------------------------------------------------------------------
Accumulators 收集器集合
收集器儲存了一個生產者效能的歷史並且展示收集到的資料在圖表中
更多資訊請看MoSKito 概念模組中的Accumulators的部分。
收集器集合部分配置收集器,設定預設的收集器數量。
Accumulation amount 收集數量
"@accumulatorsConfig" : {
    "accumulationAmount": 500
},
收集數量控制了一個收集器能夠儲存的數量值。真實的數量可能比配置高10%,因為為了減少集合數量的操作10%的負載是允許的。
Accumulators 收集器集
"@accumulatorsConfig" : {
    ...
    "@accumulators": [
        {
            "name": "Configured SessionCount Cur 5m",
            "producerName": "SessionCount",
            "statName": "Sessions",
            "valueName": "cur",
            "intervalName": "5m"
        }
        ...
    ]
},
基本上,收集器部分包含了相同的值對於每一個收集者對於每一個閾值:
--------------------------------------------------------------------
屬性                    值
name             對於WebUI值的名字
producerName     生產者的名字或id,要求精確匹配
statName         StatValue的名字,要求精確匹配
valueName        Value的名字,要求精確匹配
intervalName     系在閾值間隙的名字
timeUtil         使用的時間單元(例如,毫秒或者秒) 請看net.anotheria.moskito
                 .core.stats.TimeUnit
--------------------------------------------------------------------
Gauges 規格
規格是一個視覺化的公交用於表現生產者當前狀態和它期望的最大和最小狀態值之間的關係。
如圖所示gauges.png:
規格能夠用在儀表板中。
規格的配置有它自己的部分在配置檔案中。
"@gaugesConfig": {
    "@gauges": [GAUGE],
    "@defaultZones":[ZONE]
}
每一個規格以如下方法被配置:
{
  "name": "Name of the gauge is displayed in the gauge itself and should be short",
  "caption": "Caption of the gauge block, has more chars to fit",
  "@minValue" : GAUGEVALUE,
  "@currentValue" : GAUGEVALUE,
  "@maxValue" : GAUGEVALUE,
  "@zones": [ZONE]
}
一個GAUGE值可能是一個常量或者是一個生產者的引用。在下面的例子中是一個靜態規格值被配置:
"@minValue": {
    "constant": 0
},
"@currentValue": {
  "constant": 70
},
"@maxValue": {
  "constant":100
},
有人可能覺得一個靜態值不夠敏感,但是它說明了一個原則並且你能使用它代表一個值,你係統的的邊界值。
一個GAUGE值可以和生產者/stat/value元組關聯例如:
{
  "name": "Running",
  "caption": "Running Threads",
  "@minValue": {
    "constant": 0
  },
  "@currentValue": {
    "producerName": "ThreadStates",
    "statName": "RUNNABLE",
    "valueName": "Current",
    "intervalName": "1m"
  },
  "@maxValue": {
    "producerName": "ThreadCount",
    "statName": "ThreadCount",
    "valueName": "current",
    "intervalName": "default"
  }
}
記住你能夠使用的,可以是常量關鍵字或者是生產者名字,stat名字和value名字,如果一個gauge值配置包含了常量值其他情況將會忽略這個值。
除了每一個gauge能夠配置的值域。如果你不提供gauge特有配置,預設域會被使用。如果你提供了非預設域的其他值,則每一個配置的域會被使用,將會被硬聯絡到GaugeAPI的實現。
DefaultZones預設域
你能夠配置預設域,將會用到你所有的gauges,如果gauges沒有明確的域配置。
"@gaugesConfig": {
    "@gauges": [GAUGE],
    "@defaultZones":[ZONE]
}
例如:
"@defaultZones":[
  {
    "color": "orange",
    "left": 0.85,
    "right": 0.9
  },
  {
    "color": "red",
    "left": 0.9,
    "right": 1
  }
]
完整的例子
下面的例子配置是關於gauges部分的配置:
"@gaugesConfig": {
    "@gauges": [
      {
        "name": "Constant",
        "@minValue": {
            "constant": 0
        },
        "@currentValue": {
          "constant": 70
        },
        "@maxValue": {
          "constant":100
        },
        "@zones":[
          {
            "color": "green",
            "left": 0,
            "right": 0.25
          },
          {
            "color": "yellow",
            "left": 0.25,
            "right": 0.5
          },
          {
            "color": "orange",
            "left": 0.5,
            "right": 0.75
          },
          {
            "color": "red",
            "left": 0.75,
            "right": 1
          }
        ]


      },
      {
        "name": "Sessions",
        "@minValue": {
          "constant": 0
        },
        "@currentValue": {
          "producerName": "SessionCount",
          "statName": "Sessions",
          "valueName": "cur",
          "intervalName": "default"
        },
        "@maxValue": {
          "producerName": "SessionCount",
          "statName": "Sessions",
          "valueName": "max",
          "intervalName": "default"
        }
      },
      {
        "name": "Memory",
        "caption": "Used memory",
        "@minValue": {
          "constant": 0
        },
        "@currentValue": {
          "producerName": "Heap memory",
          "statName": "Heap memory",
          "valueName": "Used Mb",
          "intervalName": "default"
        },
        "@maxValue": {
          "producerName": "JavaRuntimeMax",
          "statName": "JavaRuntimeMax",
          "valueName": "Current Mb",
          "intervalName": "default"
        }
      },
      {
        "name": "Blocked",
        "caption": "Blocked Threads",
        "@minValue": {
          "constant": 0
        },
        "@currentValue": {
          "producerName": "ThreadStates",
          "statName": "BLOCKED",
          "valueName": "Current",
          "intervalName": "1m"
        },
        "@maxValue": {
          "producerName": "ThreadCount",
          "statName": "ThreadCount",
          "valueName": "current",
          "intervalName": "default"
        }
      },
      {
        "name": "Running",
        "caption": "Running Threads",
        "@minValue": {
          "constant": 0
        },
        "@currentValue": {
          "producerName": "ThreadStates",
          "statName": "RUNNABLE",
          "valueName": "Current",
          "intervalName": "1m"
        },
        "@maxValue": {
          "producerName": "ThreadCount",
          "statName": "ThreadCount",
          "valueName": "current",
          "intervalName": "default"
        }
      }
    ],
  "@defaultZones":[
    {
      "color": "orange",
      "left": 0.85,
      "right": 0.9
    },
    {
      "color": "red",
      "left": 0.9,
      "right": 1
    }
  ]


},
Tracers 路徑
路徑允許你監控誰在執行程式碼,以及程式碼中的位置。Tracers的典型開關可以檢查執行時的Tracer按鈕在SingleProducerView 在MoSKito檢查。
如圖MoSKitoTracers.png:
然而,有一些配置選項對Tracers.
Tracers被配置通過在MoSkito配置tracingConfig元素。
這是一個列子:
"@tracingConfig": {
  "tracingEnabled": true,
  "loggingEnabled": true,
  "inspectEnabled": true,
  "maxTraces": 50,
  "tracers": [],
  "shrinkingStrategy": "KEEPLONGEST"
}
所有的tracing配置選項在執行時可變。這些選項意味著:
--------------------------------------------------------------------
屬性                    值
trcingEnabled      true/false.false的設定tracing不可以用。Tracing可能會產生
                   額外的負載,主要是因為棧追蹤而產生的。所以如果不用的話,把它關
                   閉是明智的。
loggingEnabled     true/false.true表示每一個trace將會被記錄到Logger中,被稱
                   為MoSKitoTracer
inspectEnabled     true/false.true支援MoSKito檢查可用
maxTraces         每一個Tracer可有的最大數量traces. 實際上可以多10%
tracers           預定義的Tracers.這是基本的ProducerIds列表。實際上
                   理想的tracers應該是動態的,但你也可以通過配置來新增
shrinkingStrategy  " FIFO" or " KEEPLONGEST" - defined by net.
                   anotheria.moskito.core.config.tracing
                   .ShrinkingStrategy 。traces的保留策略
--------------------------------------------------------------------
Dashboards 儀表板
儀表板允許你看到你的系統執行的健康狀態。它可以完全定製並且可以被改變通過使用在配置檔案中的部分或者是通過MoSKito-inspect UI.你能夠建立任何數量的儀表板。當你不想看不到你係統關鍵部分的時候儀表板是有用的。
每一個儀表板由小部件組成。小部件可以是4種類型:
>Thresholds 閾值集合
>Gauges  規格
>Charts  圖表
>Producers 生產者

如圖:Dashboard.png


Thresholds
為了在儀表板中展示閾值集合額外添加了@thresholds部分包含了閾值的名字(精確匹配)
"@thresholds":[
  "OrderPerMinuteThreshold",
  "ShopServiceAVG"
]
Gauges
規格可以被新增到儀表板通過編輯合適的@gauges部分包含gauge名字(精確匹配)。
"@gauges":[
  "Memory",
  "Running",
  "Sessions",
  "SysLoad"
]
Charts
圖表部分允許你來展示被計算的值作為線性圖。更多資訊請看MoSKito概念模組的Accumulators部分。
每一個圖表有如下的屬性:
>Caption-允許設定chart標題,將會被展示在chart 盒子的頂端。
>Accumulators-accumulator名字(精確匹配)的列表,換句話說-chart lines
"@charts":[
  {
    "caption":"Threads",
    "accumulators":[
      "ThreadCount",
      "ThreadStateBlocked-1m",
      ...
    ]
  },
  ...
]
Producers 生產者
生產者能夠被新增到儀表板通過編輯合適的@producers部分。僅僅列出producer名字(精確匹配)。生產者將會被分組通過decorators
"@producers":[
  "ingredients",
  "orders"
]
Configure widgets 配置小元件
順序和存在的小元件可以被配置通過@widgets部分在每一個儀表板中來完成。在陣列中定義的順序就是在儀表板中的順序並且陣列項定義了出現在儀表板中的小元件。可能的元件名字為:"thresholds", "gauges", "charts", "producers".
"@widgets":[
  "gauges",
  "charts",
  "producers"
]
如果沒有單獨配置一個元件部分到儀表板的配置部分,那麼預設配置會被使用,其中包括:
"@widgets":[
  "thresholds",
  "gauges",
  "charts",
  "producers"
]
Plugins 外掛
Plugins部分允許載入自定義軟體被稱為外掛
"@pluginsConfig": {
    "@plugins": [
        {
            "name": "EmbeddedCentralConnector",
            "configurationName": "none",
            "className": "net.anotheria.moskito.central.connectors.embedded.EmbeddedConnector"
        }
    ]
}
對於每一個外掛,下面的值被配置:
--------------------------------------------------------------------
屬性                    值
name               外掛的名字,可見的。
configurationName  外掛配置的名字,是外掛型別的配置
className          外掛類的名字  類應該實現了net.anotheria.moskito
                   .core.plugins.Moskitoplugin
--------------------------------------------------------------------
Builtin Producers 內建的生產者
內建的生產者部分允許配置構建生產者應該預設可用。如果你沒有任何設定,所有的生產者都是可以的(預設可用)
例如:
"@builtinProducersConfig": {
    "javaMemoryProducers": false,
    "javaMemoryPoolProducers": false,
    "osProducer": false
}
支援的屬性為:
---------------------------------------------------------------------
屬性                         Producers(生產者)
javaMemoryProducers       記憶體是基於Runtime.getRuntime().freeMemory
javaMemoryPoolProducers   記憶體是基於GC記憶體池/空間
javaThreadingProducers    ThreadCountProducer(執行緒數量生產者)
                          ThreadStatesProducer(執行緒狀態生產者)
osProducer                OS stats(on *nix only)說明最大最小檔案等
runtimeProducer           執行時--程序名字和執行時間
gcProducer                建立一個gc生產者對於每一個垃圾收集器mbean在系統中發現的
---------------------------------------------------------------------
關於MBeans生產者和Tomcat 全域性請求程式生產者要求額外的配置。
MbeanProducerConfig 舉例:
"@mbeanProducersConfig": {
  "registerAutomatically": true,
  "updateAutomatically": true,
  "delayBeforeFirstUpdate": 15000,
  "@domains": [
    {
      "name": "java.lang",
      "classes": [
        "sun.management.ClassLoadingImpl"
      ]
    }
  ]
}
支援的屬性是:
---------------------------------------------------------------------
屬性                         Producers(生產者)
registerAutomatically       宣告如果生產者將會被自動註冊。預設不是
updateAutomatically         宣告如果生產者值會自動更新,預設是
delayBeforeFirstUpdate      時間在毫秒值在開始第一個生產者值更新之前,預設15秒
domains                     列出所有的域,null意味著生產者將會被建立根據所有
                            的MBean域。預設是null.
                            name-MBean域配置的名字
                            classes-類列表將會作為生產者註冊的,null意味著在域內的所有MBeans會被註冊。預設是null.
---------------------------------------------------------------------
TomcatRequestProcessorProducerConfig 舉例:
"@tomcatRequestProcessorProducerConfig": {
  "ajp": true,  //說明ajp程序應該被監視,預設為true
  "http": true  //說明http程序應該被監視,預設為true
}
Journey 歷程
歷程的配置在配置檔案中有他們自己的部分
"@journeyConfig": {
    "parameterLengthLimit": 200,
    "toStringCollections": false,
    "toStringMaps": false
 }
 每一個歷程按如下方式被配置:
---------------------------------------------------------------------
屬性                         Value值
parameterLengthLimit        引數長度的限制,如果引數長度超過了配置,將會被擷取
                            。這也應用到返回值。預設為100
toStringCollections         如果是true集合是“toStringed".如果是false,只有
                            大小被展示
toStringMaps                如果是true,map是”toStringed“。如果是false.只有
                            大小被展示
---------------------------------------------------------------------
ErrorHandling 錯誤處理
錯誤處理配置定義了MoSKito怎麼樣儲存和幫你處理錯誤發生在你的應用。
這是配置舉例:
"@errorHandlingConfig": {
  "autoChartErrors": true,
  "autoChartErrorsInterval": "1m",
  "logErrors": true,
  "@catchers": [
    {
      "clazz": "java.lang.IllegalArgumentException",
      "target": "LOGANDMEMORY",
      "parameter": "IllegalArgExcLog"
    },
    {
      "clazz": "org.springframework.web.util.NestedServletException",
      "target": "MEMORY",
      "parameter": ""
    }
  ],
  "catchersMemoryErrorLimit": 50
---------------------------------------------------------------------
屬性                         意義
autoChartErrors             如果是true,對於每一個MoSKito看到的異常都會建立一個
                            accumulator
autoChartErrorsInterval     error收集器使用的間隙名字。
                            這是用於autoChartedErrors(需要設定為true)
logErrors                   如果是true,所有的錯誤將會記錄到名為
                            auto-caught-errors.log的日誌檔案中。日誌名字可以修改在logback.xml(或者其他slf4j等你使用的日誌框架部分)
catchersMemoryErrorLimit    如果catchers被配置,他們將持有最大10%的錯誤,
                            比配置的限制值。預設是50
countRethrows               如果countRethrows是可以用,MoSKito將會分析如果
                            錯誤在執行中再次丟擲。預設是false.這是因為事實上,再次丟擲會被儲存在Threadlocal變數在MoSKito上下文內並且能夠導致記憶體洩漏如果MoSKitoContext.cleanup()沒有在執行之後呼叫的話。
@catchers                   被定義捕獲特定的錯誤
---------------------------------------------------------------------
Catchers 捕手
你能夠配置一個或多個捕手對於你想要研究的特定錯誤。
---------------------------------------------------------------------
屬性                         意義
clazz             異常類,例如java.lang.ILLegalArgumentException
target            捕獲目標,是其中之一:LOG, MEMORY or LOGANDMEMORY.
                  記憶體意味著棧跟蹤會被放到記憶體中通過console完成為了研究
                  日誌意味著異常將會被記錄在特定的日誌檔案中。
parameter         在日誌或者日誌和記憶體目標情況下,異常會被髮送。你需要
                  單獨配置這些在logback.xml檔案中
---------------------------------------------------------------------
捕手將可以檢視從Navigation point(導航點):每一個點|錯誤並且看起來如下

圖Catchers.png


每一個catcher將集裝到catchersMemoryErrorLimit 錯誤:

CatchersErrors.png


並且你可以通過單擊每一個錯誤檢視棧資訊:

CatchersSingleError.png


Auto charted errors 自動繪圖錯誤資訊
如果自動繪圖可用,則兩幅圖表會被建立對於每一個error,一個總的和一個初始值。初始化意味著錯誤在第一次執行緒執行遇到,總的-全部錯誤,包括接下來的全部錯誤。

如圖IllegalArgumentExceptionChart.png


這將使你可以看到並且分析當錯誤發生時。
Tagging 標記
標記允許你新增額外的資訊來記錄並且捕獲錯誤。一個例子標記配置如下:
"taggingConfig": {
  "autotagSessionId": true,
  "autotagIp": true,
  "autotagUserAgent": true,
  "autotagReferer": true,
  "@customTags": [
    {
      "name": "CustomerID",
      "attribute": "session.customerId"
    }
  ],
  "tagHistorySize": 10
}
Built in or Autotags. 內部構建或者自動標記
MoSKito 將會自動標記session,ip,referrer和使用者代理,除非你使他們失效通過設定正確的屬性到false在標記配置中。Tagging可以被新增在MoSKito2.8.4版本。
Custom Tags自定義標籤
MoSKito能夠自動使用任何header,parameter,request或者session屬性的值作為標籤。為了配置一個自定義標籤,你不得不定義一個名字和路徑作為一個json物件在@customerTags註解之下:
{
   "name": "CustomerID",
   "attribute": "session.customerId"
 }
其中名字是你想要的一切並且屬性由一個字首和屬性名組成,下面字首是支援的:
>header
>request
>session
>parameter
看CustomTagSource瞭解更多
Tag History 標記歷史
為了除錯和報告的目的,MoSKito保持了一系列元素歷史對每一個標記。這種方法你能看最近的值是什麼並且檢查是否他們是你希望看到的。預設的值是10.
關於配置的講解就結束了,接下來要看的是LOG4J的配置

相關推薦

java效能監控工具MoSKito學習--開始工作3

>MoSKito-Essential Configuration Guide Moskito的配置指導 從v2.x版本開始,MoSKito可以通過使用外部配置檔案來完成配置。這個配置是基於ConfigeMe-使用JSON配置結構的語法來完成。 MoSKito 配置是建

java效能監控工具MoSKito學習--MoSKito-Essential模組4

》Thresholds 閾值 What is a threshold? 什麼是閾值 一個閾值標記了一個生產者的效能邊界。當生產者超過了這些邊界(或上或下),閾值狀態會被改變。這樣你就知道這個生產者需要注意了。 Threshold Concepts to Remember 需

java效能監控工具MoSKito學習--概念解釋

2 MoSKito 的概念 >Producers, Stats and Values 生產者,統計和值  >>Producers 生產者  >>Stats 統計  >>StatValues 統計值  >>Values 值

JProfiler一個專業的Java效能監控工具

JProfiler是一個全功能的Java剖析工具(profiler),專用於分析J2SE和J2EE應用程式。它把CPU、執行緒和記憶體的剖析組合在一個強大的應用中。JProfiler可提供許多IDE整合和應用伺服器整合功能。JProfiler直覺式的GUI讓你可以找到效能瓶頸、抓住記憶體洩漏(memory 

JProfiler 8(一個很好的java效能監控工具) ubuntu

一、 下載註冊  JProfiler 8 註冊碼:你找找看在哪裡呢? 按預設選擇“Single or evaluation license” Name 和 Company 隨意 -----------------------憂鬱的分割線---------------

論持久戰之Java效能監控工具(jmap)

首先看一下Java官方提供的引數示例: 下面介紹三個常用引數(heap、dump、histo) -heap(to print java heap summary) ①堆配置資訊 ②堆使用資訊 -dump:(to dump jav

Java定時任務工具Quartz——學習筆記(

最近在準備做一個生日提醒的Demo,於是有了這篇部落格。咳咳,雖然可以在手機日曆設定提醒,但是我們要有自力更生的覺悟以及能力,自己能做當然用自己的嘛。 一、初步瞭解 百度百科是這樣介紹Quartz這個專案的。 Quartz可以用來建立簡單或為執行

深入理解Java虛擬機器總結虛擬機器效能監控工具效能調優(三)

深入理解Java虛擬機器總結一虛擬機器效能監控工具與效能調優(三) JDK的命令列工具 JDK的視覺化工具 效能調優 JDK的命令列工具 主要有以下幾種: jps (Java Process Status Tool): 虛擬機器程序

spring整合Java效能監控調優工具-Javamelody

JavaMelody能夠在執行環境監測Java或Java EE應用程式伺服器。並以圖表的形式顯示:Java記憶體和Java CPU使用情況,使用者Session數量,JDBC連線數,和http請求、sql請求、jsp頁面與業務介面方法(EJB3、spring、Guice)的執行數量,平

Java效能監控及調優工具

 1、JDK命令列工具                                                                        1.1、jps命令 jps用於列出Java的程序,jps可以增加引數,-m用於輸出傳遞給Java程序的引

Java應用程式效能監控工具

簡介 當一個軟體系統完成基本功能上線執行後,如前期設計不佳,後面很容易出現記憶體和效能問題。解決這些問題有多種途徑,其中最為常用的方式:藉助監控工具,直接找到問題點(或某個範圍),然後仔細研究程式碼,找出根因並整改。本文僅對效能類問題做深入探討 當程式出現效能問題後,

java自帶視覺化效能監控工具jconsole

1. 前言 想驗證你對 jvm 配的一些調優引數(比如 Xms、Xmx 等)有沒有起作用嗎? 想不想實時監控你自定義的執行緒池的在實際執行時的執行緒個數、有沒有死鎖? 應用出現 java.lang.OutOfMemoryError: Java heap space,你知

Java Web 伺服器效能監控工具 JavaMelody

1、maven 依賴 <dependency> <groupId>net.bull.javamelody</groupId> <artifactId>javamelody-core</art

java web伺服器效能監控工具JavaMelody

下載Jar包javamelody-1.47.0.jar和jrobin-1.5.9.jar http://code.google.com/p/javamelody/downloads/list http://code.google.com/p/javamelody/downl

VisualVM--Java效能監控分析工具

    VisualVM是JDK的一個整合的分析工具,自從JDK 6 Update 7以後已經作為Sun的JDK的一部分。     VisualVM可以做的:監控應用程式的效能和記憶體佔用情況、監控應用程式的執行緒、進行執行緒轉儲(Thread Dump)或堆轉儲(Heap

Java自帶的GUI效能監控工具Jconsole以及JisualVM簡介

1 Jconsole 1.1 簡介以及連線   JConsole是一個基於JMX的GUI工具,用於連線正在執行的JVM,它是Java自帶的簡單效能監控工具。下面以對tomcat的監控為例,帶領大家熟悉Jconsole這個工具。   Step 1,在dos/bash命

JVM效能監控工具)-jdk命令列工具

概述 當系統出bug需要定位問題的時候,知識、經驗是關鍵基礎,資料是依據,工具是運用知識處理資料的手段。這裡所說的資料包括:執行日誌,異常堆疊,GC日誌,執行緒快照(threaddump/javacore檔案),堆轉儲快照(heapdump/hprof檔案)等

Java】 Spring 框架初步學習總結()簡單實現 IoC 和 AOP

1.0 其中 表示 只需要 第一篇 否則 info fin pojo   Spring 是一個開源的設計層面的輕量級框架,Spring 的好處網上有太多,這裏就不在贅述。   IoC 控制反轉和 AOP 面向切面編程是 Spring 的兩個重要特性。   IoC(Inver

Linux效能監控工具Nmon安裝使用

安裝說明 安裝環境: 安裝方式:解壓包安裝 軟體:nmon_linux_14i.tar.gz 下載地址: nmon: http://nmon.sourceforge.net/pm ... nload nmonanalyser:  http:/

linux效能監控工具-(顯示系統整體資源使用情況-top命令)

顯示系統整體資源使用情況 -top命令 top命令是linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況: 前半部分是系統統計資訊,後半部分是程序資訊。 從左到右依次表示:系統當前時間,系統執行時間,當前登入使用者數。load average表示系統的平