- Create a new dataset called COUNTRIES to select all unique Country information. e.g. A sample SQL is "SELECT distinct COUNTRY from CUSTOMERS".
- Create a new dataset called StatesInCountry to select all unique State information for a given country. e.g. A Sample SQL is "SELECT distinct STATE from CUSTOMERS WHERE COUNTRY = ?". Leave the parameter binding for the first parameter (param_1) to NONE for now. We will change it later.
- Create a new Cascading Parameter Group called "paramStates". Choose "Multiple Dataset" option as we will have to select information from two datasets created above.
- Click on Add Button on the "New Cascading Parameter" dialog to add a new Cascading parameter. Enter the name for the cascading parameter as "paramCountries", choose COUNTIRES dataset created in Step1 as the dataset and select the "COUNTRY" fields for value and display text.
- Click on Add button again to add the state cascading parameter. Enter the name for the cascading parameter as "paramStatesInCountry", choose the StatesInCountry dataset created in Step 2 as the dataset and select the "STATE" field for value and display text.
- Click Ok to close "New Cascading Parameter" dialog. Please see the attached screenshot containing the Cascading Parameter Group information.
- Now edit the StatesInCountry dataset created in step 2, goto Parameters section, edit the param_1 parameter binding and set the LinkedToReport Parameter value to the "paramCountries" cascading parameter created in step 4. Click ok to save the changes.
Wednesday, July 28, 2010
BIRT Tip: Dependent Parameters in your reports
Wednesday, July 14, 2010
5 Things You Didn't Know About Java series from Developerworks
Tuesday, July 13, 2010
Video demos of Tivoli products
http://www.ibm.com/developerworks/wikis/display/tivolimediagallery/Home
Tuesday, June 29, 2010
Create a virtual data center with POWER7 and IBM Tivoli Provisioning Manager
Sent to you by Frank Tate via Google Reader:
Have you ever wondered how to bundle together data center resources? Do you ever have to manually deploy and configure your servers, operating systems, middleware, applications, storage and networking devices? They can be managed as a single entity using physical and virtual IBM servers. In this article, you will learn what a virtual data center is, how to create one using POWER7 VMControl and IBM Tivoli Provisioning Manager, and how to use a virtual data center to manage your IT systems and virtualization technologies as a single point of control access. In the process, we'll show you an example of how you can use the Tivoli product for patch management, which is one of the most difficult tasks to manage in a large server farm.
Things you can do from here:
- Subscribe to IBM developerWorks : Tivoli using Google Reader
- Get started using Google Reader to easily keep up with all your favorite sites
5 things you didn't know about ... Java performance monitoring, Part 1
Sent to you by Frank Tate via Google Reader:
Blaming bad code (or bad code monkeys) won't help you find performance bottlenecks and improve the speed of your Java applications, and neither will guessing. Ted Neward directs your attention to tools for Java performance monitoring, starting with five tips for using Java 5's built-in profiler, JConsole, to collect and analyze performance data.
Things you can do from here:
- Subscribe to IBM developerWorks : Java technology using Google Reader
- Get started using Google Reader to easily keep up with all your favorite sites
Friday, June 18, 2010
HTML 5 TEP Interface
I think this where i will focus any free time. This should allow for mobile browsers to render the interface and be a lot quicker.
Thursday, June 17, 2010
Never watch 8 episodes of the Sopranos
This is not technical, just a word of advice. I watched 8 episodes of the Sopranos on DVD back to back. I started swearing at truly inapprpriate moments. Probably good to throw a Brady Bunch episode in the mix.
Wednesday, June 16, 2010
How to enable file transfer feature in ITM 6.2.2 FP 2
Who needs an agent?
will see what I can do.
Silent Install for Agent Builder Files
A better alternative to free virtualization.
Hushing those Navigator Updates in TEP
KFW_CMW_DETECT_AGENT_ADDR_CHANGE=N
The Navigator function detects when the IP@ for an Agent is discovered. If the Agent environment is constantly changing or has improper configurations that generate excessive Navigator tree rebuilding, consider adding this environment variable to have any discovery of changes or additions of IP address ignored.
KFW_CMW_DETECT_AGENT_HOSTNAME_CHANGE=N
This variable is like the one for detecting Agent address change except that it prevents the Navigator rebuilding if an agent hostname is changed.
KFW_CMW_DETECT_AGENT_PROPERTY_CHANGE=N
Similar to the above except that it prevents the Navigator rebuilding if an agent affinity or affinity version changes.
Wednesday, May 26, 2010
Configuring the TBSM 4.2.1 Discovery Library Toolkit to work with TADDM 7.1.1 and later
Scheduled Wakeup in Ubuntu
Here are the exact steps needed on my Lucid Lynx. Please note that you need to have Kernel 2.6.22 or later for this to work.
1) Install the Power management interface tools.
sudo apt-get install powermanagement-interface
2) Copy the following code somewhere in your filesystem and save it as "suspend_x_hours.sh".
#!/bin/bash3) Schedule the script in root's crontab. e.g the following crontab entry runs at 8PM and puts the system in sleep for 10 hours, waking it up at 6:00 AM.
# This script puts the system under standby mode for x hoursusage() {echo "usage: $0 <n-hours>"echo "where <n-hours> is the number of hours to be on standby"exit 0
}
if [ $# -ne 1 ]thenusagefi
PATH=$PATH:/usr/sbin
hours=$1
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date '+%s' -d "+ $hours hours"` > /sys/class/rtc/rtc0/wakealarm
pmi action suspend
00 20 * * * /home/venkat/bin/suspend_x_hours.sh 10 2>/dev/null
Sunday, May 16, 2010
ITM Tip: Disabling default situations during install time
Many ITM sites want to disable default ITM situations so that unnecessary alerts are not sent to the operations. In old days, we usually disable the situations by running a simple script. One such example of the script is posted below.
http://blog.gulfsoft.com/2008/03/disable-all-default-situations.html
This task is much easier with ITM 6.2.2. While seeding application support, ITM asks you to whether you want to add the default managed system groups to the situation distribution. If you answer no, the default situations will not be distributed to any managed system unless you explicitly assign them! However, this feature is applicable only for fresh installation of ITM 6.2.2 and may not apply to those who are upgrading from old version of ITM.
Tuesday, March 9, 2010
GbsNcoSql V2.0
Tuesday, March 2, 2010
IBM - Recording RPT 8 HTTP scripts
IBM - Recording RPT 8 HTTP scripts
Tuesday, February 9, 2010
Some possible responses to TADDM Error CTJTD3602E
IBM's documentation contains the following description of this error:
CTJTD3602E: The Change Manager is still processing. Wait and retry the discovery at a later time.
Explanation: The Change Manager is still running to process recent changes discovered. The discovery cannot be started until the Change Manager completes.
Operator Response: None.
Administrator Response: Allow time for the Change Manager to complete its processing before starting a discovery.
Programmer Response: None.
What we have found is that this condition can possibly occur for at least a couple of different reasons. The two situations we've found have been:
1. There was a deadlock on the database that we had to clear. A "little while" after we cleared the lock, we were able to successfully run a discovery again without receiving the error message.
2. The change manager partially ran, but didn't update the CHANGE_SERVER_STATUS table. Specifically, it left the value of the STATUS column set to 16 for the last discovery. To fix this, we had to run the following SQL:
update DB2TADDM.CHANGE_SERVER_STATUS set status = 17
This updates the STATUS column for all rows in the table. You could limit it with a WHERE clause, but in our case, it was valid as is.
We then needed to stop and restart TADDM, and the error message went away.
Monday, February 1, 2010
Identifying newly added systems in Tivoli Monitoring using GBSCMD
Come see Gulf Breeze at Pulse so we can show why we are the best.
Friday, January 22, 2010
Interesting Visualization
Thursday, January 21, 2010
GbsNcoSql User Guide
Wednesday, January 20, 2010
Now you have an alternative to FreeTDS - GbsNcoSql
- Currently, it can run any Omnibus "SELECT" queries only. Though the utility could potentially be modified to run other queries, the idea is to use the nco_sql utility for all other type of queries.
- Consistent one-record per line output
- Ability to specify your own delimiter with "-d" switch.
- Ability to suppress header output with "-n" switch.
- Ability to specify queries in a file or read from command line.
- No need to compile any FreeTDS drivers. It comes with the necessary FreeTDS drivers.
- Authorization information kept in a separate file and can be specified with -a switch. You don't need to specify the password in your scripts.
- Platform independent and works with the IBM and Sun JREs.
-a
-d
-f
-h Displays the help information
-n No header output
-q
Node,Tally
sys1,1
sys21,1
sys3,1
192.168.1.50,190
$ cat my.auth
user=root
password=mypass
Tuesday, January 19, 2010
Perl one-liner to convert ITM timestamps to normal timestamps
Anyway, to convert the log timestamps to normal timestamp, I have been using the following one-liner.
perl -lane 'if (/^(.)([\dA-F]+)(\..*)/) { printf "%s%s%s\n", $1, scalar(localtime(oct("0x$2"))),$3; }' <log-file>
The one-liner can be used to read from pipe as well as below.
tail -100 <log-file> perl -lane 'if (/^(.)([\dA-F]+)(\..*)/) { printf "%s%s%s\n", $1, scalar(localtime(oct("0x$2"))),$3; }'
Hope this makes troubleshooting little easier.
Monday, January 18, 2010
GBSCMD V3.6.4 - Overview
GBSCMD is a free Gulf Breeze offering for performing ITM operations from command line. It is complimentary to tacmd tool and performs many operations that are not provided by tacmd. GBSCMD uses ITM Webservices feature extensively and some of the benefits of GBSCMD are listed below.
- Feature support for backlevel ITM versions. Most of the features works from ITM 6.1 on wards.
- Provides a way to execute remote commands on agents.
- Provides a way to get agent data in CSV format.
- Clear offline managed systems from Command line.
- Provides a postemsg like feature to send events to situation event console.
If you would like to learn about GBSCMD tool, here are some links to the past articles about GBSCMD. You can google search "gbscmd site:blog.gulfsoft.com".
http://blog.gulfsoft.com/2008/03/gbscmd-v35-new-features.html
http://blog.gulfsoft.com/2008/03/simple-postemsg-like-solution-for-itm_15.html
We have been tweaking the tool from time to time to introduce new features and address bug fixes and this blog discuss some of the changes introduced during the recent versions. The latest and greatest version of the tool as of this writing is version 3.6.4. If you would like to get the latest version, please feel free to contact me at venkat at gulfsoft.com or Tony Delgross at gulfsoft.com. If you have some suggestion on features that you would like to see in GBSCMD, please feel free to write to me as well.
Here are the changes introduced to GBSCMD since version 3.6.1
Version 3.6.1
This version introduced support for row filtering of SOAP Call results with --afilter option. The following example uses --afilter option to get the disk data from an agent and filters the results to include only C: drive information.
./gbscmd ct_get --auth itm62.auth --Object NT_Logical_Disk --target Primary:ITM62:NT --afilter Disk_Name;EQ;C:
You can also get the last 24 hour history data from the agent using --history switch to CT_Get. Some of the other changes include ability to see the results in XML format using --xml option (Thanks IV for making that change!).
Version 3.6.2
This version introduced new SOAP calls for starting and stopping situations at RTEMS level using --starttemssit and --stoptemssit options. If you are running backlevel of ITM and would like the ability to start and stop situations, you can use this feature. It also addressed some timeout issues while getting large SOAP data. (e.g. listing of all managed systems in the entire enterprise for a large ITM Setup).
Version 3.6.3
This version uses new SOAP call for listing situations running on individual agents.
Version 3.6.4
This version introduces column filtering of SOAP results with --attribute option. For example, if you want to get the disk data and only interested in Disk Name and Free Megabytes attributes, the following command line will get you the information.
./gbscmd ct_get --auth itm62.auth --Object NT_Logical_Disk --target Primary:ITM62:NT --attribute Disk_Name --attribute Free_Megabytes
This version also adds --version switch to identify the current GBSCMD version.
The complete documentation is available for download from the following link.http://www.gulfsoft.com/downloads/gbscmdReferenceManual.pdf
If you have any questions or suggestions, please feel free to mention them in the comments section.
How to get ITM agent data in CSV format using GBSCMD
do
./gbscmd ct_get --auth itm62.auth --Object NT_Logical_Disk --target $agent >> disk_usage.csv
done
Hope you find this tip useful.
Thursday, January 14, 2010
Multiple Logfile Monitoring Agent - KG2
Step 1 - Download and unzip. The entrie package is 26mb in size, it contains all of the supported platforms.
ZIP version
http://www.gulfsoft.com/downloads/blog_downloads/KG2.zip
or the tar/gzip version
http://www.gulfsoft.com/downloads/blog_downloads/KG2.tgz
Step 2 - Run the installIraAgentTEMS.bat or .sh on your HUB TEMS and Remote TEMS.
Step 3 - Run the installIraAgentTEPS.bat or .sh on your TEP server (recycle the TEPS afterwards)
Step 4 - Populate your depot using tacmd addbundles -i /path... or just copy the zip file to the destination and run the installIraAgent.bat or .sh.
Step 5 - Configure it. Create an instance and add at least file name to the agent.
Step 6 - Once the agents appear in your portal server, you can create a situation that uses the "Scan for String within String" method to search for specific keywords.
Step 7 - Have fun.
Wednesday, January 13, 2010
Updated Tivoli Patch Listing Script
I have now updated the script to look at the Fix Central site to provide this same function.The file can be downloaded from http://www.gulfsoft.com/downloads/blog_downloads/patches_list_fc.zip
Wednesday, December 30, 2009
Tivoli Policy Driven Software Distribution (TPDSD) Quick Overview
We have been hearing about this product since Pulse 2008. The idea was to target a product on the desktop segment rather than one the covers both the server and desktop markets. This was done as these are two different worlds when it comes to management. IBM was hearing from customers that they wanted a more hands-off approach to dealing with desktops, in other words “set and forget” (my term I just made up, so don’t blame IBM for this possible bad phrasing). This was also what other vendors have been doing in the desktop market.
I have been involved with the beta of this product since it was available and will cover a few components of the product.
During the beta, this product was known as DTM. At release, it was renamed to Tivoli Policy Driven Software Distribution (TPDSD), which at least let you know that it was policy driven, but seemed to state that it only did software distribution, which it does, but also does more. It looks like this could be renamed in the next release to Tivoli Endpoint Manager (TEM). Which may seem to be a better name to some, it is actually really confusing to others that have been involved with Framework as this was the name of the component that responsible for managing information regarding the endpoints. For the purposes of this blog, I will use the current name of TPDSD. Who knows, maybe it will change again before TEM comes out ;)
Operating System Support
With the first release of TPDSD, there is very limited support for just Windows on both the server and target. The server can run on Windows 2003 and 2008 on 32 or 64 bit. The agents are supported on Windows XP, Vista, 2003 (32/64), 2008 (32/64).
The next release is supposed to have more support for both the servers and agents. There is even talk of MacOS support.
Agent Communications
In TPMfSW you were able to handle tasks to the targets using either RXA or the TCA. TPDSD only uses the agents for these tasks and the only time RXA is used is for the remote agent installation.
The great news is that the agent is now natively compiled, so no more JRE! The new agent is approx 30MB and that is the core agent and all other required support files.
Like TPMfSW, the agent also has various polling intervals. There are intervals for:
1. Checking local cached policies
2. Checking for new policies
3. Sending reports
All of these variables can be set at installation time or by an agent configuration policy.
What is a Policy?
The policies within TPDSD are what are used to do anything to an agent. If you want to install a piece of software, that is a policy. Scan the system, another policy. Configure the agent, you guessed it, a policy. When a policy is created, it is assigned to a target or a group of targets and will stay with that target until it is withdrawn or the machine is rebuilt.
Policies can be setup to either require or prohibit software from being installed. In order to require software to be installed, you need to first define the software to TPDSD and then define how the software is to be recognized on the target. For the recognition of software, there quite a few different ways that can be used to define how to detect software on a target.
1. If it is an MSI, you can define the GUID as the key. When importing an MSI, this is done automatically
2. If using a SPB, the state code is used when importing. This would take the name and version of the SPB and verify that it is in a successful install state on the target (IC--- for those familiar with TCM)
3. File existence – check for a specific file in a directory
4. Registry existence – check for a specific registry key
There are 35 different checks that can be done and multiple checks can be combined to determine if a product is installed or not. This can make the detection very flexible.
To prohibit software, you still need to create the software definition which would also define how to remove the software. The definition needs to exist so that the policy can be created and the uninstall instructions need to exist to actually do the removal.
Self Service Catalog
The self service catalog is a web interface that can be used be the client system to request the installation of software. The catalog contains a searchable section and a “Popular Software” section. The “Popular Software” could be something like a core set of products or free software that is allowed to be installed. This interface also allows the end user to remove software that is currently installed.
When the user requests software from the catalog, it is submitted and a new policy is created for the software to the specific target. This means that the agent will keep checking if the software is installed even after the initial request is completed.
The “set and forget” is the policy part of the product. You set a policy for a target, or group of targets, to have or not have software and the product takes care of maintaining the state of the target.
Integration with TPMfOSD
TPMfOSD is not included with TPDSD, but can be easily integrated using a couple global variables. It is very easy to include the TPDSD agent as a software module so that it will automatically be installed and connected with the TPDSD server. Once installed, the agent can be set to automatically install application or perform other configurations based on policies.
Conclusion
This product is looking really good and I cannot wait for the next release. Right now, due to the limited OS support and a few other things, it is not really ready for the primetime, and I do not believe that IBM is even stating that it is. It is really close and the concepts will continue from this version to the next. The next version will include much more OS support and I have heard of many new (and cool, as in good) features that people have been saying are missing. I do believe that this is a way better solution that has been designed from the ground up for the distributed environment, unlike TPMfSW, which will good, really was designed more for a datacenter.
Shameless Plug
Look for Gulf Breeze Software Partners at Pulse 2010. I will also be doing a presentation called “End to End computer management with Tivoli Policy Driven Software Distribution”. This session will be demoing the use of TPDSD along with TPMfOSD to perform a bare-metal install all the way to installing applications via polcy.
Hope to see you there!
Thursday, December 10, 2009
How to find the GUID of an object in the TADDM GUI
api.sh find [--depth num] --guid THE_GUID
but you need to get the GUID first. It's actually easy - just drag and drop an icon from the GUI into Notepad, and what you'll see will be similar to:
<DragInformation><Node><Name>SVC-2145-GYUR0XSVC01-IBM</Name><ClassName>com.collation.platform.model.topology.storage.StorageSubSystem</ClassName><SubType>com.collation.platform.model.topology.storage.StorageSubSystem</SubType><CollationType>topology.storage.StorageSubSystem</CollationType><ID>459DBBF7B68832D98A1C414EA1E5E2EF</ID><IconName>storagesub</IconName></Node></DragInformation>
The part in bold is the GUID. Easy as that.
Wednesday, December 9, 2009
Framework Monitoring in ITM
If you are looking to monitor basic server components such as TMR, ManagedNode, epmgr and gateways and if you are at Framework 4.3.1 or later, you are in luck. You don't even need to develop an MDL. Framework 4.3.1 provides a new component called tmfmon that provides necessary MDLs and commands that can be readily imported into Universal agent.
You need to take a look at $BINDIR/../generic/tmfmon/README file on how to implement this solution.
Wednesday, December 2, 2009
Some quick notes on CCMDB 7.2
TADDM 7.2 and CCMDB 7.2 are out now, and they seem to work just great.
The TADDM 7.1.1.5 -> 7.2 upgrade works amazingly well, tho it takes several hours if you have lots of data
Java 1.6_17 (the latest as of a couple of weeks ago) JRE doesn't work with the TADDM GUI. You need to use an older version (1.6_07 works like a champ).
New in TADDM 7.2 is an "explore" feature in a topology view. This lets you add additional relationships to a view. So you can right-click a machine and select "Explore", then select what relationships you want displayed, then you can select which other objects that are associated via those relationships will be displayed. Kinda nifty.
CCMDB 7.2 has a new CI topology view. This is a nice feature so you don't have to launch over to TADDM just to see topology info.
In CCMDB 7.2, the "Admin" workstation is no longer limited to just Windows - Linux is supported (so you can run the CCMDB Launchpad from a Linux machine).
Tuesday, November 17, 2009
SQLite Database
Did I mention, this database format is supported by ActivePerl, by default? You can use the standard Perl DBI module to manage this database.
Also, there is a CLI tool called sqlite3 (~500K) that lets you run all database manipulation and SQL commands. And, if it is good enough for Google Android and Apple Safari, chances are it should be robust enough for my needs.
Here is a simple Perl script to access this database from Perl.
#!/usr/bin/perl
use DBI;
my $dbh = DBI->connect('dbi:SQLite:dbname=sample.db',',');
$sql = qq{ CREATE TABLE MYCERT ( num int not null, name varchar(20) ); };
$dbh->do($sql);
$sql = qq{ INSERT INTO MYCERT VALUES(1, 'ITM'); };
$dbh->do($sql);
$sql = qq{ INSERT INTO MYCERT VALUES(2, 'Omnibus'); };
$dbh->do($sql);
$dbh->disconnect();
Thursday, November 5, 2009
To AB, or not to AB
Agent Builder based solution makes sense for the following scenarios.
1) If you want to deploy something real quick and easy, then Agent Builder is a good candidate for your needs. Once you are familiar with the agent builder interface, you can create a custom monitoring agent literally in minutes. Moreover, there are not many typos/mistakes you can make with the Agent Builder's GUI based approach.
2) If you generally prefer GUI method over CLI methods, you will like Agent Builder more.
3) If you want to pull from data sources such as JDBC, WMI, NT Event Log, Service Control Manager, etc, then you should be build an agent builder agent with few clicks. UA will require lot of work as you may have write your own code to pull data from these data sources.
4) If you want to integrate the custom monitoring deployement with your current agent deployment methods, then obviously agent builder is the way to go. Deploying agent builder is very much the same as deploying any other agent.
Universal Agent based solution makes sense for the following scenarios.
1) If you want to minimize the number of agents you want to manage, then you are better of with UA. For example, if your requirement is to deploy 'n' custom monitoring solutions, typically agent builder would require 'n' agents, whereas in case of UA, one agent should be able to perform all 'n' monitoring activities.
2) Let me prefix this statement with a caveat. Check with your IBM representative for all licensing related information. Since one UA can handle multiple monitoring tasks, the licensing costs of UA based solution is typically lower than that of Agent Builder.
3) If you have been using UA for a long time, you can deploy the UA solution as quickly as an Agent Builder solution. More over, UA works pretty reliably.
4) If your monitoring requirements needs advanced summarization capabilities, then UA provides more advanced features than agent builder. Again, some of these tasks can be done using by modifying the itm_agent_toolkit.xml file, but it is just that the Agent Builder capabilities in this regard is not fully known yet.
Hope this information is helpful in your next custom monitor deployment.
Wednesday, October 14, 2009
Including Javascript functions in your BIRT reports
However, there is a better way especially for some frequently used functions. You can put them in a .js file and re-use them across your reports. Here is how to do it.
1. Create a set of Java Script functions (such as for logging, modifying your queries, etc) and put it in a file. (e.g. GbsFunctions.js)
2. Save the file under somewhere under your resource directory, which can be set using Window->Preferences->Report Design->Resource->Resource folder within Eclipse. (e.g. resourcedir/GBS/scripts/GbsFunctions.js).
3. Now add the following XML tag to your XML source of the reports. Make sure that the XML you add doesn't result in malformed XML. (e.g. add just before <data-sources>
<list-property name="includeScripts">
<property>GBS/scripts/GbsFunctions.js</property>
</list-property>
4. Now, you can access the functions listed in GbsFunctions.js within BIRT.
Hope you find this useful.
Thursday, October 8, 2009
A great new draft Redbook is available
It's got lots of good information on integrating ITM, ITNM, TADDM, CCMDB, TBSM, etc., and is well worth the read.
Saturday, August 8, 2009
ITNM 3.8 Running as SUID root on AIX 6.1 Requires GSKit 7.0.4.14
The reason I'm posting this is that you may unwittingly encounter these issues:
1. If you've already installed an ITM 6.2.1 agent on your AIX, you've got GSKit installed, but it's the wrong version. The version included with ITM 6.2.1 is 7.0.3.18. This version will cause several of the ITNM processes to fail.
2. ITNM actually ships with the correct GSKit libraries, but it simply copies those libraries to your AIX machine underneath your ITNM install location. So you might think that you can just set your LIBPATH environment variable to use these GSKit libraries. HOWEVER, you would be wrong - when a process is running as SUID root on AIX, the ONLY directories it searches for necessary libraries are those that are HARD-CODED into the binary! You can see this library path for any binary with the command 'dump -Hv executable_file_name'.
3. If you choose to run ITNM as root (rather than SUID root), you won't have this problem because you can just set the LIBPATH environment variable appropriately.
Tuesday, August 4, 2009
Converting TDW Timestamps in MySQL
The solution in MySQL is similar to that of DB2 based solution. Create a function in MySQL database and call that function in your SQL. But here is how to do it.
- Bring up MySQL Administrator client and connect to the database in question.
- Goto Catalogs in your left pane and select the appropriate database schema.
- Goto Stored Procedure tab and click the "Create Stored Proc".
- In the name field, give a Name for the function (e.g. TDW_TO_NORMAL_TS) and click "Create FUNCTION" button.
- MySQL will create a skeleton function like below.
CREATE FUNCTION `ncpolldata`.`TDW_TO_NORMAL_TS` () RETURNS INT
BEGIN
END - Replace the "CREATE FUNCTION" to look like below.
CREATE FUNCTION `ncpolldata`.`TDW_TO_NORMAL_TS` (tdw_time bigint) RETURNS DATETIME DETERMINISTIC - Between the "BEGIN" and "END" blocks, paste the following code.
BEGIN
Declare normal_time datetime;
Declare tdw_trunc bigint;
Set tdw_trunc = substr(tdw_time,2,12);
Set normal_time = DATE_FORMAT(tdw_trunc, '%y%m%d%H%i%s');
return(normal_time);
END - That's it. Click on the "Execute SQL" button to save the newly created function.
- Call the function in your SQL Statements like below.
SELECT TDW_TO_NORMAL_TS(poll_time) from KNP_POLL_DATA_COLLECTION LIMIT 100
Friday, July 31, 2009
How to resolve odaconsumer.CannotPrepareStatement error in BIRT
A BIRT exception occurred.
Plug-in Provider:Eclipse.org
Plug-in Name:BIRT Data Engine
Plug-in ID:org.eclipse.birt.data
Version:2.2.2.r22x_v20071212
Error Code:odaconsumer.CannotPrepareStatement
Error Message:Failed to prepare the following query for the data set type org.eclipse.datatools.connectivity.oda.flatfile.dataSet.
[select "COLUMN_1", "COLUMN_2", "COLUMN_3" from mydata.txt : {}]
Invalid table name:mydata.txt
The problem turns out to be the location of my stupid file. I had placed it in C:\ and BIRT apparently doesn't like that at all. So I moved the file to a folder named C:\deleteme, then updated my Data Source and Data Set, and then all was well.
Configuring SNMPv3 on Linux
1. it supports authentication via userid and password., and
2. it supports encryption
v1 and v2 don't support either of these. Their only means of authentication is via a "community string", which is basically like a password, but since it's always transferred over the network in the clear, it's not considered very secure.
On to the configuration:
First, read this post: http://www.linickx.com/archives/246/snmp-v3-on-redhat-linux
It gives you the basics, but leaves out one VERY critical step. Specifically:
You must now edit the line created in /etc/snmp/snmpd.conf. Specifically, I changed it from:
rwuser MYUSER
to
rwuser MYUSER priv .1
This allows this user full access to all SNMP data. You can use a more specific OID to limit access to a specific portion of the MIB tree.
Sunday, July 5, 2009
Basic Filters You Should add for ITCAM for Transactions 7.1
URL *%* exclude
URL ~* exclude
URL *"* exclude
URL *\* exclude
URL *(* exclude
URL *)* exclude
URL *^* exclude
URL *@* exclude
URL *|* exclude
URL *{* exclude
URL *}* exclude
URL *`* exclude (that's a backtick)
Basically, Managed Systems should only have characters that match this regular expression: [-A-Za-z0-9_:.] (that's a literal "period"). If a Managed System has characters NOT in that expression, then 'tacmd cleanms' will fail. 'gbscmd clearoffline' can be used, and it will succeed in at least submitting the request, but your TEMS will soon crash.
Some other filters you may want to include are:
BrowserDescription msnbot* exclude
BrowserDescription Googlebot* exclude
BrowserDescription *Googlebot* exclude
BrowserDescription WebTrends* exclude
BrowserDescription *Robot* exclude
BrowserDescription gsa-crawler* exclude
BrowserDescription ShopWiki* exclude
Rebuilding a corrupt EIB without completely reinstalling
1. stop the TEMS and all other agents on the box.
2. remove the /opt/IBM/ITM/tables/YOUR_TEMS_NAME directory
3. uninstall the TEMS component by running /opt/IBM/ITM/bin/uninstall.sh and only select the TEMS component.
4. run the install from the CD/DVD and choose to install the TEMS
5. The install will create a directory named /opt/IBM/ITM/todata. Rename this directory to "YOUR_TEMS_NAME".
6. run 'itmcmd -S -t YOUR_TEMS_NAME ms' to configure the TEMS
7. restart the TeMS and all other agents
8. open up the "Manage Tivoli Monitoring Services" and add all application support (it's all still installed; you just need to re-apply it to the TEMS)
IMO, the reinstall (or re-configure) should recreate the /opt/IBM/ITM/tables/YOUR_TEMS_NAME directory, but it doesn't (it creates the directory, but not the EIB files). So the whole trick is copying the "todata" folder.
Wednesday, July 1, 2009
IBM JRE or Sun JRE does it matter?
Friday, June 26, 2009
Enabling the TTAPI feature of the ITCAMfWAS 6.1.0.4 Data Collector on 64-bit Linux
Tuesday, June 23, 2009
Changing the max connections in FireFox
So after some digging I found that this is actually quite simple.
1. In the address bar type about:config. This will list all the possible configuration options with FireFox. Be Careful!
2. In the filter type http.max
3. Double click on the network.http.max-persistent-connections-per-server. This will display the Enter Integer Value dialog box.
4. Set the value to whatever new value you want.
5. Press OK to set the value
FireFox does not need to be restarted for this value to be set.
I would not set this number too high as it could slow down the overall speed of the download. I set it to 10 as there were 10 files I needed to download and I did not want to wait for one to finish before I started the next. I just wanted to click and walk away and come back in an hour :)
Monday, June 22, 2009
How to find SQL Server Version?
Friday, June 19, 2009
Installing TCM 4.3.1 on Red Hat 5 x64
1. The setup_linux_intel.bin file did not handle x64. When you ran the script the message "OS not supported" would be displayed. To correct this problem look for the case statement "case `uname -m` in" under this there is not a check for a return of 64 bit. So I modified the case to look like:
case `uname -m` in
*86) FRESH='setup_linux_intel.bin'
;;
*64) FRESH='setup_linux_intel.bin'
;;
*390*) FRESH='setup_linux_390.bin'
;;
*) echo "OS not supported."
exit 1
;;
esac
Once this was done, the installer would start.
2. With the setup_linux_intel.bin fixed I was now getting the message "The installer is unable to run in graphical mode. Try running the installer with the -console or -silent flag". I made sure I had all the prereqs according to the doc, but still nothing. So after some playing around, I found out that I was missing the libraries libXmu-1.0.2-5.i386.rpm and libXp-1.0.0-8.1.e15.i386.rpm. The 64bit versions were there but not the 32 bit.
Hopefully this saves someone some grief if they need to install on RH5 x64.
Monday, June 15, 2009
Having problems with TEPS JWS Client shortcut?
Saturday, June 6, 2009
Using Custom SQL Queries with MSLs to Get Real-Time Data from Agents
Here is an example SQL statement you can use in a query to pull real-time NT Logical Disk data from all of the agents that have been added to the "MYWIN" Managed System List:
SELECT ORIGINNODE,TIMESTAMP,INSTCNAME,PCUSED FROM KNT.WTLOGCLDSK AT ("HUB_ITMSERVER") WHERE SYSTEM.PARMA("NODELIST", "MYWIN",5 )
In this statement, "HUB_ITMSERVER" is the label (not the hostname) of the TEMS the agents are connected to, "MYWIN" is the MSL name, and the "5" is simply the length of the string "MYWIN".
To find other available table names, the easiest way is to look in the agent application support SQL files on the TEMS.
Troubleshooting ITM Event Synchronization
Setting the logLevel
The 3 available logging levels in C:\IBM\SitForwarder\etc\situpdate.conf are:
low
med
verbose
Where the Logfile is Created
The default log file is in the Omnibus log directory, HOWEVER, the tracing log file is in:
C:\tmp\itmsynch\logs
This is where you'll see more information if you increase the logging level - NOT in the default log.
What to Look for in the Log
If event updates are correctly being sent back to ITM (for example, when you acknowledge an ITM event from the AEL in Omnibus), the following is an example of what you should see in the log file (with logLevel=verbose):
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder formatEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Entry, parm 1 = op=a,sn=NT_Invalid_Logon_Attempt,sh=webappprod,sv=itmserver.gulfsoft.com:,et=,di=SYSTEM
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder formatEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Number of tokens is 6
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder formatEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Display item token is SYSTEM
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder formatEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP SOAP string:
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder formatEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Exit, return value =
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder getServerUrlConnection IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Entry, parm 1 = op=a,sn=NT_Invalid_Logon_Attempt,sh=webappprod,sv=itmserver.gulfsoft.com:,et=,di=SYSTEM
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder getServerUrlConnection IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Default port 3661 is being used by Web Services.
2009.06.03 16:24:09.703-04:00 com.tivoli.candlenet.SituationUpdateForwarder sendEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Entry
Additionally, you should have no lines data in the C:\IBM\SitForwarder\persistence\situpdate_* file.
What it Looks like When Things are Wrong
In my case, I was acknowledging an event that was sent from ITM to Omnibus BEFORE I got the SUF configured, so the correct EIF Probe rules were not in place. These lines were in the persistence file:
op=a,sn=NT_Invalid_Logon_Attempt,sh=webappprod,sv=itmserver.gulfsoft.com:,et=,di=SYSTEM
Notice that there is a ":" (colon) on the end of the itmserver hostname. That is WRONG. The line SHOULD look like:
op=a,sn=NT_Invalid_Logon_Attempt,sh=Primary:SVRCITRIXXT01:NT,sv=itmserver.gulfsoft.com:3661,et=,di=SYSTEM
Notice the ":3661" at the end of the host name.
Here's an example of the lines in the log file when I had this problem:
2009.06.03 16:22:49.376-04:00 com.tivoli.candlenet.SituationUpdateForwarder formatEvent IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP SOAP string:
2009.06.03 16:22:49.376-04:00 com.tivoli.candlenet.SituationUpdateForwarder pollCacheFile IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP Exception while processing cache file: null
2009.06.03 16:22:49.376-04:00 com.tivoli.candlenet.SituationUpdateForwarder pollCacheFile IBM Tivoli Monitoring TEC Synchronization netcoolserver.gulfsoft.com IP java.lang.NullPointerException
at com.tivoli.candlenet.SituationUpdateForwarder.sendEvent(Unknown Source)
at com.tivoli.candlenet.SituationUpdateForwarder.pollCacheFile(Unknown Source)
at com.tivoli.candlenet.SituationUpdateForwarder.poll(Unknown Source)
at com.tivoli.candlenet.SituationUpdateForwarder.main(Unknown Source)
at com.tivoli.candlenet.W32Service$SUFRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:568)
Notice that there are no lines stating that the event is being sent.
Tuesday, June 2, 2009
BIRT Report Libraries
BIRT Report library is a place where you can store report elements such as Datasource information, datasets, parameters and styles and use them across multiple reports. When you change the information in the libraries, the changes are automatically reflected in the reports.
Why Libraries are so useful?
Say for example, you have about 10 reports using information from Tivoli data warehouse and suddenly the database password changes. Without the library, you will need to update the userid/password in the datasources defined in the 10 reports. Instead if you created the datasource at the library and shared it across the 10 reports, then you just need to update the userid/password in the library. Which one do you like?
How can I create and use libraries?
In BIRT, you can create a library using File->New->Library. Creating any report component in library is the same as creating them in a normal report design. To use the library, goto your report design file, goto library explorer and right click the newly created .rptlibrary file and select Use Library. This option will be available only if the library is not already in use (See the picture above).
How do I create a same look-and-feel for all my reports?
Create a master page in the library and share it across your reports. Also define styles in the library using your own custom theme and use the theme across your reports. To use the library master page in your reports, go to the XML Source for the report design. Look for the line containing something like the following.
Now, your report design uses the same look-and-feel defined in the library.