diff options
author | Robert Adams | 2013-08-06 08:21:16 -0700 |
---|---|---|
committer | Robert Adams | 2013-08-08 09:45:01 -0700 |
commit | 50c163ae6ca734610694f4edcc109ff0bdc65ba1 (patch) | |
tree | 10ed643a31a62ac2014e6e1c2022a51af6b53ade | |
parent | * Added set water height <height> [<x>] [<y>] console command following the s... (diff) | |
download | opensim-SC-50c163ae6ca734610694f4edcc109ff0bdc65ba1.zip opensim-SC-50c163ae6ca734610694f4edcc109ff0bdc65ba1.tar.gz opensim-SC-50c163ae6ca734610694f4edcc109ff0bdc65ba1.tar.bz2 opensim-SC-50c163ae6ca734610694f4edcc109ff0bdc65ba1.tar.xz |
Add a JSON web fetch of the statististics managed by StatsManager.
Disabled by default. Enable by setting
[Startup]ManagedStatsRemoteFetchURI="Something"
and thereafter "http://ServerHTTPPort/Something/" will return all the managed
stats (equivilent to "show stats all" console command).
Accepts queries "cat=", "cont=" and "stat=" to specify statistic category,
container and statistic names. The special name "all" is the default and returns
all values in that group.
-rw-r--r-- | OpenSim/Framework/Monitoring/StatsManager.cs | 31 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSim.cs | 7 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 2 |
3 files changed, 40 insertions, 0 deletions
diff --git a/OpenSim/Framework/Monitoring/StatsManager.cs b/OpenSim/Framework/Monitoring/StatsManager.cs index c8e838c..23c6f18 100644 --- a/OpenSim/Framework/Monitoring/StatsManager.cs +++ b/OpenSim/Framework/Monitoring/StatsManager.cs | |||
@@ -26,10 +26,12 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections; | ||
29 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
30 | using System.Linq; | 31 | using System.Linq; |
31 | using System.Text; | 32 | using System.Text; |
32 | 33 | ||
34 | using OpenSim.Framework; | ||
33 | using OpenMetaverse.StructuredData; | 35 | using OpenMetaverse.StructuredData; |
34 | 36 | ||
35 | namespace OpenSim.Framework.Monitoring | 37 | namespace OpenSim.Framework.Monitoring |
@@ -262,6 +264,35 @@ namespace OpenSim.Framework.Monitoring | |||
262 | return map; | 264 | return map; |
263 | } | 265 | } |
264 | 266 | ||
267 | public static Hashtable HandleStatsRequest(Hashtable request) | ||
268 | { | ||
269 | Hashtable responsedata = new Hashtable(); | ||
270 | string regpath = request["uri"].ToString(); | ||
271 | int response_code = 200; | ||
272 | string contenttype = "text/json"; | ||
273 | |||
274 | string pCategoryName = StatsManager.AllSubCommand; | ||
275 | string pContainerName = StatsManager.AllSubCommand; | ||
276 | string pStatName = StatsManager.AllSubCommand; | ||
277 | |||
278 | if (request.ContainsKey("cat")) pCategoryName = request["cat"].ToString(); | ||
279 | if (request.ContainsKey("cont")) pContainerName = request["cat"].ToString(); | ||
280 | if (request.ContainsKey("stat")) pStatName = request["cat"].ToString(); | ||
281 | |||
282 | string strOut = StatsManager.GetStatsAsOSDMap(pCategoryName, pContainerName, pStatName).ToString(); | ||
283 | |||
284 | // m_log.DebugFormat("{0} StatFetch: uri={1}, cat={2}, cont={3}, stat={4}, resp={5}", | ||
285 | // LogHeader, regpath, pCategoryName, pContainerName, pStatName, strOut); | ||
286 | |||
287 | responsedata["int_response_code"] = response_code; | ||
288 | responsedata["content_type"] = contenttype; | ||
289 | responsedata["keepalive"] = false; | ||
290 | responsedata["str_response_string"] = strOut; | ||
291 | responsedata["access_control_allow_origin"] = "*"; | ||
292 | |||
293 | return responsedata; | ||
294 | } | ||
295 | |||
265 | // /// <summary> | 296 | // /// <summary> |
266 | // /// Start collecting statistics related to assets. | 297 | // /// Start collecting statistics related to assets. |
267 | // /// Should only be called once. | 298 | // /// Should only be called once. |
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 58f9368..13fdb3b 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -172,6 +172,13 @@ namespace OpenSim | |||
172 | if (userStatsURI != String.Empty) | 172 | if (userStatsURI != String.Empty) |
173 | MainServer.Instance.AddStreamHandler(new OpenSim.UXSimStatusHandler(this)); | 173 | MainServer.Instance.AddStreamHandler(new OpenSim.UXSimStatusHandler(this)); |
174 | 174 | ||
175 | if (managedStatsURI != String.Empty) | ||
176 | { | ||
177 | string urlBase = String.Format("/{0}/", managedStatsURI); | ||
178 | MainServer.Instance.AddHTTPHandler(urlBase, StatsManager.HandleStatsRequest); | ||
179 | m_log.WarnFormat("[OPENSIM] Enabling remote managed stats fetch. URL = {0}", urlBase); | ||
180 | } | ||
181 | |||
175 | if (m_console is RemoteConsole) | 182 | if (m_console is RemoteConsole) |
176 | { | 183 | { |
177 | if (m_consolePort == 0) | 184 | if (m_consolePort == 0) |
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index f0c088a..b032e7f 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -75,6 +75,7 @@ namespace OpenSim | |||
75 | protected int proxyOffset = 0; | 75 | protected int proxyOffset = 0; |
76 | 76 | ||
77 | public string userStatsURI = String.Empty; | 77 | public string userStatsURI = String.Empty; |
78 | public string managedStatsURI = String.Empty; | ||
78 | 79 | ||
79 | protected bool m_autoCreateClientStack = true; | 80 | protected bool m_autoCreateClientStack = true; |
80 | 81 | ||
@@ -188,6 +189,7 @@ namespace OpenSim | |||
188 | CreatePIDFile(pidFile); | 189 | CreatePIDFile(pidFile); |
189 | 190 | ||
190 | userStatsURI = startupConfig.GetString("Stats_URI", String.Empty); | 191 | userStatsURI = startupConfig.GetString("Stats_URI", String.Empty); |
192 | managedStatsURI = startupConfig.GetString("ManagedStatsRemoteFetchURI", String.Empty); | ||
191 | } | 193 | } |
192 | 194 | ||
193 | // Load the simulation data service | 195 | // Load the simulation data service |