Title: BP2200: The Sonic Management Environment
1BP2200The Sonic Management Environment
- Andrew Bramley (Architect) /
- David Grigglestone (Architect)
2Agenda
- Introduction to the Sonic Management Environment
- Configuration Deployment
- Monitoring Control
- Management APIs
- Futures
3IntroductionGoals (1)
- Common management for
- All Sonic products
- Sonic-based applications (ESB services)
- Centralized configuration monitoring
- Practical management of large deployments
- 100s of processes, 1,000s of resources
- Standards conformance (JMX)
- Sophisticated instrumentation of resources
4IntroductionGoals (2)
- Dramatic improvements in SonicMQ manageability
vs. SonicMQ v4 - Configuration
- Deployment
- Instrumentation more, more, more
- Tools
- Reliability
5IntroductionWhats in there
- JMX based management agent and APIs
- Management Services
- Directory Service centralized configuration
- Agent Manager centralized monitoring
- Activation Daemon process launcher
- Reliable, SonicMQ based communications
- New console to configure, monitor and control
- Sonic JNDI SPI
6IntroductionTerminolgy (1)
Component
7IntroductionTerminolgy (2)
- Components
- Coarse grained manageable resources that provide
either management or application level services - Containers
- Host multiple components in an execution
environment (JVM) - Domains
- Deployment of containers with a common point of
configuration, runtime management and
communications - Collections
- Logical grouping of either components or
containers
8IntroductionSonic Management Console
- Familiar paradigm (Windows Explorer / MMC)
- Left hand tree for navigation
- Right hand table for contents
- Toolbars / Popup menus etc.
- Context sensitive menus on all tree / table items
- Common operations duplicated on the toolbar
- Two views
- Configure and Manage
- Use Goto operation to move between views
- Stored user preferences
9IntroductionIterative Management
Configure
Monitor
Control
10IntroductionConfigure / Monitor / Control
Component
Container
Directory Service
Agent Manager
Directory Storage
11Configuration DeploymentCreating
Configurations
- Create configurations
- New (select a type)
- Reuse existing
- Enter configuration data via custom dialogs
- Required fields highlighted
- Many fields have default values
- Complex configurations have sub-nodes (e.g.
SonicMQ) - Component configuration is independent of
deployment
12Configuration DeploymentConfiguration Reuse
(1)
- Traditional Copy / Paste to create a look-alike
configuration - Templates to create linked configurations
- Create uniquely identified copies
- Rename to suit
13Configuration DeploymentConfiguration Reuse
(2)
14Configuration DeploymentConfiguration Reuse
(3)
Component sees
Template
configuration only
configuration only
Modified Template
configuration template change
configuration only
15Configuration DeploymentOrganizing Your Domain
- User defined view tree
- User defined folders
- Cut and Paste to desired folder
- Customize to suit your organization (e.g.
geographic, business function, etc.) - User defined runtime Collections
- Use multiple collections to suit needs
- Observe aggregate collection state
- Start / stop all items in a collection
16Configuration DeploymentDeploying an Instance
- Add component instance to container configuration
- One component configuration can be deployed to
multiple containers - Container loads instance and pulls configuration
- Container caches configuration for
- Performance
- Fault-tolerance
17Configuration DeploymentSummary
Disk Cache
Cache
Component
Directory Storage
Container2
Directory Service
Container1
18Monitoring ControlRuntime State (1)
- Containers components have state
- Online, offline, unknown
- State controlled via operations
- Start, stop, shutdown
- Agent Manager provides aggregate state of domain
and collections
19Monitoring ControlRuntime State (2)
Component
Container
Agent Manager
20Monitoring ControlRuntime Properties
- Containers components have runtime properties
- Generic vs. specific
- Read-only vs. read-write
21Monitoring ControlNotifications
- Containers components generate notifications
- Generic state notifications
- Component specific notifications for significant
events - Notifications encapsulate event specific details
- Management applications subscribe to
notifications - Console provides notification watch windows
22Monitoring ControlMetrics
- Containers certain components support metrics
- Dynamic enable/disable
- Instance metrics for dynamic items
- Clients enable metrics request metric values
- Console provides watch plot windows
23Monitoring ControlAlerts
- Certain metrics support thresholds
- Alert notifications are generated when thresholds
are broken - High vs. low thresholds
- Notifications encapsulate metric values when
threshold was broken - Support for multiple thresholds
- Otherwise, alerts are just like regular
notifications
24Monitoring ControlControl Examples (1)
- Components are controlled via operations
- E.g. start, stop, reload
- Console presents most control aspects using a
simple table - SonicMQ Example
- Console displays list of queues
- Allows operations to be performed on those queues
25Monitoring ControlControl Examples (2)
- Console presents complex control aspects using
more sophisticated presentation - SonicMQ Example
- Console displays list of users / durable
subscriptions using multiple tables - Allows browsing of subscriptions using additional
windows
26Management APIs
- ConfigAPI
- Create and modify configurations
- RuntimeAPI
- Monitor and control deployed containers and
components - JNDI
- Create and modify JMS and other administered
objects
27Management APIsConfigAPI
- JavaBean-like programming model
- Use factory to create configuration beans
- Java and JavaScript samples demonstrate common
configuration tasks - See \samples\Management\configAPI
28Management APIsConfigAPI
- MQMgmtBeanFactory domain new MQMgmtBeanFactory()
- domain.connect("Domain1", "tcp//localhost2506",
Administrator", - "Administrator")
- // Load the Broker Bean for /Brokers/Broker1
- IBrokerBean broker domain.getBrokerBean("/Broker
s/Broker1") - IQueuesBean.IQueuesSetType queues
broker.getQueuesBean().getQueues() - IQueuesBean.IQueueAttributes queue
queues.getQueue("SampleQ1") - // Now change some of the queue values
- queue.setQueueMaxSize(12345)
- queue.setReadExclusive(true)
- // save bean
- domain.saveBean(broker)
29Management APIsRuntimeAPI
- Programming models
- Reflective / dynamic raw JMX APIs
- Typed / static proxies built on top of JMX APIs
- Use factory to create proxies
- Samples demonstrate common monitoring / control
tasks - Java and JavaScript samples use proxies
- Generic CLI sample uses dynamic approach
- See \samples\Management\runtimeAPI
30Management APIsRuntimeAPI
- Reflective approach
- ArrayList connections
- (ArrayList)connector.invoke(brokerName,
- getConnections,
- new Object
null , - new String
String.class.getName() ) - Attribute traceAttribute new Attribute(TraceMas
k new Integer(5)) - connector.setAttribute(brokerName,
traceAttribute) - Typed approach
- IBrokerProxy brokerProxy
- MQProxyFactory.createBrokerProxy(connector,
brokerName) - ..
- ArrayList connections brokerProxy.getConnections
(null) - brokerProxy.setTraceMask(5)
31Management APIsJNDI
- Sonic SPI is a basic Naming implementation
- Leverages Directory Service storage
- Provides for read-only and read-write roles
- Integration with Sonic JMS Administered Objects
tool - Sample CLI demonstrates SPI usage whilst
providing useful functionality
32Futures
- Better monitoring and control of Sonic ESB
- Fault-tolerance
- System monitoring
- Fathom integration
- SNMP
33Summary
- Common environment breeds rapid development and
familiarity - Advanced configuration and deployment features
reduce volume and increase reliability and
performance - Depth of monitoring and control makes management
large scale deployments practical - Open, standards-based APIs allows rapid
development of custom management applications
34!
Allquestionsanswered