WebLogic

Supported OS Linux Windows Mac OS

Integration version1.3.0

Overview

Oracle WebLogic is a platform for developing, running and deploying enterprise Java applications both on-premises and in the cloud. It centralizes application services that include web server functionality, business components such as messaging, and access to backend enterprise systems such as databases.

Oracle WebLogic monitoring with Datadog enables you to:

  • Gain awareness of increasing heap size in your Java Virtual Machine (JVM)
  • Track server response time
  • Monitor session details of web applications
  • Track thread pool and messaging services
  • Track database connection pool usage

Setup

Installation

The WebLogic check is included in the Datadog Agent package. No additional installation is needed on your server.

  1. This check is JMX-based and collects metrics from the Platform MBean Server exported by the JVM, so your WebLogic servers must have JMX Remote Monitoring enabled. See Remote Monitoring and Management for installation instructions.

  2. Set the system property -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder to enable these metrics on the Platform MBean Server. This should be enabled in both the WebLogic Server Administration Console and in the server startup scripts. Note: This can and should be done more than once.

    Enable in the Administration Console

    Domain => Configuration => General => Advanced => Platform MBean Server Enabled
    

    Enable in Server Startup Scripts

    -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
    

    For more information, see the WebLogic documentation.

  3. Verify that the PlatformMBeanServerUsed attribute value is set to true in the WebLogic Server Administration Console. The default value is true in WebLogic Server versions 10.3.3.0 and above. This setting can be found in the WebLogic Server Administration Console or configured using the WebLogic Scripting Tool (WSLT).

    Enable in the Administration Console

    Domain (<WEBLOGIC_SERVER>) => Configuration => General => (Advanced) => Platform MBeanServer Enabled
    

    Enable in WLST

    Start an edit session. Navigate to the JMX directory for the domain and use cmo.setPlatformMBeanServerUsed(true) to enable the attribute if it is set to false.

    For example:

    # > java weblogic.WLST
    (wlst) > connect('weblogic','weblogic')
    (wlst) > edit()
    (wlst) > startEdit()
    (wlst) > cd('JMX/<DOMAIN_NAME>')
    (wlst) > set('EditMBeanServerEnabled','true')
    (wlst) > activate()
    (wlst) > exit()
    

    Activate the changes and restart the WebLogic server.

Configuration

  1. Edit the weblogic.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your WebLogic performance data. See the sample weblogic.d/conf.yaml for all available configuration options.

    This check has a limit of 350 metrics per instance. The number of returned metrics is indicated when running the Datadog Agent status command. You can specify the metrics you are interested in by editing the configuration.

    To learn how to customize the metrics to collect, see the JMX Checks documentation for more detailed instructions. If you need to monitor more metrics, contact Datadog support.

  2. Restart the Agent

Validation

Run the Agent’s status subcommand and look for weblogic under the Checks section.

Data Collected

Metrics

weblogic.connector_connection_pool_runtime.connections_active
(gauge)
The current total active connections.
Shown as connection
weblogic.connector_connection_pool_runtime.connections_created_total
(rate)
The total number of Connector connections created in this Connector Pool since the pool is instantiated.
Shown as connection
weblogic.connector_connection_pool_runtime.connections_free
(gauge)
The current total free connections.
Shown as connection
weblogic.jms_runtime.connections_current
(gauge)
The current number of connections to WebLogic Server.
Shown as connection
weblogic.jms_runtime.connections_total
(rate)
The total number of connections made to this WebLogic Server since the last reset.
Shown as connection
weblogic.jms_runtime.jms_servers
(gauge)
The current number of JMS servers that are deployed on this WebLogic Server instance.
weblogic.jms_runtime.jms_servers_total
(rate)
The total number of JMS servers that were deployed on this WebLogic Server instance since this server was started.
weblogic.jvm_runtime.heap_free
(gauge)
The current amount of memory (in bytes) that is available in the JVM heap.
Shown as byte
weblogic.jvm_runtime.heap_free_percent
(gauge)
Percentage of the maximum memory that is free.
Shown as percent
weblogic.jvm_runtime.heap_size
(gauge)
The current size (in bytes) of the JVM heap.
Shown as byte
weblogic.jvm_runtime.heap_size_max
(gauge)
The maximum free memory configured for this JVM.
Shown as byte
weblogic.server.max_open_sockets
(gauge)
The maximum number of open sockets allowed in server at a given point of time.
weblogic.server.threadpool_socket_readers_percent
(gauge)
The percentage of execute threads from the default queue that can be used as socket readers.
Shown as percent
weblogic.server_channel_runtime.bytes_received
(rate)
The total number of bytes received on this channel.
Shown as byte
weblogic.server_channel_runtime.bytes_sent
(rate)
The total number of bytes sent on this channel.
Shown as byte
weblogic.server_channel_runtime.connections_active
(gauge)
The number of active connections and sockets associated with this channel.
Shown as connection
weblogic.server_channel_runtime.messages_received
(rate)
The number of messages received on this channel.
Shown as message
weblogic.server_channel_runtime.messages_sent
(rate)
The number of messages sent on this channel.
Shown as message
weblogic.server_channel_runtime.sockets_accepted
(rate)
The number of sockets that have been accepted on this channel. This includes sockets both past and present.
weblogic.server_runtime.open_sockets
(gauge)
The current number of sockets registered for socket muxing on this server.
weblogic.servlet_runtime.exec_time_high
(rate)
The amount of time the single longest invocation of the servlet has executed since created.
Shown as millisecond
weblogic.servlet_runtime.exec_time_low
(gauge)
The amount of time the single shortest invocation of the servlet has executed since created.
Shown as millisecond
weblogic.servlet_runtime.exec_time_total
(rate)
The total amount of time all invocations of the servlet have executed since created.
Shown as millisecond
weblogic.servlet_runtime.pool_max_capacity
(gauge)
The maximum capacity of this servlet for single thread model servlets.
Shown as thread
weblogic.servlet_runtime.reloads_total
(gauge)
The total count of the number of times this servlet has been reloaded.
weblogic.threadpool_runtime.completed_requests
(rate)
The number of completed requests in the priority queue.
Shown as request
weblogic.threadpool_runtime.execute_threads_idle
(gauge)
The number of idle threads in the pool. This count does not include standby threads and stuck threads. The count indicates threads that are ready to pick up new work when it arrives.
Shown as thread
weblogic.threadpool_runtime.execute_threads_total
(gauge)
The total number of threads in the pool.
Shown as thread
weblogic.threadpool_runtime.overload_rejected_requests
(gauge)
Number of requests rejected due to configured Shared Capacity for work managers have been reached.
Shown as request
weblogic.threadpool_runtime.queue_length
(gauge)
The number of pending requests in the priority queue. This is the total of internal system requests and user requests.
Shown as request
weblogic.threadpool_runtime.shared_capacity_work_managers
(gauge)
Maximum amount of requests that can be accepted in the priority queue.
Shown as request
weblogic.threadpool_runtime.threads_hogging
(gauge)
The threads that are being held by a request at the time of submission.
Shown as thread
weblogic.threadpool_runtime.threads_standby
(gauge)
The number of threads in the standby pool. Threads that are not needed to handle the present work load are designated as standby and added to the standby pool. These threads are activated when more threads are needed.
Shown as thread
weblogic.threadpool_runtime.threads_stuck
(gauge)
Number of stuck threads in the thread pool.
Shown as thread
weblogic.threadpool_runtime.throughput
(gauge)
The mean number of requests completed per second.
Shown as request
weblogic.threadpool_runtime.user_requests_pending
(gauge)
The number of pending user requests in the priority queue. The priority queue contains requests from internal subsystems and users. This is just the count of all user requests.
Shown as request
weblogic.webapp_component_runtime.sessions_current
(gauge)
The count of the current total number of open sessions in this module.
Shown as session
weblogic.work_manager_runtime.requests_completed
(rate)
The number of requests that have been processed, including daemon requests.
Shown as request
weblogic.work_manager_runtime.requests_pending
(gauge)
The number of waiting requests in the queue, including daemon requests.
Shown as request
weblogic.work_manager_runtime.threads_stuck
(gauge)
The number of threads that are considered to be stuck on the basis of any stuck thread constraints.
Shown as thread

Log collection

  1. WebLogic logging services use an implementation based on the Java Logging APIs by default. Clone and edit the integration pipeline if you have a different format.

  2. Collecting logs is disabled by default in the Datadog Agent. Enable it in your datadog.yaml file:

    logs_enabled: true
    
  3. Uncomment and edit the logs configuration block in your weblogic.d/conf.yaml file. Change the path and service parameter values based on your environment. See the sample weblogic.d/conf.yaml for all available configuration options.

     - type: file
       path: <DOMAIN_DIR>/servers/<ADMIN_SERVER_NAME>/logs/<ADMIN_SERVER_NAME>.log
       source: weblogic
       service: admin-server
       log_processing_rules:
         - type: multi_line
           name: new_log_start_with_date
           pattern: (\####)?<\w{3} (0?[1-9]|[12][0-9]|3[01]), \d{4}
     - type: file
       path: <DOMAIN_DIR>/servers/<ADMIN_SERVER_NAME>/logs/<DOMAIN_NAME>.log
       source: weblogic
       service: domain
       log_processing_rules:
         - type: multi_line
           name: new_log_start_with_date
           pattern: (\####)?<\w{3} (0?[1-9]|[12][0-9]|3[01]), \d{4}
     - type: file
       path: <DOMAIN_DIR>/servers/<SERVER_NAME>/logs/<SERVER_NAME>.log
       source: weblogic
       service: managed-server
       log_processing_rules:
         - type: multi_line
           name: new_log_start_with_date
           pattern: (\####)?<\w{3} (0?[1-9]|[12][0-9]|3[01]), \d{4}
     - type: file
       path: <DOMAIN_DIR>/servers/*/logs/access.log 
       source: weblogic
       service: http-access
       log_processing_rules:
         - type: multi_line
           name: new_log_start_with_date
           pattern: .*\[\d{2}\/(\w{3}|\w{4})\/\d{4}:\d{2}:\d{2}:\d{2} (\+|-)\d{4}\]
    
  4. Restart the Agent

Containerized

For containerized environments, see the Autodiscovery with JMX guide.

Events

The WebLogic integration does not include any events.

Service Checks

weblogic.can_connect
Returns OK if the Agent is able to connect to and collect metrics from the monitored WebLogic instance, WARNING if no metrics are collected, and OK otherwise.
Statuses: ok, critical, warning

Troubleshooting

Need help? Contact Datadog support.