Luminis Statistics from Uportal
February 23, 2007 | 3 Comments
Note: this is a reposting of an article I wrote on LumDev.net April 12, 2005. I am publishing it here because LumDev is currently experiencing technical difficulties. I have not updated this post in any way to reflect new versions or practices. It is still the 2005 article in every way. I would highly recommend reading that article’s commentary if LumDev.net is available when you are reading this.
As many of us who use and administer Luminis know, the stats are quite inadequate straight out of the box. There are some improvements in III.2, but they are still not enough. Some posts on here have suggested some other solutions that gain some ground. I have been instead researching Uportal’s build in StatsRecorderFactory support. After a lot of trouble initially getting this enabled, Grace Francisco at SCT support was finally able to get me what I was missing to try this out. The following is an account of how to enable these stats outlining what I like and don’t like about this solution. In short this is useful, but short of perfect.
1) cd CP_WEBINF/config
2) jar xf ../lib/uPortal.jar properties/portal.properties –> this actually will get picked up by our classpath, and much easier than editing the file, and rejarring it back to uPortal.jar
3) cd properties
4) edit portal.properties
5) change
#org.jasig.portal.services.stats.StatsRecorderFactory.implementation=org.jasig.portal.services.stats.DoNothingStatsRecorderFactory
to
org.jasig.portal.services.stats.StatsRecorderFactory.implementation=org.jasig.portal.services.stats.LoggingStatsRecorderFactory
6) turn the stat recorder settings ON, if you scroll down a few lines you can choose which ones you want.
7) bounce the webserver:
CP_ROOT/bin/rc/70-webserver stop
CP_ROOT/bin/rc/70-webserver start
8) add logging settings to CP_WEBINF/config/cplog4j.properties
# - STATS-RECORDER
log4j.logger.uportal=INFO, stats
log4j.appender.stats=org.apache.log4j.RollingFileAppender
log4j.appender.stats.File=${util.logservice.log4j.directory}/stats.log
log4j.appender.stats.MaxFileSize=10000KB
log4j.appender.stats.MaxBackupIndex=10
log4j.appender.stats.layout=org.apache.log4j.PatternLayout
log4j.appender.stats.layout.ConversionPattern=[%d{ISO8601}] %m%n
These are some of the log entries created in stats.log:
[2005-03-18 17:10:11,828] [INFO] WebServlet [uportal]: STATS-RECORDER: (cpadmin) logged in successfully at Fri Mar 18 17:10:11 MST 2005
[2005-03-18 17:10:30,937] [INFO] WebServlet [uportal]: STATS-RECORDER: Channel [E-mail Channel, 221, u11l1n13] was rendered in layout 1 by (cpadmin) at Fri Mar 18 17:10:30 MST 2005
[2005-03-18 17:10:30,937] [INFO] WebServlet [uportal]: STATS-RECORDER: Channel [Personal Announcements, 210, u11l1n14] was rendered in layout 1 by (cpadmin) at Fri Mar 18 17:10:30 MST 2005
[2005-03-18 17:10:30,937] [INFO] WebServlet [uportal]: STATS-RECORDER: Channel [Campus Announcements, 211, u11l1n15] was rendered in layout 1 by (cpadmin) at Fri Mar 18 17:10:30 MST 2005
[2005-03-18 17:10:30,937] [INFO] WebServlet [uportal]: STATS-RECORDER: Channel [My Headlines, 212, u11l1n17] was rendered in layout 1 by (cpadmin) at Fri Mar
[2005-03-18 17:12:43,015] [INFO] WebServlet [uportal]: STATS-RECORDER: Session destroyed for (cpadmin) at Fri Mar 18 17:12:43 MST 2005
The first major limitation of this is that it is logging all the stats in a file. So in my instance I am running a cron’d process hourly to go in and pick up the stats files, parse them, and load them into Oracle. My table structure is attached so that you can see the sort of info I’m am acquiring. The script I’ve written is in PHP and if anyone is really interested, I could share that as well. In a perfect world, there would be a Stats Recorder for Oracle, so that it could go straight in without the extra steps. Someone has written RDBMStatsRecorder which hits Postgres. That may be a good base for building an Oracle version. (Google search RDMBStatsRecorder to find out more).
The second limitation is that it is logging all the STATS-RECORDER entries into the cp.log as well as stats.log. This makes for a very dirty cp.log. Someone who knows more about log4j may be able to explain how to resolve this. I unfortunately do not…
The third limitation is that there is not a way to track what tabs are being accessed. This is an important statistic for a bunch of reasons. I reported this desire to support and they entered Enhancement Request #26422 on my behalf. Another option would be to try and glean these from the webserver logs, but of course then you would not have a username and associated role to tie to these stats, so I’m not certain how useful that might be… Better than nothing though.
You can see my PHP code here: http://my.plymouth.edu:81/code/stats.phps
Tags: cplog4j, java, luminis, php, statistics, stats, stats-recorder, sungard, sungardhe, uportal
Luminis Modification Procedure
February 19, 2007 | 2 Comments
Over the last few years of administering a SunGard Higher Education Luminis portal, I have often found it necessary to make modification to the base system. The mods themselves are reasonably simple, but remembering to maintain them across patches and upgrades can prove challenging. In response to this, the following procedure has proven to be most efficient for us at Plymouth State University.
When making modifications to your base Luminis system…
- Copy the original file to filename.version
(ex. cp nested-tables.xsl nested-tables.xsl.3.3.3.16) - Make your modifications to the original file.
(ex. vi nested-tables.xsl) - When you are happy with the complete and tested modifications, copy the file to filename.psu
(ex. cp nested-tables.xsl nested-tables.xsl.psu) - Once a modification is complete you make notes on why these changes were made in ~/CHANGELOG
When you have completed this, you will have three files where you previously had only one. The reason for making all these copies is to protect yourself during patches. You will always have a copy of the file with your modifications and a copy of the unmodified version. This sets you up nicely for the following patch procedure.
Rolling modification back in when patching Luminis…
- Make note of the current version number.
(ex. 3.3.3.16, you get this with the cpver command) - Apply the patch as documented .
- Use find to get a list off all your modifications.
(ex. find $CP_ROOT -name “*.psu”) - If the file is a binary archive (jar or car) you will need to extract it and apply the following steps for each modified file inside the archive.
(ex. mkdir tmp; cp uPortal.jar tmp; cd tmp; jar xvf uPortal.jar; rm uPortal.jar) - Use diff to compare the file against your custom version.
(ex. diff nested-tables.xsl nested-tables.xsl.psu)- If there are no differences, the file was not updated by the patch, in this case you should move the old versioned file to match the new version number. You are complete with this mod.
(ex. mv nested-tables.xsl.3.3.3.16 nested-tables.xsl.3.3.3.64)
- If there are no differences, the file was not updated by the patch, in this case you should move the old versioned file to match the new version number. You are complete with this mod.
- If step 5 yielded differences, you need to see if the file was changed from the previous version.
(ex. diff nested-tables.xsl nested-tables.xsl.3.3.3.16)- If there are no differences, then the file hasn’t changed and you can put your mod back in place and simply update the version number. You are complete with this mod.
(ex. cp nested-tables.xsl nested-tables.xsl.3.3.3.64; cp nested-tables.xsl.psu nested-tables.xsl)
- If there are no differences, then the file hasn’t changed and you can put your mod back in place and simply update the version number. You are complete with this mod.
- If step 6 yielded differences, you need to merge your changes into the new version, this could be simple or complicated depending on how much has actually changed. This is a manual process where you will need to reference ~/CHANGELOG to detemine the extent of what was modified.
- If the file was inside a binary (step 4), recreate the archive
(ex. jar cf uPortal.jar .; cp uPortal.jar ../uPortal.jar.psu; cp uPortal.jar ../uPortal.jar) - If all your mods have been addressed, you can startup and test Luminis. You are complete.
(Note: Be sure to test the patched Luminis cleanly before applying mods)
The following steps must be done for each modified file
Obviously this is still a fair amount of work, but it is designed to be forgiving of mistakes. You generally have a fair number of files that are self explanatory in name and nature. Additionally, if done in proper order it can be done against a fair number of mods quickly. Therefore this procedure is scalable.
If anyone is doing anything similar, drastically different, or has questions or concerns about this process, please let me know in the comments section. I’m always looking to gain efficiency wherever possible, so please chime in!
Tags: luminis, modifications, nested-tables.xsl, patch, patches, plymouth state university, portal, sungard, sungardhe, uportal
SunGard SCT Summit 2005 Presentation
July 18, 2005 | 6 Comments
Earlier this year I presented at Summit in Hawaii on Plymouth State University’s implementation of LDI for eLearning. LDI stands for Luminis Data Integration. Basically we use LDI for semi-realtime data integration and SSO between Banner, WebCT and Luminis.
A few people have requested a copy of my presentation, so here it is: LDI Implementation Case Study at PSU
Tags: banner, integration, ldi, ldis, luminis, luminis data integration suite, portal, presentation, sso, sungardsct, uportal, webct
Luminis Developers Network
June 21, 2005 | Leave a Comment
Those who know me already know I work for Plymouth State University in Plymouth, NH. My unofficial title is Web Developer and I spend a lot of time developing web applications for internal audiences. In addition to my development duties, I also specialize in integrating separate software systems. Enter the portal. Most of my work revolves around one product, Luminis made by SunGard SCT. This portal solution is based off the open-source product UPortal. Our implementation is dubbed myPlymouth.
On to my point… Doing development for myPlymouth on the Luminis platform became far more interesting in December of last year when Jon Wheat of Messiah College created the Luminis Developers Network (aka LDN, aka LumDev). Suddenly I had a whole community of developers doing similar jobs as me, wanting to enhance to product in similar way, and with an easy way to collaborate on these efforts.
My excitement about LDN has caused me to shamelessly promote the site on many occasions. In Hawaii at Summit, in Boston during a presentation, as well as in every communication I’ve had with anyone even remotely interested in Luminis.
Anyway, I post on LDN often and in the future will likely syndicate my posts here. The following bulleted list summarizes the posts I originated there.
- Syndicating LDN in Luminis III.2 (12/20/04) - my first post, I found it ironic that the LDN RSS did not properly syndicate inside Luminis. Jon got it fixed though.
- Statistics (1/21/05) - as I began researching a way to get stats, I requested ideas on how to accomplish this.
- Classifieds Channel - How To (1/27/05) - step by step instructions on how to get the UPortal communities “Classifieds Channel” implemented in Luminis.
- My Calendar Channel (2/20/05) - a request for info on how to hack the delivered calendar channel
- Summit ‘05 Lum Dev Meetup (3/2/05) - a request to meetup with anyone from LDN who was interested while I was in Hawaii. (I ended up meeting a few and recruiting more. For related escapades, register at LDN and read these comments)
- Luminis Statistics from Uportal (4/12/05) - an overview of how to extract statistics from the underlying UPortal infrastructure.
- YaleCAS (4/18/05) - implementation details and excitement about YaleCAS, a great tool for SSO integration with homegrown apps, especially PHP based apps using phpCAS.
- Site Demos/Guest Logins (5/2/05) - a request for demo logins from the community
- CampusEAI Consortium (6/7/05) - a question to the community about CampusEAI. I’m still curious about this.
- Northeast SCT Luminis Recruitment/Business Case (6/10/05) - summarizes the presentation I attended and presented in recently in Boston.
Obviously I’ve also commented on a ton of other people’s posts, but that is less necessary for me to summarize. Though I will occasionally post summaries of other posts I find particularly intriguing.
Tags: cas, higher education, integration, luminis, portal, sct, sso, sungardsct, uportal, yalecas
