ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » New version of MO71 MQ Admin Gui Tool available

Post new topic  Reply to topic
 New version of MO71 MQ Admin Gui Tool available « View previous topic :: View next topic » 
Author Message
zpat
PostPosted: Fri Jul 29, 2011 7:34 am    Post subject: New version of MO71 MQ Admin Gui Tool available Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5866
Location: UK

Paul Clarke of IBM has released version 7.0.2 of SupportPac MO71

http://www-01.ibm.com/support/docview.wss?uid=swg24000142

I beta tested this version, and I would recommend that people take a look at the "multi-queue manager" feature. This allows you to combine/display the information from more than one queue manager in the list dialogs (at the same time).

It's quite a powerful feature and worth exploring. For example if you want to see information about queues called "FRED.*" from several queue managers at the same time - you can. Plus this list is sortable as usual.

For anyone who hasn't used MO71 - you are missing out on a very useful tool which has an amazing assortment of features.

----

Incidentally if anyone has written any complex MO71 filters (by which I mean multi-line program-like logic) for QM monitoring - please post them on this thread (use the code tags) as examples.
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Mon Aug 01, 2011 5:51 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

well, whatever "complex" is

Sample 1

Code:

// filter function:
// check queuedepth. if messages are on queue, count the
// number of times (refreshes) and hilite queue.
// 1st interval green
// 2nd interval yellow
// 3rd interval red
//
// if queue is not processed, and queue is found in 3 consecutive
// intervals, then alert and put a message to the console
// also
// xmitqs without ipprocs
// system cluster transmit queue added

// reset summary counters on first
// all *41* queues
if (_first) {
   _first := false;
 }

// check if messages are on the queue

if (qtype = "Local" & (queue == '*AA41*' | queue == '*BB41*' | queue == '*CC41*' | queue = 'SYSTEM.DEAD.LETTER.QUEUE' | queue = "SYSTEM.CLUSTER.TRANSMIT.QUEUE")) {
  if (CUR = 0) {
    @qdepth%o := 0;
    @qolddepth%o := 0;
    @qoldtime%o := 0;
  }
  else {
// queue first time with messages ?
    if (@qoldtime%o = 0) {
      @qoldtime%o := _time;
      @qdepth%o := 1;
    }
// not the first time, add something
    else {
// check if queue size decreases
      if (cur < @qolddepth%o) {
        @qdepth%o := 1;
      }
      else {
        @qdepth%o := @qdepth%o + 1;
      }
    }
  }
// remember depth for next interval
  @qolddepth%o := cur;
// display time there are messages on queue
  if (@qoldtime%o > 0) {
   @SecsMsgsOnQueue# := _time - @qoldtime%o;
  }
  else {
   @SecsMsgsOnQueue# := 0;
  }

// set color depending on values

  if (@qdepth%o = 1) bg(true,green);
  if (@qdepth%o = 2) bg(true,yellow);
  if (@qdepth%o > 2) {
    bg(true,red);
    beep(true);
  }
  if (ipprocs != 1 & queue <> "SYSTEM.DEAD.LETTER.QUEUE" & queue <> "SYSTEM.CLUSTER.TRANSMIT.QUEUE" &  !(queue == "*.QX.*")) {
    if (queue == '*BB41*' & cur = 0) {
      bg(true,yellow);
      @qdepth%o := 14;
     }
     else {
      @qdepth%o := 15;
      bg(true,red);
      beep(true);
    }
   }

 sortd(@qdepth%o);
 sort2(queue);
   true;

}


_________________
Regards, Butcher
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Mon Aug 01, 2011 5:56 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

Sample 2

i wrote this in former times when MQ was not able to retrigger without a message arriving. It does the queue depth monitoring from sample 1, but calls a cmd file to perform actions on the queue..... in this case alter the queue NOTRIGGER / TRIGGER to create a new trigger message

Code:


if (_first) {
   _first := false;
 }

// check if messages are on the queue
if (qtype = "Local" & (queue == 'QUEUENAME1' | queue == 'QUEUENAME2' | queue == 'QUEUENAME3' | queue == "QUEUENAME4")) {
  if (CUR = 0) {
    @qdepth%o := 0;
    @qolddepth%o := 0;
    @qoldtime%o := 0;
  }
  else {
// queue first time with messages ?
    if (@qoldtime%o = 0) {
      @qoldtime%o := _time;
      @qdepth%o := 1;
    }
// not the first time, add something
    else {
// check if queue size decreases
      if (cur < @qolddepth%o) {
        @qdepth%o := 1;
      }
      else {
        @qdepth%o := @qdepth%o + 1;
      }
    }
  }
// remember depth for next interval
  @qolddepth%o := cur;
// display time there are messages on queue
  if (@qoldtime%o > 0) {
   @SecsMsgsOnQueue# := _time - @qoldtime%o;
  }
  else {
   @SecsMsgsOnQueue# := 0;
  }

// set color depending on values

  if (@qdepth%o = 1) bg(true,green);
  if (@qdepth%o = 2) bg(true,yellow);
  if (@qdepth%o > 2) {
//   @qdepth%o# := @qdepth%o;
    bg(true,red);
    beep(true);
    if (queue = 'QUEUENAME1') {
        system(true,"q01.cmd");
    }
    if (queue = 'QUEUENAME2') {
        system(true,"q02.cmd");
    }

    if (queue = 'QUEUENAME3') {
        system(true,"q03.cmd");
    }

    if (queue = 'QUEUENAME4') {
        system(true,"q04.cmd");
    }

  }


 sortd(@qdepth%o);
 sort2(queue);
   true;

}

_________________
Regards, Butcher
Back to top
View user's profile Send private message
zpat
PostPosted: Mon Aug 01, 2011 5:56 am    Post subject: Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5866
Location: UK

New in This Release

The following changes have been made in this release of MO71:

• WebSphere MQ V7.0.1 support.
• Multiple Queue Manager list support.
• Sizeable list dialog areas.
• Show object name in entryfield rather than dropdown.
• Set default browse message range#.
• Auto update of lists on change action.
• MO71 Authority changes.
• Browse message selector added.
• New set() filter function.

The multi-queue manager support (which means having objects from more than one QM displayed in a single dialog) is enabled by clicking on the "show queue manager list" button on the top right of MO71 list dialogs. Then you can select more than one queue manager to populate the list dialog from.
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Mon Aug 01, 2011 6:02 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

Sample 3

Again the queue monitoring from sample 1, but write a file with the qdepth found for specific set of queues. statistics of queues having messages piling up for a poor man. of course, this can be done with other stuff too (or maybe already with mq stuff), but not at that time.
however, its just a filter demonstration

the selection of queue name ABC* and queue type "Local" is done on the list page, so this is not found in the filter. can be done by predefined dialog, including refresh time.

Code:


if (_first) {
  @tt := _time;
  @$myfile := _qmname + str$(month(@tt)+1)+ "_" + str$(day(@tt)) + ".txt";
  @$mytime := str$(month(@tt))+ "." + str$(day(@tt)) + " " + str$(hour(@tt)) + ":" + str$(minute(@tt));
  @fd := fopen(@$myfile,"a");
  fprint(@fd, "\n", "TIME ", @$mytime, " ", _qmname);
  _first := false;
 }
if (_last) {
 fclose(@fd);
}

// check if messages are on the queue
  if (CUR = 0) {
    @qdepth%o := 0;
    @qolddepth%o := 0;
    @qoldtime%o := 0;
  }
  else {
// queue first time with messages ?
    if (@qoldtime%o = 0) {
      @qoldtime%o := _time;
      @qdepth%o := 1;
    }
// not the first time, add something
    else {
// check if queue size decreases
      if (cur < @qolddepth%o) {
        @qdepth%o := 1;
      }
      else {
        @qdepth%o := @qdepth%o + 1;
      }
    }
  }
// remember depth for next interval
  @qolddepth%o := cur;
// display time there are messages on queue
  if (@qoldtime%o > 0) {
   @SecsMsgsOnQueue# := _time - @qoldtime%o;
  }
  else {
   @SecsMsgsOnQueue# := 0;
  }

// set color depending on values

  if (@qdepth%o = 1) bg(true,green);
  if (@qdepth%o = 2) bg(true,yellow);
  if (@qdepth%o > 2) {
//   @qdepth%o# := @qdepth%o;
    bg(true,red);
    beep(true);
  }
  @$FF := queue + ";" + str$(curdepth);
  fprint(@fd, "\n",@$FF);
 
 sortd(@qdepth%o);
 sort2(queue);
   true;


_________________
Regards, Butcher
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Mon Aug 01, 2011 6:04 am    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

thats it for samples. i hope this somehow demonstrates how these filters work.

if you write this stuff keep in mind its not a program, its a filter. if you don't exit with "true", its not displayed
_________________
Regards, Butcher
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » New version of MO71 MQ Admin Gui Tool available
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.