Best practice to monitor 10gR3 OSB performance using JMX API?

Hi guys,
I need some advice on the best practice to monitor 10gR3 OSB performance using JMX API.
Jus to show I have done my home work, I managed to get the JMX sample code from
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jmx_monitoring/example.html#wp1109828
working.
The following is the list of options I am think about:
* Set up: I have a cluster of one 1 admin server with 2 managed servers, which managed server runs an instance of OSB
* What I try to achieve:
- use JMX API to collect OSB stats data periodically as in sample code above then save data as a record to a
     database table
Options/ideas:
1. Simplest approach: Run the modified version of JMX sample on the Admin Server to save stats data to database
regularly. I can't see problems with this one ...
2. Use WLI to schedule the Task of collecting stats data regularly. May be overkill if option 1 above is good for production
3. Deploy a simple web app on Admin Server, say a simple servlet that displays a simple page to start/stop and configure
data collection interval for the timer
What approach would you experts recommend?
BTW, the caveats os using JMX in http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jmx_monitoring/concepts.html#wp1095673
says
     Oracle strongly discourages using this API in a concurrent manner with more than one thread or process. This is because a reset performed in
     one thread or process is not visible to another threads or processes. This caveat also applies to resets performed from the Monitoring Dashboard of
     the Oracle Service Bus Console, as such resets are not visible to this API.
Under what scenario would I be breaking this rule? I am a little worried about its statement
     discourages using this API in a concurrent manner with more than one thread or process
Thanks in advance,
Sam

Hi Manoj,
Thanks for getting back. I am afraid configuring aggregation interval from Dashboard doesn't solve problem as I need to collect stats data of endpoint URI or in hourly or daily basis, then output to CSV files so line graphs can be drawn for chosen applications.
Just for those who may be interested. It's not possible to use SQL to query database tables to extract OSB stats for a specified time period, say 9am - 5pm. I raised a support case already and the response I got back is 'No'.
That means using JMX API will be the way to go :)
Has anyone actually done this kind of OSB stats report and care to give some pointers?
I am thinking of using 7 or 1 days as the aggregation interval set in Dashboard of OSB admin console then collects stats data using JMX(as described in previous link) hourly using WebLogic Server JMX Timer Service as described in
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jmxinst/timer.html instead of Java's Timer class.
Not sure if this is the best practice.
Thanks,
Regards,
Sam

Similar Messages

  • Best practice on monitoring Endeca health / defining outage

    (This is a double post from the Endeca Experience Management forum)
    I am looking for best practice on how to define Endeca service outage and monitor the health of the system. I understand this depends on your user requirements and it may vary from customer to customer. Specifically what criteria do you use to notify your engineer there is a problem? We have our load balancers pinging dgraphs on an interval. However the ping operation is not sufficient in our use case. We are also experimenting running a "low cost" query to the dgraphs on an interval and using some query latency thresholds to determine outage. I want to hear from people on the field running large commercial web site about your best practice of monitoring/notifying health of the system.
    Thanks.

    The performance metric should help to analyse the query and metrics for fine tuning.
    Here are few best practices:
    1. Reduce the number of components per page
    2. Avoid complex LQL queries
    3. Keep the LQL threshold small
    4. Display the minimum number of columns needed

  • What are the best practices for Database management and performance tuning?

    Hello,
    I want to ensure that I am using the best practices for managing and maintaining our Database.
    Is there any documentation out there that outlines how to maintain and ensure top performance out of our database?
    Thank you!
    John Sefton

    I appreciate the responses, however this is not the information I am looking for.
    I am specificaly looking for best practices invloving the managment and performance tuning.
    Example: are their tools that I can install that will monitor the size and response time of the database and alert me if there is degradation in performance?
    Are there specific periodic activities I should be doing to garuntee that my database will continue to function that way it is supposed to?
    Or is this a fire and forget solution that does not need this attention?

  • Help needed in using JMX APIs

    Hi
    My requirement is to retrieve the JNDI Names of the JMSConnectionFactory and the JMSQueue using the Connection factory or Queue name. In short im trying out a feasibility of reading the JNDI values for queues from weblogic config.xml instead of reading them from a properties file.
    I developed a sample code using JMX APIs that will fetch the JNDI names of all the JMS destinations available for a particluar JMSServer.
    But is there any way to retrieve the JNDI names based on the queue names .. in general i will give queue name as input and i want the queue's JNDI name as output.
    My sample code is :
    import java.util.Iterator;
    import java.util.Set;
    import javax.management.ObjectName;
    import javax.management.QueryExp;
    import javax.management.Attribute;
    import javax.naming.Context;
    import weblogic.jndi.Environment;
    import weblogic.management.MBeanHome;
    import weblogic.management.RemoteMBeanServer;
    import weblogic.management.WebLogicObjectName;
    import weblogic.management.configuration.JMSQueueMBean;
    import weblogic.management.configuration.JMSServerMBean;
    import weblogic.management.configuration.JMSConnectionFactoryMBean;
    import weblogic.management.configuration.JMSDestinationMBean;
    import weblogic.management.runtime.JMSServerRuntimeMBean;
    import weblogic.management.configuration.JMSDestinationMBean;
    public class JMSAddQueue {// The name of the WebLogic domain, please change this to match the //// name of your installation specific domain name                  
    private static String weblogicDomain = "conciergetestdomain";// The name of the WebLogic server, please change this to match the //// name of your installation specific server name
    public static void main(String[] args) {
         try
              Environment env = new Environment(); 
              env.setProviderUrl("t3://localhost:7001");  
              env.setSecurityPrincipal("system");  
              env.setSecurityCredentials("weblogic");  
              Context ctx = env.getInitialContext();  
              MBeanHome home = (MBeanHome) ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);  
              ctx.close();  
      JMSServerMBean cf = (JMSServerMBean)home.findOrCreateAdminMBean("TESTSERVER","JMSServer", weblogicDomain);
    JMSDestinationMBean[] jdb = cf.getDestinations();
    System.out.println("** The JNDI name is : "+jdb[0].getJNDIName());
    catch (Exception e) {
    e.printStackTrace();
    }Is there any way to retrieve the JNDI names using the queue names ?
    Thanks
    Arun B

    I will send up an alert for you, Colin. Even though I use iTunes for Mac, troubleshooting it isn't my forté.

  • Best Practice for monitoring database targets configured for Data Guard

    We are in the process of migrating our DB targets to 12c Cloud Control. 
    In our current 10g environment the Primary Targets are monitored and administered by OEM GC A, and the Standby Targets are monitored by OEM GC B.  Originally, I believe this was because of proximity and network speed, and over time it evolved to a Primary/Standby separation.  One of the greatest challenges in this configuration is keeping OEM jobs in sync on both sides (in case of switchover/failover).
    For our new OEM CC environment we are setting up CC A and CC B.  However, I would like to determine if it would be smarter to monitor all DB targets (Primary and Standby) from the same CC console.  In other words, monitor and administer DB Primary and Standby from the same OEM CC Console.   I am trying to determine the best practice.  I am not sure if administering a swichover from Cloud Control from Primary to Standby requires that both targets are monitored in the same environment or not.
    I am interested in feedback.   I am also interested in finding good reference materials (I have been looking at Oracle documentation and other documents online).   Thanks for your input and thoughts.  I am deliberately trying to keep this as concise as possible.

    OMS is a tool it is not need to monitor your primary and standby what is what I meant by the comment.
    The reason you need the same OMS to monitor both the primary and the standby is in the Data Guard administration screen it will show both targets. You also will have the option of doing switch-overs and fail-overs as well as convert the primary or standby. One of the options is also to move all the jobs that are scheduled with primary over to the standby during a switch-over or fail-over.
    There is no document that states that you need to have all targets on one OMS but that is the best method for the reason of having OMS. OMS is a tool to have all targets in a central repository. If you start have different OMS server and OMS repository you will need to log into separate OMS to administrator the targets.

  • Best practice when developing APEX apps and using a SVN repository

    Hi experts,
    I wanted to get your opinion on best practice regarding how to use SVN and APEX combined.
    The idea is basically how to structure and how to save APEX apps the best way in a repository.
    I am currently working with a custom SVN structure, not using the default TRUNC/TAGS one : every app has a folder , under every app folder i have PAge number folders, and for each page reports, regions and global objects separated.
    This helps me because its more readable then saving the whole page export, its good for small changes and i have a clear overview of every bit and piece.
    What is everybody else using or is there a best practice to follow here that i dont know?
    Kind regards,
    Alex

    @tomaugerdotcom
    Something like this might help: https://testflightapp.com/
    Concevably, you could roll your own internal service if that particular one doesn't suit you. (I don't have any knowledge about how they are doing it, but it shouldn't be hard to figure out since Apple's constraining rules would only allow a few possibilities.)
    USB app install and debugging isn't supported on iOS. You have to use wireless.
    Another option specifically for multi-touch dev/testing, is to use an Android device.

  • Best Practices for image layout and positioning using anchored frames in Framemaker 10

    Hi,
    I'm looking for the best practices in how to layout my images in Framemaker 10 so that they translate correctly to Robohelp 9. I currently have images inside of Anchored frames that "Run into" the right side of my text. I've adjusted the size of the anchored frame so that my text flows correctly around the image. Everything looks good in Framemaker! Yeah! The problem is that when I link my Framemaker document to Robohelp, the text does not flow around my image in the same manner. On a couple of Robohelp screens the image is running into the footer. I'm wondering if I should be using tables in Framemaker in order to get the page layout that I'm looking for. Also, I went back and forth...is this a Framemaker question or is this a Robohelp question. Any assistance would be greatly appreciated.

    I wish I could offer some advice, rather than simply adding to your question. I think there is something odd that happens with anchored frames.
    I have been going through fits trying to figure out why the placement of my graphics shifts when I run them through Frame 10-to-RoboHelp 9 conversion. The placement in our books is flush left to the body text area. However, when they convert, some are flush left, some are centered, and a very few are flush right. My boss is very unhappy with me, as I have been unable to figure out why this is happening. I didn't create these files, so I don't know if it's something that goes back to how the graphics were initially imported. But I can't figure out why everything looks right in Framemaker, with the frame attached to an anchor tag, etc. but the placement goes hinky when they convert.
    Any insights are appreciated. I'm wondering if it's going to come down to deleting them and recreating the graphic frame.

  • Best practice for monitoring MXE3500 v3.2.1

    Hi all
    We have recently upgraded to v3.2.1 on our MXE3500, all has gone well but I am looking for the best way to monitor the system health of the device for our support teams.
    The Show and Share and DMM servers come with SNMP monitoring but I can't see the equivelent for the MXE.
    Due to the lock down nature of the Windows VM on the 3.2.1 software I do not want to install our standard OS monitoring software which is BMC patrol as Cisco have adviced to not install any additional software.
    Has anyone got any ideas on this?
    Adam

    Hello,
    Of course too sensitive might cause failover to happen when some packets get lost, but remember the whole purpose of this is to provide as less downtime to your network as possible,
    Now if you tune these parameters what happen is that failover will be triggered on a different time basis.
    This is taken from a cisco document ( If you tune the sla process as this states, 3 packets will be sent each 10 seconds, so 3 of them need to fail to SLA to happen) This CISCO configuration example looks good but there are network engineers that would rather to use a lower time-line than that.
    sla monitor 123
    type echo protocol ipIcmpEcho 10.0.0.1 interface outside
    num-packets 3
    frequency 10
    Regards,
    Remember to rate all of the helpful posts ( If you need assistance knowing how to rate a post just let me know )

  • Best practice about dial-peer creating when using analog lines

    Hi,
    I am trying to find out what is the best practice when creating dial-peer for analog lines on CME, should I use trunk group or create separate dial-peer for each FXO ports? If I use trunk group, is there any advantage ( lesser dial-peer)  or disadvantage?
    Thanks!

    The advantage of trunk groups is that a single dial peer can point to for instance PSTN, rather then multiple dialpeers, with varying preference, each pointing to a separate FXO. Funtionally I can't see much difference. So I guess it also comes down to personal preference.
    =============================
    Please remember to rate useful posts, by clicking on the stars below. 
    =============================

  • Best practice - which server OS should I use for Exchange 2010 install

    We currently have 2 exchange 2007 boxes running Server 2003. the plan is to upgrade to exchange 2010 (I'd prefer 2013 but the powers that be want 2010), and I have been asked to follow Microsoft best practice. The problem is I can't find anything to point
    me in the direction of the recommended server OS, I can find ones it will work on but nothing to say Microsoft recommend this...
    We have licenses for Server 2008, 2008 R2 and 2012 available, which one should I advise is the Microsoft recommendation?

    Thanks Andy,
    So is there no actual best practice recommendation for a server OS to run Exchange 2010 on? I agree that 2012 would be the one to go for, but the people making the decision on how we do this want reasons, and as they don't really have a lot of technical
    understanding I need to be able to go to them with "Use Server 20xx because it's Microsoft best practice".
    If there isn't a best practice recommendation I will try the longer support life and more options for high availability with 2012.
    Well, you probably wont find a "best practice" as much as a "its supported" stance from Micorosoft.
    As in all these things, there may be other reasons a business chooses to use 2008 over 2012 etc...
    Twitter!: Please Note: My Posts are provided “AS IS” without warranty of any kind, either expressed or implied.

  • Best program for monitoring and blocking internet use on my kids mobile devices, iPads, iPhones from my MAC

    Whats the best program for monitoring and blocking internet sites and usage for my kids on their mobile devices ipads, iphones and ipods, all from my desktop mac?

    Can't be done from your Mac remotely.
    But you can enable parental controls directly on iOS devices.
    iOS: Understanding Restrictions (parental controls)

  • KM Cache in Cache Monitor is not cleared using KM API

    Hi All,
    I am trying to clear the KM cache that is pre-configured in Cache Monitor using KM API. Below is the code I am using to clear the cache. It is not clearing the cache but creating the new cache with the name "KM_Cache1 (1)" and default properties set to peak load as 100%. But my requirement is to access the pre-configured cache and clear it then refresh it.
    import com.sapportals.wcm.WcmException;
    import com.sapportals.wcm.service.cache.CacheServiceFactory;
    import com.sapportals.wcm.util.cache.CacheException;
    import com.sapportals.wcm.util.cache.ICache;
    import com.sapportals.wcm.util.cache.CacheFactory;
    try{
              Cache cache1 = CacheServiceFactory.getInstance().getCache("KM_Cache1");
              cache1.clearCache();
              cache1.refresh();
    Thanks in advance to help me on how to clear the cache in cache Monitor.

    Hi,
    The code is as follows:
    IIndexService indexService = null;
    try {
       indexService = (IIndexService) ResourceFactory.getInstance().getServiceFactory().getService(IServiceTypesConst.INDEX_SERVICE);
    } catch (ResourceException e) {
       if (indexService == null) {
         log.errorT("Error on instanciating the index service");
         return this.renderMessage(this.getBundleString(RES_NO_INDEX_SERVICE), StatusType.ERROR);
    // get index
    IIndex index = null;
    try {
       index = indexService.getIndex("YourIndexID");
    } catch (WcmException e1) {
       log.errorT("Error when trying to get the index");
       return this.renderMessage(this.getBundleString(RES_NO_INDEX), StatusType.ERROR);
    // check if the index is a instance of AbstractClassificationIndex
    AbstractClassificationIndex classiIndex = null;
    if (index instanceof AbstractClassificationIndex) {
       classiIndex = (AbstractClassificationIndex) index;
    } else {
       log.errorT("The index " + index.getIndexName() + " is no classification index");
       return this.renderMessage(this.getBundleString(RES_NO_CLASSIFICATION_INDEX), StatusType.WARNING);
    //give your KM Resource here for which you want to know if it is classified or not
    boolean classified = classiIndex.isDocClassifiedInAnyTax(resource);
    Regards,
    Praveen Gudapati

  • Best Practice for Monitoring, on VPS 2012 Server Standard. Extended Events or Profiler?

    Hi,
    What tools do you use to determine if you should tweak SQL Server configuration and optimize code route, or simply bump up your virtual resources? Can someone share a bag of Extended Events to monitor at the VPS level?  
    I'm a reasonably decent SQL Developer but never advanced far with DBA efforts. Especially when the mainstream went virtual. Seemed to me that all SQL Servers flexibility with managing disk and memory went out the window now that everything is 'shared', NATed,
    and Plesked. So I basically dropped out of the conversation and built stuff with SSIS and TSQL.
    Now, I'm charged with assessing a bottleneck on a VPS Windows 2012 Standard running SQL 2012 Express. I've read that running profiler and traces are deprecated and I've looked a bit at the servers extended events on the hosted environment. I have not run anything.
    My question: Does it make sense to think in terms of 'levels' in deciding what to monitor? I consider the SQL Server as a level, then the Windows Server, and finally the Virtual Level. What I'm getting at, is sure, I can monitor SQL Server with a profile tool,
    but it won't know SQL is on a VPS. So do I miss something?
    There used to be day when we had a dedicated physical box for SQL Server. We ran traces using profiler and got good clues on how to improve performance. In todays VPS world we can use sliders to increase virtual memory and disk space. What tools do you use
    to determine if you should tweak SQL Server configuration and optimize code route, or simply bump up your virtual resources? Can someone share a bag of Extended Events to monitor at the VPS level?  
    What Extened Events at the VPS level tell me if SQL Server is struggling with the limited 1Gb virtual memory? I realize this is not a direct question but hopefully someone will point this developer in the right direction.
    John

    Hi John,
    From SQL point of view it doesnt really matter whether the box is physical or virtual. So if you feel there is performance issues with sql and you are well versed with sql profiler troubleshooting go ahead with that. If you feel performance is good, then
    you know where to look into.
    I would first prefer to find whether it is really a problem with SQL before trying to troubleshoot sql side and I use perfmon counters to do that.
    Also I would look at the SQL Error log to see if there are any obvious errors.
    I havent used extended events much so leaving that for others to comment on. :)
    Regards, Ashwin Menon My Blog - http:\\sqllearnings.com

  • Best Practices CS6 - Multicam Edit: How to use a key?

    I'm trying to figure out what's the best way to use the Multi-cam editing function of CS6 PP, while applying a key to the primary video track.
    The workflow I have is V1 contains the background that I want to key into V2. I applied UltraKey to V2, did the key (works great), and now I want to use the multicam editing to cut between the finished keyed V2 track, and video on V3. The way I've always used the Multicam editing in the past is to select the video clips from the clip browser (not the timeline) to create a multicam source sequence - but if I have to apply a key first, I can't do that. I thought of nesting V1 and V2 together after the key is applied, but then I can't make adjustments to the key after the final composite is made (or can I?)
    Any thoughts about what works best in this scenario? appreciate the help.

    I don't think my system could support live keying. I'd prefer to apply the key first but this is where I had a problem. Let's assume for a minute that there's no key. In a typical MCS workflow, I'd just select the clips from the browser, create the MCS, do the live cuts and be done with it. If I can still do that it's fine, but would that screw everything up in the MCS if I move all the video up one track because the background for the key has to be in front of the video that it's being applied to? I hope I'm making sense here.

  • Best practice for setting an environment variable used during NW AS startup

    We have installed some code which is running in both the ABAP and JAVA environment, and some functionality of this code is determined by the setting of operating system environment variables. We have therefore changed the .sapenv_<host>.csh and .sapenv_<host>.sh scripts found in the <sid>adm user home directory. This works, but we are wondering what happens when SAP is upgraded, and if these custom shell script changes to the .sh and .csh scripts will be overwritten during such an upgrade. Is there a better way to set environment variables so they can be used by the SAP server software when it has been started from <sid>adm user ?

    Hi,
    Thankyou. I was concerned that if I did that there might be a case where the .profile is not used, e.g. when a non-interactive process is started I was not sure if .profile is used.
    What do you mean with non-interactive?
    If you login to your machine as sidadm the profile is invoked using one of the files you meant. So when you start your Engine the Environment is property set. If another process is spawned or forked from a running process it inherits / uses the same Environment.
    Also, on one of my servers I have a .profile a .login and also a .cshrc file. Do I need to update all of these ?
    the .profile is used by bash and ksh
    The .cshrc is used by csh and it is included via source on every Shell Startup if not invoked with the -f Flag
    the .login is also used by csh and it is included via source from the .cshrc
    So if you want to support all shells you should update the .profile (bash and ksh) and one of .cshrc or .login for csh or tcsh
    In my /etc/passwd the <sid>adm user is configured with /bin/csh shell, so I think this means my .cshrc will be used and not the .profile ? Is this correct ?
    Yes correct, as described above!
    Hope this helps
    Cheers

Maybe you are looking for