Hi guys,
I am adding some WEB tools for those users which are very admin or developers to my app. So far I added WAObjectLog and now a simple component that renders the result of "(Smalltalk at: #SystemRepository) fileSizeReport. " I wonder which other kind of easy stats or production tool I might be missing. If there is something else that could be of use to me, please let me know. I want to provide as much as possible I have at hand for a small amount of effort, to my admin users. Thanks in advance, _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Mariano,
Great idea! I took a look at the `gs` command in tODE and here are a couple of more things that you could provide: System gemConfigurationReport. System stoneConfigurationReport. System clientVersionReport. System clientVersionReport. System clientVersionReport. "The following provides a desription for the current gemstone gem. `System currentSessions` provides list of all sessionIds in system, so you could also generate a table of all sessions and their description" | sessionId ar | sessionId := System session. ar := System descriptionOfSession: sessionId. ^ Dictionary new at: #'userProfile' put: (ar at: 1); at: #'gemPid' put: (ar at: 2); at: #'gemHost' put: (ar at: 3); at: #'gemPrimitiveNumber' put: (ar at: 4); at: #'mostRecentTransactionTime' put: (ar at: 5); at: #'sessionState' put: (ar at: 6); at: #'transactionMode' put: (ar at: 7); at: #'onOldestCommitRecord' put: (ar at: 8); at: #'sessionSerialNumber' put: (ar at: 9); at: #'sessionId' put: (ar at: 10); at: #'gciHostIP' put: (ar at: 11); at: #'sessionPriority' put: (ar at: 12); at: #'gciUniqueHostId' put: (ar at: 13); at: #'mostRecetStoneRequest' put: (ar at: 14); at: #'sessionLoginTime' put: (ar at: 15); at: #'systemCommitsSinceSessionView' put: (ar at: 16); at: #'systemDescription' put: (ar at: 17); at: #'numTempObjIds' put: (ar at: 18); at: #'numTempPageIds' put: (ar at: 19); at: #'sessionVoteState' put: (ar at: 20); yourself Dale On 06/09/2015 09:46 AM, Mariano
Martinez Peck via Glass wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
All,
One of the basic idea of tODE is to provide a smalltalk level api things that would be callable from a number of different applications, while sharing the same basic algorithms. The descriptionOfSessions: call below is a case in point, since the GemStone API returns at array, different users of the array may decide to use different strings. For the tODE command, I made up short labels based on the sentence describing each field in the array, but assuming I've picked good names (not always a good assumption:) all GsDevKit users should be presented with a common set of names for the session description. If you were to call the tODE command API, then that goal would be achieved ... tODE is much more than just a development GUI ... This Smalltalk command api idea extends to doing Metacello loads, manipulating packages, searching for methods, etc. So often useful snippets of code gets buried off in workspaces or embedded in the gui for a tool (whether a Seaside tool or client Smalltalk tool) and each user that comes along has to re-invent things from scratch ... so the command api is intended to provide a common Smalltalk-level api for sharing the fundamental algorithms upon which GUI tools are built, making it possible for multiple implementations of GUIs to share common functionality as well as make the functionality easily accessible for use in your own production management code ... I know that it's on me to deliver tODE and I should be finished with my 3.3 commitments this week and will start on the documentation in earnest as soon as I'm done with that to get tODE and GsDevKitHome 1.0.0 ready for consumption ... Dale On 06/09/2015 10:02 AM, Dale Henrichs
wrote:
Mariano, _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Administrator
|
In reply to this post by GLASS mailing list
Man! You really want that clientVersionReport!!! :-)
|
On 06/09/2015 10:44 AM, Richard Sargent via Glass wrote: > GLASS mailing list wrote >> Mariano, >> >> Great idea! >> >> I took a look at the `gs` command in tODE and here are a couple of more >> things that you could provide: >> >> System gemConfigurationReport. >> System stoneConfigurationReport. >> System clientVersionReport. >> System clientVersionReport. >> System clientVersionReport. > Man! You really want that clientVersionReport!!! > :-) > Dale _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Hi Dale, Thanks for such a great answer. I have just done a little component that renders all of that stuff in simple tables. Do you think it could be useful for others too? if true, then I can push it in the tools production package. BTW...is there some css class i can use to style tables that come out of the box with Seaside? because I use bootstrap (and actually my own settings to twitter bootstrap) I ask because without styles it is a bit ugly...but I do not want to couple it with anything. Thanks in advance, On Tue, Jun 9, 2015 at 2:02 PM, Dale Henrichs via Glass <[hidden email]> wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
On Tue, Jun 9, 2015 at 2:30 PM, Dale Henrichs via Glass <[hidden email]> wrote:
That's cool to hear Dale. If tODE can provide a API / model besides the "Pharo UI" then that's supercool because it means I can, for example, reuse some of tODE "backend" for some seaside components. Thanks!
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
On Tue, Jun 9, 2015 at 2:02 PM, Dale Henrichs via Glass <[hidden email]> wrote:
Hi Dale, Is there a way to know which are the seaside gems and the seaside maintenance gem from such a list? Watching the description and everything, I cannot find an easy way of knowing it. The only thing is the gem pid. But then it is not that easy for me to know if such a pid is a seaside gem or not. Is there a way? I would like to list the seaside gems and their status (if at least one seaside gem works)... (I am thinking if I could do a http request over the exact port and check on timeout). mmmm maybe I can do a "System perform: " over the monit status. grrrr gemstone doesn't have permissions to execute monit..grr. Ok, I will see... but any idea is appreciated. Cheers, Thanks
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
You can set the gem description like this in it’s ‘startup script’ (Smalltalk part:)
System _cacheName: '$1_$2’. The $1 and $2 are env vars in my script that contain the adaptor name and port. I think this is also in the standard startSeaside30_Adaptor script but I don’t know for sure. This way, the session name shows up in the stats and should be available where you are looking for it as well I believe. Johan
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
On Wed, Jun 10, 2015 at 3:37 AM, Johan Brichau via Glass <[hidden email]> wrote:
Thanks Johan, that was kind of what I was looking for. It seems the startSeaside30_Adaptor does indeed the thing: System _cacheName: ((x := '$1-' , (GsSession serialOfSession: System session) printString , '-' , System myUserProfile userId) copyFrom: 1 to: (x size min: 31)). I put a transcript show in there and it should be setting something like 'FastCGI_service-140-userxxx', which is correct. The problem is that my session descriptions still does not show it. See below.
Where? Where it displays the session name in the stats? From #descriptionOfSession: I do not see it in any field... Thanks!
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
I was assuming it could be found somewhere there. I’ll check after lunch if I can find anything. I’m pretty interested in this kind of thing too. What we do is have a rest api that produces stats (both gemstone and application specific) and we gather that in a pharo-based web app. Johan _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Well this one is a bit convoluted and I will be putting together a
tODE command/api to make this a bit easier...
System class>>_cacheName: sets the 'ProcessName' entry in the cacheStatistics array in the SPC. There is a cacheStatitics array in the SPC for each GemStone process. Different processes have different entries in the cacheStatistics array .... To get the descriptions for the cacheStatics for a given process type you use System class>>cacheStatisticsDescriptionForType: (see the comment for the arg to use). For a gem (type 8), there are 223 cacheStats in GemStone 3.2.2 (the stone version I happen to be working with at the moment). The first description is 'ProcessName' and that's where the name can be found... To get the 'ProcessName' for your current session: | cacheStatValues cacheStatDescriptions myProcessName | cacheStatValues := System gemCacheStatisticsForSessionId: System session. cacheStatDescriptions := System cacheStatisticsDescriptionForType: 8. myProcessName := cacheStatValues at: (cacheStatDescriptions indexOf: 'ProcessName') You can also access cacheStatistics based on pid (cacheStatisticsProcessId:), by gem name (cacheStatsForGemWithName:), etc... Dale On 6/10/15 2:42 AM, Mariano Martinez
Peck via Glass wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
It looks like `System cacheStatisticsForAllSlotsShort` is a good
shortcut for getting a basic summary for all of the processes
attached to the shared cache.
Dale On 6/10/15 9:44 AM, Dale Henrichs
wrote:
Well this one is a bit convoluted and I will be putting together a tODE command/api to make this a bit easier... _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Not that I'm aware of.
On 6/9/15 4:35 PM, Mariano Martinez
Peck wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
On 6/9/15 11:21 PM, Mariano Martinez Peck wrote: > > That's cool to hear Dale. If tODE can provide a API / model besides > the "Pharo UI" then that's supercool because it means I can, for > example, reuse some of tODE "backend" for some seaside components. > > Thanks! > That's exactly the intent ... Below is a listing of the man pages for all of the tODE commands that are available ... The basic idea is that for each of the commands, there is a command line interface that is built on top of a Smalltalk api, so it is possible for you to access the functionality for each of the commands from your own Smalltalk application. Also for each of the GUI components the menu items are implemented by using the Smalltalk api for the various commands, so any functionality available via menu items through the gui, should be available via command line and/or Smalltalk api ... The bash shell scripts for GsDevKitHome are also written to call the tODE command line commands. So yes, you should be able to build a tool using Seaside that uses the same API as the tODE GUI and the tODE command line and the GsDevKitHome bash scripts. I think that this kind of access to a common api is very important ... Dale abort - Abort transaction bedit - batch edit tool begin - Begin transaction break - Method breakpoint management break clear - Clear breakpoints break disable - Disable breakpoints break enable - Enable breakpoints break list - List breakpoints break remote - Enable/disable remote breakpoints break set - Set breakpoints break steps - List step points for a method browse - Find and view classes and methods browse categories - List class categories browse category - Find and view lists of classes in a category browse class - Find and view lists of classes browse configurations - List configurations browse diff - View differences between two methods browse list - View method definitions loaded from nodes browse method - Find and view lists of methods matching patterns browse package - Find and vew lists of classes in a package browse packages - List packages browse project - Find and vew lists of classes in a project browse references - Find and view lists of methods referencing certain artifacts browse sender - Find and view lists of methods sending particular messages browse source - Find and view strings in method source browse symbolDict - Find and view a list of classes in a symbol dictionary browse undeclared - View references to undeclared symbols browse variables - Find and view references to instance, class instance and class variables browse versions - Find and view versions of a method bu - Manage GemStone backups bu backup - Make a GemStone backup bu directory - Define default backup directory bu info - Display info about a particular backup bu list - Display info about all backup and snapshot files bu remove - Remove backup file from backup directory bu restore - Restore from a GemStone backup bu snapshot - Make a snapshot of the extent files cat - Display contents of node cd - Change node cls - class management cls accessors - Define instance variable getter and setter methods for the class cls category - Move class to a new category cls comment - View and define the class comment cls copy - Make a copy of a class cls create - Create a new class cls definition - View and define the class cls history - View class history cls protocol - Define and modify class protocol cls remove - Remove classes cls rename - Rename classes commit - Commit transaction cp - Copy node ds - Display node contents (a verbose ls) edit - Open navigation or text window on object eval - Evaluate Smalltalk expression find - Find classes and methods find category - Find and view lists of classes in a category gemtool - Provide GemTools MenuBar functionality gemtool bu - Open tODE equivalent of GemTools tools gemtool find - Prompt-based variants of the `browse` family of commands gemtool menuBar - Emulate GemTools Launcher Menus gemtool tools - Open tODE equivalent of GemTools tools git - execute git commands gs - execute gemstone commands gs configuration - Gem and Stone configuration reports gs fileout - Fileout Classes, Categories or Packages gs fileSizeReport - Report on repository size and amount of free space gs gemtools - Emulate GemTools Launcher Menus gs halt - Halt on AlmostOutOfMemory exception gs mfc - Perform a Mark for Collection gs objectFor - Resolve an object from given objectId gs sessionDescription - Session information report gs version - OS, hardware and GemStone version attributes for Client, Gem, or Stone history - list command history inspect - Open navigation on object limit - control char, list, and oops display limits ls - list node contents man - produce man page for a command mc - monticello package commands method - method management method browse - View methods method copy - Copy method to another class method versions - Open window on method versions method move - Move method to another class method protocol - Move method to another protocol method remove - Remove method mkdir - create a new internal (directory) node mm - metacello commands mmb - metacello baseline commands mount - mount file directory into tODE object structure mr - monticello repository commands mv - move node (rename) ol - View and manipulate object log entries ol clear - Remove object log entries ol view - View object log entries package - Metacello package management support. pf - control ProfMonitor port - porting tools (sentButNotImplemented, undefinedSymbols) project - Metacello project management support. project clone - Clone repository (github only) project commit - Commit the Metacello project project compare - View differences between repository versions (git only) project diff - View code differences between image and repository project entry - Create a new project entry project list - List Metacello projects project load - Load the Metacello project project lock - Lock project registration project log - Browse commit log for the Metacello project (git only) project prime - Prime the project registry project refresh - Refresh project entries in project list project registry - Inspect the project registry project rehome - Point package repository groups for project to new repository project summary - View report of changed packages and methods project validate - Validate the project registrations project workdir - Create working directory for project ps - execute process commands ps list - Open a process browser on process instances pwd - print working node rename - rename support repository - Metacello repository management support. rm - remove node rsync - Linux-style object structure copying sh - spawn new shell stack - access recent command result stack ston - import/export objects to/from disk (STON format) test - execute sunit commands touch - create new leaf node ts - execute test commands (debug, list, run) ws - Open workspace on an object _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
On Wed, Jun 10, 2015 at 3:37 AM, Johan Brichau via Glass <[hidden email]> wrote:
Dale, Johan is right. By default in startSeaside30_Adaptor we only include the $1. But the port is very useful too. In fact, I also prefixed it with "Seaside". So in my script it looks like: run | x | "set _cacheName: for Gem to get unique id in statmon output. see http://code.google.com/p/glassdb/issues/detail?id=132" System _cacheName: ((x := 'Seaside-$1-$2-' , (GsSession serialOfSession: System session) printString , '-' , System myUserProfile userId) copyFrom: 1 to: (x size min: 31)). % I would do this by default in GsDevKit/Glass. Cheers,
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
This makes sense, I've machine gunned bugs for the open source
projects[1][2][3] and submitted a bug to change the scripts shipped
with GemStone 3.3 (internal bug
45368):)
Dale [1] https://github.com/dalehenrich/tode/issues/172 [2] https://github.com/GsDevKit/gsDevKitHome/issues/81 [3] https://github.com/GsDevKit/gsApplicationTools/issues/33 On 6/10/15 12:08 PM, Mariano Martinez
Peck via Glass wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Cool. Thanks. On Wed, Jun 10, 2015 at 4:35 PM, Dale Henrichs via Glass <[hidden email]> wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Other tools for stats if you're looking are
statsd: https://codeascraft.com/2011/02/15/measure-anything-measure-everything/ client: MCHttpRepository location: 'http://ss3.gemtalksystems.com/ss/Statsd' user: '' password: '' and https://segment.com client: MCHttpRepository location: 'http://smalltalkhub.com/mc/pdebruic/SegmentIO/main' user: '' password: ''
|
Free forum by Nabble | Edit this page |