SlideShare ist ein Scribd-Unternehmen logo
1 von 72
JON Plugins
Conceitos

             Serviços


            Servidores


            Plataformas


                          2
Serviços



Recursos   Servidores


           Plataformas



                         3
Hierarquia entre Recursos




                            4
5
EJB, WebApp,
                   Recursos Filhos
  Datasource


JBoss App Server      Recurso



     iMac           Recurso Pai



                                     6
Service    BuscadorBean



            Server     JBoss EAP 4.3




           Plataform    Mac OS X




Recurso   Categoria       Tipo
                                       7
?
Por que cada tipo de recurso tem métricas e
           operações distintos?



                                              8
Métricas da   Métricas do
plataforma     servidor
                            9
Operações da
 plataforma



Operações
do servidor




               10
?
Por que alguns recursos são automaticamente
         descobertos e outros não?



                                              11
É tudo culpa do agente!
                          12
Arquitetura do
RHQ/Jopr/JON




http://www.redhat.com/f/pdf/Write_A_Plugin_WP_web.pdf   13
14
Arquitetura do
       jon-agent




http://www.redhat.com/f/pdf/Write_A_Plugin_WP_web.pdf   15
Serviços só são descobertos e
            monitorados pelo JON devido à
            existência de plugins específicos




jon-agent


 plugins

                                   ...

                                               16
Mas e se houver um serviço cuja
monitoração é desejada mas para o
  qual ainda não existam plugins?




    jon-agent


      plugins

                                    ...

                                          17
Agora sim!




  jon-agent


    plugins




              18
B AM
u c o
s   t   n
i   i   i
n   v   t
e   i   o
s   t   r
s   y   i
        n
        g
            19
business intelligence?
                         20
Desenvolva seus
              próprios plugins!


      http://www.jboss.org/community/docs/DOC-12824


http://support.rhq-project.org/display/RHQ/RHQ+Plugin+Community




                                                             21
a
              ert
           cob
       des




                 mé
                    tric
                         as

op
  er
     aç
        ões
                              22
facets
         23
Step-by-Step

    1. descoberta



      2. métricas



     3. operações




                    24
plugin descriptor

 discovery                  plugin
component                 component

                                      25
App          Package    Descriptor
  WebApp          WAR         web.xml
   Portlet        WAR       portlet.xml
     EJB          JAR        ejb-jar.xml
   MIDlet         JAR       MANIFEST
Enterprise App    EAR      application.xml
   MBeans         SAR      *-service.xml
 Connectors       RAR
 JON Plugin       JAR      rhq-plugin.xml

                                             26
http://viewvc.rhq-project.org/cgi-bin/viewvc.cgi/rhq/trunk/modules/core/client-api/src/main/resources/rhq-plugin.xsd?view=log




                                                                                                                          27
Discovery Component


public class BuscadorDiscovery implements ResourceDiscoveryComponent {

    public Set discoverResources(ResourceDiscoveryContext discoveryContext) {

        // Implementa a regra de descoberta do Buscador
        // (via tabela de processos, arquivo em disco, porta TCP/IP, etc)

        // Monta e retorna colecao com os recursos descobertos.

    }

}




                                                                            28
Plugin Component
public class BuscadorComponent implements ResourceComponent {

    public AvailabilityType getAvailability() {

         // Regra para verificar se o recurso esta disponivel ou nao.
    }

    public void start(ResourceContext context) {

         // Inicializa conexao com o rescurso
     }

    public void stop() {

         // Finaliza conexao com o recurso
    }

}                                                                   29
Plugin Component




public class BuscadorComponent implements ResourceComponent,
                                          MeasurementFacet {

    public void getValues(MeasurementReport report, Set metrics) {

        // Recuperar e armazenar em ‘report’ o valor de
        // cada metrica presente em ‘metrics’

    }
}
                                                                     30
Primeiro
 Plugin
 ...a gente nunca esquece...




                               31
$ svn co http://anonsvn.jboss.org/repos/jopr/trunk
A    trunk/.classpath
A    trunk/LICENSE_LGPL
A    trunk/LICENSE
A    trunk/.project
A    trunk/LICENSE_GPL                                        é preciso obter o
A    trunk/modules                                         código fonte do Jopr   ou
A    trunk/modules/plugins                                    do RHQ Project
A    trunk/modules/plugins/hibernate
A    trunk/modules/plugins/hibernate/src
A    trunk/modules/plugins/hibernate/src/test
A    trunk/modules/plugins/hibernate/src/test/java
A    trunk/modules/plugins/hibernate/src/test/java/org
A    trunk/modules/plugins/hibernate/src/test/java/org/rhq
A    trunk/modules/plugins/hibernate/src/test/java/org/rhq/plugins
A    trunk/modules/plugins/hibernate/src/test/java/org/rhq/plugins/hibernate
...
A    trunk/etc/jbas5-ejb-client/src/main/java
A    trunk/etc/jbas5-ejb-client/src/main/java/test
A    trunk/etc/jbas5-ejb-client/src/main/java/test/EjbClient.java
A    trunk/etc/jbas5-ejb-client/pom.xml
A    trunk/.settings
A    trunk/.settings/org.eclipse.jdt.core.prefs
A    trunk/.settings/org.maven.ide.eclipse.prefs
  U  trunk
Checked out revision 673.


                                                                                       32
existe um
gerador de
  plugins!




             download


                        33
execute o
                                                                        gerador de
                                                                          plugins


$ java -jar rhq-pluginGen-1.2.2-jar-with-dependencies.jar
Please specify the plugin root category PLATFORM(P), SERVER(S), SERVICE(I), i
Please specify its PackagePrefix: br.com.seatecnologia.monitoring.buscador
Please specify its FileSystemRoot: /Users/alegomes/Code/jboss.org/jopr/trunk/modules/plugins
Please specify its ComponentClass: BuscadorComponent
Please specify its DiscoveryClass: BuscadorDiscovery
Please specify if it should support Events (y/N):
Please specify its ParentType:
Please specify if it should support Monitoring (y/N): y
Please specify if it should support Operations (y/N):
Please specify if it should support Singleton (y/N):
Please specify if it should support ResourceConfiguration (y/N):
Please specify if it should support CreateChildren (y/N):
Please specify if it should support UsesExternalJarsInPlugin (y/N):
Please specify if it should support DeleteChildren (y/N):
Please specify if it should support ManualAddOfChildren (y/N):
Please specify if it should support UsePluginLifecycleListenerApi (y/N):
Please specify its Name: buscador
Please specify its Description: Plugin para acompanhamento da execucao do aplicativo de
simulacao de memory leaks

Do you want to add a child to buscador? (y/N)
Don't forget to add your plugin to the parent pom.xml                  responda as
                                                                        questões
                                                                                         34
$ ls -1 /Users/alegomes/Code/jboss.org/jopr/trunk/modules/plugins
JBossOSGi
buscador
hibernate
jboss-as
jboss-as-5            plugin gerado já na pasta
jboss-cache              de plugins do Jopr
pluginGen.log
pom.xml
rhq-server
tomcat

$ ls -1 /Users/alegomes/Code/jboss.org/jopr/trunk/modules/plugins/buscador
pom.xml
src


                        plugin gerado como
                         projeto Maven
                                                                         35
.deb   apt-get
.rpm    yum

.jar   maven
                 36
arquivo de
configuração do
    Maven




                 37
código fonte do
     plugin




                  37
arquivos de
configuração do
     plugin




                 37
Discovery e Plugin
  Components


                     38
descritor do
   plugin




               39
40
src/main/resources/META-INF/rhq-plugin.xml



<plugin-configuration>
     <!-- TODO add your own here -->
</plugin-configuration>
                                     comente isto por
                                 enquanto para testarmos
                                  apenas o build e deploy
                                        do plugin


<!-- plugin-configuration>
     <!- TODO add your own here ->
</plugin-configuration -->
                                                            41
mvn compile
                      mvn package
                       mvn clean
                           ...

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
                                                                                 42
mvn package
[INFO] Failed to resolve artifact.

GroupId: org.rhq                                   erro ao
ArtifactId: rhq-plugins-parent                    executar o
Version: 1.2.0-SNAPSHOT                         ‘mvn package’

Reason: Unable to download the artifact from any repository




<parent>
   <groupId>org.rhq</groupId>
   <artifactId>rhq-plugins-parent</artifactId>
   <version>1.2.0-SNAPSHOT</version><!-- TODO adjust RHQ version -->
</parent>
                                                                pom.xml
               lib requerida
                 pelo plugin
                   gerado
                                                                       43
Repositórios JBoss

http://repository.jboss.org/maven2
    Releases oficiais de libs JBoss
             e.g. 1.2.0.GA




http://snapshots.jboss.org/maven2
Libs JBoss ainda em desenvolvimento
          e.g. 1.3.0-SNAPSHOT

                                      44
repositório oficial
                    não possui a versão
                     1.2.0-SNAPSHOT




  repositório de
   snapshots até
  possui a versão
1.2.0-SNAPSHOT,
    mas já estão
 desenvolvendo a
1.3.0-SNAPSHOT

                                      45
pom.xml
                                           alteração da
                                           versão da lib

<parent>
    <groupId>org.rhq</groupId>
    <artifactId>rhq-plugins-parent</artifactId>
    <version>1.2.0.GA</version><!-- TODO adjust RHQ version -->
</parent>

...

<repositories>
    <repository>
       <id>jboss</id>
       <name>JBoss Repository</name>
       <url>http://repository.jboss.org/maven2/</url>
    </repository>
</repositories>
                                           inclusão de um dos
                                          repositórios do JBoss
                                                                  46
jopr/modules/plugins/buscador$ mvn package
[INFO] Scanning for projects...
Downloading: http://repository.jboss.org/maven2//org/rhq/rhq-plugins-
parent/1.2.0.GA/rhq-plugins-parent-1.2.0.GA.pom
3K downloaded
Downloading: http://repository.jboss.org/maven2//org/rhq/rhq-parent/
1.2.0.GA/rhq-parent-1.2.0.GA.pom
19K downloaded
Downloading: http://repository.jboss.org/maven2//org/apache/maven/wagon/
wagon-scm/1.0-beta-4/wagon-scm-1.0-beta-4.pom
...
Downloading: http://repository.jboss.org/maven2//commons-lang/commons-
lang/2.1/commons-lang-2.1.jar
202K downloaded
[INFO] [jar:jar]
[INFO] Building jar: /Volumes/Data/Code/jboss.org/jopr/modules/plugins/
buscador/target/buscador-plugin-1.2.0.GA.jar
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 8 minutes 16 seconds
[INFO] Finished at: Fri May 29 00:45:29 BRT 2009
[INFO] Final Memory: 16M/126M
[INFO]
------------------------------------------------------------------------   47
Deploy

 jopr/trunk/modules/plugins/buscador alegomes$

           cp target/buscador-plugin-1.2.0.GA.jar

       ~/JavaTools/jon-server-2.2.0.GA/jbossas/server/
 default/deploy/rhq.ear/rhq-downloads/rhq-plugins/




06:05:33,763 INFO   [ProductPluginDeployer] Discovered agent plugin [buscador]
06:05:34,406 INFO   [ProductPluginDeployer] Deploying [1] new or updated agent plugins: [buscador]

                                                                                    log do jon-server


                                                                                                     48
./rhq-server.sh console

...
07:22:52,375 INFO [EARDeployer] Init J2EE application: file:/Volumes/Data/Applications/JavaTools/
jon-server-2.2.0.GA/jbossas/server/default/deploy/rhq.ear/
07:23:01,581 INFO [SchedulerService] Scheduler has a default operation timeout of [600] seconds.
07:23:03,094 INFO [CoreServer] Version=[1.2.0.GA], Build Number=[3862], Build Date=[27.Apr.2009
16.56.25 EDT]
07:23:20,790 INFO [ProductPluginDeployer] Discovered agent plugin [buscador]
07:23:22,726 INFO [ProductPluginDeployer] Discovered agent plugin [Hibernate]
07:23:24,821 INFO [ProductPluginDeployer] Discovered agent plugin [JBossAS]
07:23:25,988 INFO [ProductPluginDeployer] Discovered agent plugin [RHQServer]
07:23:27,329 INFO [ProductPluginDeployer] Discovered agent plugin [RHQAgent]
07:23:28,437 INFO [ProductPluginDeployer] Discovered agent plugin [Apache]
07:23:29,579 INFO [ProductPluginDeployer] Discovered agent plugin [Database]
07:23:30,776 INFO [ProductPluginDeployer] Discovered agent plugin [IIS]
07:23:31,938 INFO [ProductPluginDeployer] Discovered agent plugin [JMX]
07:23:32,947 INFO [ProductPluginDeployer] Discovered agent plugin [Platforms]
07:23:33,940 INFO [ProductPluginDeployer] Discovered agent plugin [Postgres]
07:23:34,366 INFO [PersistenceUnitDeployment] Starting persistence unit
persistence.units:ear=rhq.ear,unitName=rhqpu
07:23:34,786 INFO [Version] Hibernate EntityManager 3.2.1.GA
...




                                                                                               49
sudo ./rhq-agent.sh
rhq-agent-jon-2.2.0/bin alegomes$ sudo ./rhq-agent.sh
RHQ 1.2.0.GA [3862] (Mon Apr 27 17:55:22 BRT 2009)
>
> plugins info
Plugins that are currently installed:

jopr-hibernate-plugin-2.2.0.GA.jar
        Plugin Name: Hibernate
        Last Updated: May 27, 2009 6:38:29 PM BRT
        File Size:    11,008 bytes
        MD5 Hashcode: d8540d9ff5e15867f7e19bd755fe1afe

...

rhq-postgres-plugin-1.2.0.GA.jar
        Plugin Name: Postgres
        Last Updated: May 27, 2009 6:38:26 PM BRT
        File Size:    475,851 bytes
        MD5 Hashcode: 7049b7b7d33ec5f5ebb903ffdb9f5e85

Total number of plugins currently installed: [10]
>                                                        50
sudo ./rhq-agent.sh



> plugins update
The plugin container has been stopped.
Updating plugins to their latest versions.
The plugin [buscador-plugin-1.2.0.GA.jar] has been updated.
Completed updating the plugins to their latest versions.

The plugin container has been started.
>




                                                          51
sudo ./rhq-agent.sh
> plugins info
Plugins that are currently installed:

buscador-plugin-1.2.0.GA.jar
        Plugin Name: buscador
        Last Updated: May 29, 2009 7:29:26 AM BRT
        File Size:    6,567 bytes
        MD5 Hashcode: 2bd7e8dcbd206ee56a9aec9f6b9b6e6d

jopr-hibernate-plugin-2.2.0.GA.jar
        Plugin Name: Hibernate
        Last Updated: May 27, 2009 6:38:29 PM BRT
        File Size:    11,008 bytes
        MD5 Hashcode: d8540d9ff5e15867f7e19bd755fe1afe
...
rhq-postgres-plugin-1.2.0.GA.jar
        Plugin Name: Postgres
        Last Updated: May 27, 2009 6:38:26 PM BRT
        File Size:    475,851 bytes
        MD5 Hashcode: 7049b7b7d33ec5f5ebb903ffdb9f5e85

Total number of plugins currently installed: [11]        52
Auto-Discovery




                 53
Discovery Component

import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;

public class BuscadorDiscovery implements ResourceDiscoveryComponent {

public Set discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {

       // Todos os recursos descobertos serao agrupados neste conjunto
       Set discoveredResources = new HashSet();



      // Implementa a regra de descoberta do Buscador
      // (via tabela de processos, arquivo em disco, porta TCP/IP, etc)



      // Cria objeto que represente o recurso descoberto
       DiscoveredResourceDetails detail = .....;

      // Adicione cada um dos recursos descobertos ao resultado
      discoveredResources.add(detail);

      return discoveredResources;
}
                                                                                         54
Process Scan
                             Process Info Query Language



Process|basename|match=^java.*,arg|org.jboss.Main|match=.*

             process|pidfile|match=/etc/product/lock.pid



List<ProcessScanResult> autoDiscoveryResults = context.getAutoDiscoveredProcesses();

for (ProcessScanResult result : autoDiscoveryResults) {
      ProcessInfo procInfo = result.getProcessInfo();
      ...
      DiscoveredResourceDetails detail =
            new DiscoveredResourceDetails( resourceType, key, name, null,
                                           description, childConfig, procInfo );

       result.add(detail);
   }
Discovery Component                                                                55
56
Plugin Component
public class BuscadorComponent implements ResourceComponent {

    public AvailabilityType getAvailability() {

         // Regra para verificar se o recurso esta disponivel ou nao.
         return AvailabilityType.UP;
    }

    public void start(ResourceContext context) throws Exception {

         // Inicializa conexao com o rescurso
     }

    public void stop() {

         // Finaliza conexao com o recurso
    }

}                                                                       57
Plugin Component



public class BuscadorComponent implements ResourceComponent, MeasurementFacet {

 /**
  * Coleta valores das metricas mapeadas no descritor
  */
  public void getValues(MeasurementReport report, Set metrics) throws Exception {

      for (MeasurementScheduleRequest metrica : metrics) {

          if (metrica.getName().equals("umaMetricaQualquer")) {
             MeasurementDataNumeric valor = null;

             valor = new MeasurementDataNumeric(metrica, Double.valueOf(VALOR_QUALQUER));
             report.addData(valor);
          }
          // Fazer a mesma coisa para as outras metricas
      }
  }                                                                                         58
plugin-configuration




<plugin-configuration>

</plugin-configuration>

                          59
plugin-configuration




                      60
plugin-configuration




<plugin-configuration>
   <c:simple-property name="contexto" type="string" required="true" />
</plugin-configuration>
                                                                    61
plugin-configuration




                      62
Measurement Facet


<!-- jboss.web:name=http-0.0.0.0-8080,type=ThreadPool:currentThreadsBusy -->
<metric property="jboss.web:name=%schema%%dash%%address%-%port%,type=ThreadPool:currentThreadsBusy"
        displayName="Threads Active"
        defaultOn="true" category="utilization" displayType="summary"/>




public void getValues(MeasurementReport report,
                      Set<MeasurementScheduleRequest> requests) {

    ...

}




                                                                                                      63
Configuration Facet


<resource-configuration>

  <c:group name="connection" displayName="Connection Information">
      <c:simple-property name="type">
             <c:property-options>
                 <c:option value="no-tx-datasource" name="No TX Datasource"/>
                 <c:option value="local-tx-datasource" name="Local TX Datasource" default="true"/>
              <c:option value="xa-datasource" name="XA Datasource"/>
           </c:property-options>
       </c:simple-property>
       ...

</resource-configuration>




                                                                                                     64
Operation Facet

<operation name="start" displayName="Start"
                 description="Start this application server.
                              The script used is specified in the Operations
                              group of connection properties.">

       <results>
           <c:simple-property name="operationResult"
                              description="Outcome of starting the server."/>
       </results>

</operation>



public OperationResult invokeOperation(String name, Configuration configuration) throws InterruptedException {

      JBossASServerSupportedOperations operation =
             Enum.valueOf(JBossASServerSupportedOperations.class,
                          name.toUpperCase());

       return operationsDelegate.invoke(operation, configuration);
}
                                                                                                             65
Content Facet
<content name="cumulativePatch" displayName="Cumulative Patch" category="deployable"
         description="Automatically installable application server patches">

      <configuration>
         <c:simple-property      name="jiraId"/>
         <c:simple-property      name="distributionStatus"/>
         <c:simple-property      name="downloadUrl"/>
         <c:simple-property      name="instructionCompatibilityVersion"/>
     </configuration>

</content>




// ContentFacet Implementation   --------------------------------------------

   public List<DeployPackageStep> generateInstallationSteps(ResourcePackageDetails packageDetails) {
       return contentFacetDelegate.generateInstallationSteps(packageDetails);
   }

   public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails> packages, ContentServices contentServices) {
   	return contentFacetDelegate.deployPackages(packages, contentServices);
   }

   public RemovePackagesResponse removePackages(Set<ResourcePackageDetails> packages) {
       return contentFacetDelegate.removePackages(packages);
   }

   public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type) {
   	return contentFacetDelegate.discoverDeployedPackages(type);
   }

   public InputStream retrievePackageBits(ResourcePackageDetails packageDetails) {
       return contentFacetDelegate.retrievePackageBits(packageDetails);
   }
                                                                                                                           66
Event Facet

<event name="logEntry" description="an entry in a log file"/>




public void start(ResourceContext context) throws Exception {
  ...
  this.logFileEventDelegate = new LogFileEventResourceComponentHelper(this.resourceContext);
  this.logFileEventDelegate.startLogFileEventPollers();
}

public void stop() {
   this.logFileEventDelegate.stopLogFileEventPollers();
   ...
}




                                                                                               67
Baixe, instale e configure o Maven
Baixe e descompacte o código fonte do Jopr
    Baixe e execute o gerador de plugins
       Faça o deploy do plugin gerado
             Experimente a PIQL
             Explore suas facetas

                                         68
JUST DO IT




69




     Sugestão: inspire-se no exemplo RHQ_httptest2.zip, disponível no servidor.
Q&A

Weitere ähnliche Inhalte

Was ist angesagt?

PhyloPipe.v1.1_manual_20150610
PhyloPipe.v1.1_manual_20150610PhyloPipe.v1.1_manual_20150610
PhyloPipe.v1.1_manual_20150610Yixuan Guo
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Boni García
 
Nachos Filesystem
Nachos FilesystemNachos Filesystem
Nachos FilesystemKang Zhang
 
Pharo sources in git
Pharo sources in gitPharo sources in git
Pharo sources in gitPhilippe Back
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1rajivmordani
 

Was ist angesagt? (11)

PhyloPipe.v1.1_manual_20150610
PhyloPipe.v1.1_manual_20150610PhyloPipe.v1.1_manual_20150610
PhyloPipe.v1.1_manual_20150610
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5
 
Java 9
Java 9Java 9
Java 9
 
Nachos Filesystem
Nachos FilesystemNachos Filesystem
Nachos Filesystem
 
developing Xul
developing Xuldeveloping Xul
developing Xul
 
What is play
What is playWhat is play
What is play
 
Logger implementation
Logger implementationLogger implementation
Logger implementation
 
Pharo sources in git
Pharo sources in gitPharo sources in git
Pharo sources in git
 
Java 9 new features
Java 9 new featuresJava 9 new features
Java 9 new features
 
Tutorial j boss
Tutorial j bossTutorial j boss
Tutorial j boss
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1
 

Ähnlich wie Jopr Plugin Development

JDK Tools For Performance Diagnostics
JDK Tools For Performance DiagnosticsJDK Tools For Performance Diagnostics
JDK Tools For Performance DiagnosticsBaruch Sadogursky
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release reviewGiang Nguyễn
 
Red Hat OpenShift Operators - Operators ABC
Red Hat OpenShift Operators - Operators ABCRed Hat OpenShift Operators - Operators ABC
Red Hat OpenShift Operators - Operators ABCRobert Bohne
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using GoCloudOps2005
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfLuca Mattia Ferrari
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentBrad Rippe
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1Rubens Dos Santos Filho
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management toolRenato Primavera
 
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im ÜberblickEin Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblickrenebruns
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)VMware Tanzu
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App EngineInphina Technologies
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App EngineIndicThreads
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKJosé Paumard
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data ServicesTom Kranz
 
RichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesRichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesPavol Pitoňák
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 

Ähnlich wie Jopr Plugin Development (20)

JDK Tools For Performance Diagnostics
JDK Tools For Performance DiagnosticsJDK Tools For Performance Diagnostics
JDK Tools For Performance Diagnostics
 
Core Android
Core AndroidCore Android
Core Android
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Maven
MavenMaven
Maven
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Red Hat OpenShift Operators - Operators ABC
Red Hat OpenShift Operators - Operators ABCRed Hat OpenShift Operators - Operators ABC
Red Hat OpenShift Operators - Operators ABC
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 Development
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
Exploring Maven SVN GIT
Exploring Maven SVN GITExploring Maven SVN GIT
Exploring Maven SVN GIT
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
 
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im ÜberblickEin Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data Services
 
RichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesRichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile Devices
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 

Mehr von SEA Tecnologia

Loomio how to Series - Working on a Discussion
Loomio how to Series - Working on a DiscussionLoomio how to Series - Working on a Discussion
Loomio how to Series - Working on a DiscussionSEA Tecnologia
 
Loomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of PeopleLoomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of PeopleSEA Tecnologia
 
Loomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new DiscussionLoomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new DiscussionSEA Tecnologia
 
Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?SEA Tecnologia
 
O curioso caso de Náutilus Button
O curioso caso de Náutilus ButtonO curioso caso de Náutilus Button
O curioso caso de Náutilus ButtonSEA Tecnologia
 
Contratos de desenvolvimento de software para governo blue pill or red pill?
Contratos de desenvolvimento de software para governo  blue pill or red pill?Contratos de desenvolvimento de software para governo  blue pill or red pill?
Contratos de desenvolvimento de software para governo blue pill or red pill?SEA Tecnologia
 
Os benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digitalOs benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digitalSEA Tecnologia
 
A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.SEA Tecnologia
 
Open data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software LivreOpen data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software LivreSEA Tecnologia
 
Agilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de IntracontágioAgilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de IntracontágioSEA Tecnologia
 
Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6SEA Tecnologia
 
Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010SEA Tecnologia
 
Sem tesão não há solução
Sem tesão não há soluçãoSem tesão não há solução
Sem tesão não há soluçãoSEA Tecnologia
 
Empreendimentos em Rede
Empreendimentos em RedeEmpreendimentos em Rede
Empreendimentos em RedeSEA Tecnologia
 

Mehr von SEA Tecnologia (20)

Loomio how to Series - Working on a Discussion
Loomio how to Series - Working on a DiscussionLoomio how to Series - Working on a Discussion
Loomio how to Series - Working on a Discussion
 
Loomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of PeopleLoomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of People
 
Loomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new DiscussionLoomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new Discussion
 
Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?
 
O curioso caso de Náutilus Button
O curioso caso de Náutilus ButtonO curioso caso de Náutilus Button
O curioso caso de Náutilus Button
 
Contratos de desenvolvimento de software para governo blue pill or red pill?
Contratos de desenvolvimento de software para governo  blue pill or red pill?Contratos de desenvolvimento de software para governo  blue pill or red pill?
Contratos de desenvolvimento de software para governo blue pill or red pill?
 
#Fail
#Fail#Fail
#Fail
 
Agilidade no Governo
Agilidade no GovernoAgilidade no Governo
Agilidade no Governo
 
Os benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digitalOs benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digital
 
A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.
 
Lean Startup
Lean StartupLean Startup
Lean Startup
 
Open Data
Open DataOpen Data
Open Data
 
Open data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software LivreOpen data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software Livre
 
Agilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de IntracontágioAgilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de Intracontágio
 
Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6
 
Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010
 
Sem tesão não há solução
Sem tesão não há soluçãoSem tesão não há solução
Sem tesão não há solução
 
Empreendimentos em Rede
Empreendimentos em RedeEmpreendimentos em Rede
Empreendimentos em Rede
 
Java Profiling Tools
Java Profiling ToolsJava Profiling Tools
Java Profiling Tools
 
Misc Monitoring Tools
Misc Monitoring ToolsMisc Monitoring Tools
Misc Monitoring Tools
 

Kürzlich hochgeladen

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Jopr Plugin Development

  • 2. Conceitos Serviços Servidores Plataformas 2
  • 3. Serviços Recursos Servidores Plataformas 3
  • 5. 5
  • 6. EJB, WebApp, Recursos Filhos Datasource JBoss App Server Recurso iMac Recurso Pai 6
  • 7. Service BuscadorBean Server JBoss EAP 4.3 Plataform Mac OS X Recurso Categoria Tipo 7
  • 8. ? Por que cada tipo de recurso tem métricas e operações distintos? 8
  • 9. Métricas da Métricas do plataforma servidor 9
  • 11. ? Por que alguns recursos são automaticamente descobertos e outros não? 11
  • 12. É tudo culpa do agente! 12
  • 14. 14
  • 15. Arquitetura do jon-agent http://www.redhat.com/f/pdf/Write_A_Plugin_WP_web.pdf 15
  • 16. Serviços só são descobertos e monitorados pelo JON devido à existência de plugins específicos jon-agent plugins ... 16
  • 17. Mas e se houver um serviço cuja monitoração é desejada mas para o qual ainda não existam plugins? jon-agent plugins ... 17
  • 18. Agora sim! jon-agent plugins 18
  • 19. B AM u c o s t n i i i n v t e i o s t r s y i n g 19
  • 21. Desenvolva seus próprios plugins! http://www.jboss.org/community/docs/DOC-12824 http://support.rhq-project.org/display/RHQ/RHQ+Plugin+Community 21
  • 22. a ert cob des mé tric as op er aç ões 22
  • 23. facets 23
  • 24. Step-by-Step 1. descoberta 2. métricas 3. operações 24
  • 25. plugin descriptor discovery plugin component component 25
  • 26. App Package Descriptor WebApp WAR web.xml Portlet WAR portlet.xml EJB JAR ejb-jar.xml MIDlet JAR MANIFEST Enterprise App EAR application.xml MBeans SAR *-service.xml Connectors RAR JON Plugin JAR rhq-plugin.xml 26
  • 28. Discovery Component public class BuscadorDiscovery implements ResourceDiscoveryComponent { public Set discoverResources(ResourceDiscoveryContext discoveryContext) { // Implementa a regra de descoberta do Buscador // (via tabela de processos, arquivo em disco, porta TCP/IP, etc) // Monta e retorna colecao com os recursos descobertos. } } 28
  • 29. Plugin Component public class BuscadorComponent implements ResourceComponent { public AvailabilityType getAvailability() { // Regra para verificar se o recurso esta disponivel ou nao. } public void start(ResourceContext context) { // Inicializa conexao com o rescurso } public void stop() { // Finaliza conexao com o recurso } } 29
  • 30. Plugin Component public class BuscadorComponent implements ResourceComponent, MeasurementFacet { public void getValues(MeasurementReport report, Set metrics) { // Recuperar e armazenar em ‘report’ o valor de // cada metrica presente em ‘metrics’ } } 30
  • 31. Primeiro Plugin ...a gente nunca esquece... 31
  • 32. $ svn co http://anonsvn.jboss.org/repos/jopr/trunk A trunk/.classpath A trunk/LICENSE_LGPL A trunk/LICENSE A trunk/.project A trunk/LICENSE_GPL é preciso obter o A trunk/modules código fonte do Jopr ou A trunk/modules/plugins do RHQ Project A trunk/modules/plugins/hibernate A trunk/modules/plugins/hibernate/src A trunk/modules/plugins/hibernate/src/test A trunk/modules/plugins/hibernate/src/test/java A trunk/modules/plugins/hibernate/src/test/java/org A trunk/modules/plugins/hibernate/src/test/java/org/rhq A trunk/modules/plugins/hibernate/src/test/java/org/rhq/plugins A trunk/modules/plugins/hibernate/src/test/java/org/rhq/plugins/hibernate ... A trunk/etc/jbas5-ejb-client/src/main/java A trunk/etc/jbas5-ejb-client/src/main/java/test A trunk/etc/jbas5-ejb-client/src/main/java/test/EjbClient.java A trunk/etc/jbas5-ejb-client/pom.xml A trunk/.settings A trunk/.settings/org.eclipse.jdt.core.prefs A trunk/.settings/org.maven.ide.eclipse.prefs U trunk Checked out revision 673. 32
  • 33. existe um gerador de plugins! download 33
  • 34. execute o gerador de plugins $ java -jar rhq-pluginGen-1.2.2-jar-with-dependencies.jar Please specify the plugin root category PLATFORM(P), SERVER(S), SERVICE(I), i Please specify its PackagePrefix: br.com.seatecnologia.monitoring.buscador Please specify its FileSystemRoot: /Users/alegomes/Code/jboss.org/jopr/trunk/modules/plugins Please specify its ComponentClass: BuscadorComponent Please specify its DiscoveryClass: BuscadorDiscovery Please specify if it should support Events (y/N): Please specify its ParentType: Please specify if it should support Monitoring (y/N): y Please specify if it should support Operations (y/N): Please specify if it should support Singleton (y/N): Please specify if it should support ResourceConfiguration (y/N): Please specify if it should support CreateChildren (y/N): Please specify if it should support UsesExternalJarsInPlugin (y/N): Please specify if it should support DeleteChildren (y/N): Please specify if it should support ManualAddOfChildren (y/N): Please specify if it should support UsePluginLifecycleListenerApi (y/N): Please specify its Name: buscador Please specify its Description: Plugin para acompanhamento da execucao do aplicativo de simulacao de memory leaks Do you want to add a child to buscador? (y/N) Don't forget to add your plugin to the parent pom.xml responda as questões 34
  • 35. $ ls -1 /Users/alegomes/Code/jboss.org/jopr/trunk/modules/plugins JBossOSGi buscador hibernate jboss-as jboss-as-5 plugin gerado já na pasta jboss-cache de plugins do Jopr pluginGen.log pom.xml rhq-server tomcat $ ls -1 /Users/alegomes/Code/jboss.org/jopr/trunk/modules/plugins/buscador pom.xml src plugin gerado como projeto Maven 35
  • 36. .deb apt-get .rpm yum .jar maven 36
  • 38. código fonte do plugin 37
  • 40. Discovery e Plugin Components 38
  • 41. descritor do plugin 39
  • 42. 40
  • 43. src/main/resources/META-INF/rhq-plugin.xml <plugin-configuration> <!-- TODO add your own here --> </plugin-configuration> comente isto por enquanto para testarmos apenas o build e deploy do plugin <!-- plugin-configuration> <!- TODO add your own here -> </plugin-configuration --> 41
  • 44. mvn compile mvn package mvn clean ... http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 42
  • 45. mvn package [INFO] Failed to resolve artifact. GroupId: org.rhq erro ao ArtifactId: rhq-plugins-parent executar o Version: 1.2.0-SNAPSHOT ‘mvn package’ Reason: Unable to download the artifact from any repository <parent> <groupId>org.rhq</groupId> <artifactId>rhq-plugins-parent</artifactId> <version>1.2.0-SNAPSHOT</version><!-- TODO adjust RHQ version --> </parent> pom.xml lib requerida pelo plugin gerado 43
  • 46. Repositórios JBoss http://repository.jboss.org/maven2 Releases oficiais de libs JBoss e.g. 1.2.0.GA http://snapshots.jboss.org/maven2 Libs JBoss ainda em desenvolvimento e.g. 1.3.0-SNAPSHOT 44
  • 47. repositório oficial não possui a versão 1.2.0-SNAPSHOT repositório de snapshots até possui a versão 1.2.0-SNAPSHOT, mas já estão desenvolvendo a 1.3.0-SNAPSHOT 45
  • 48. pom.xml alteração da versão da lib <parent> <groupId>org.rhq</groupId> <artifactId>rhq-plugins-parent</artifactId> <version>1.2.0.GA</version><!-- TODO adjust RHQ version --> </parent> ... <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.org/maven2/</url> </repository> </repositories> inclusão de um dos repositórios do JBoss 46
  • 49. jopr/modules/plugins/buscador$ mvn package [INFO] Scanning for projects... Downloading: http://repository.jboss.org/maven2//org/rhq/rhq-plugins- parent/1.2.0.GA/rhq-plugins-parent-1.2.0.GA.pom 3K downloaded Downloading: http://repository.jboss.org/maven2//org/rhq/rhq-parent/ 1.2.0.GA/rhq-parent-1.2.0.GA.pom 19K downloaded Downloading: http://repository.jboss.org/maven2//org/apache/maven/wagon/ wagon-scm/1.0-beta-4/wagon-scm-1.0-beta-4.pom ... Downloading: http://repository.jboss.org/maven2//commons-lang/commons- lang/2.1/commons-lang-2.1.jar 202K downloaded [INFO] [jar:jar] [INFO] Building jar: /Volumes/Data/Code/jboss.org/jopr/modules/plugins/ buscador/target/buscador-plugin-1.2.0.GA.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8 minutes 16 seconds [INFO] Finished at: Fri May 29 00:45:29 BRT 2009 [INFO] Final Memory: 16M/126M [INFO] ------------------------------------------------------------------------ 47
  • 50. Deploy jopr/trunk/modules/plugins/buscador alegomes$ cp target/buscador-plugin-1.2.0.GA.jar ~/JavaTools/jon-server-2.2.0.GA/jbossas/server/ default/deploy/rhq.ear/rhq-downloads/rhq-plugins/ 06:05:33,763 INFO [ProductPluginDeployer] Discovered agent plugin [buscador] 06:05:34,406 INFO [ProductPluginDeployer] Deploying [1] new or updated agent plugins: [buscador] log do jon-server 48
  • 51. ./rhq-server.sh console ... 07:22:52,375 INFO [EARDeployer] Init J2EE application: file:/Volumes/Data/Applications/JavaTools/ jon-server-2.2.0.GA/jbossas/server/default/deploy/rhq.ear/ 07:23:01,581 INFO [SchedulerService] Scheduler has a default operation timeout of [600] seconds. 07:23:03,094 INFO [CoreServer] Version=[1.2.0.GA], Build Number=[3862], Build Date=[27.Apr.2009 16.56.25 EDT] 07:23:20,790 INFO [ProductPluginDeployer] Discovered agent plugin [buscador] 07:23:22,726 INFO [ProductPluginDeployer] Discovered agent plugin [Hibernate] 07:23:24,821 INFO [ProductPluginDeployer] Discovered agent plugin [JBossAS] 07:23:25,988 INFO [ProductPluginDeployer] Discovered agent plugin [RHQServer] 07:23:27,329 INFO [ProductPluginDeployer] Discovered agent plugin [RHQAgent] 07:23:28,437 INFO [ProductPluginDeployer] Discovered agent plugin [Apache] 07:23:29,579 INFO [ProductPluginDeployer] Discovered agent plugin [Database] 07:23:30,776 INFO [ProductPluginDeployer] Discovered agent plugin [IIS] 07:23:31,938 INFO [ProductPluginDeployer] Discovered agent plugin [JMX] 07:23:32,947 INFO [ProductPluginDeployer] Discovered agent plugin [Platforms] 07:23:33,940 INFO [ProductPluginDeployer] Discovered agent plugin [Postgres] 07:23:34,366 INFO [PersistenceUnitDeployment] Starting persistence unit persistence.units:ear=rhq.ear,unitName=rhqpu 07:23:34,786 INFO [Version] Hibernate EntityManager 3.2.1.GA ... 49
  • 52. sudo ./rhq-agent.sh rhq-agent-jon-2.2.0/bin alegomes$ sudo ./rhq-agent.sh RHQ 1.2.0.GA [3862] (Mon Apr 27 17:55:22 BRT 2009) > > plugins info Plugins that are currently installed: jopr-hibernate-plugin-2.2.0.GA.jar Plugin Name: Hibernate Last Updated: May 27, 2009 6:38:29 PM BRT File Size: 11,008 bytes MD5 Hashcode: d8540d9ff5e15867f7e19bd755fe1afe ... rhq-postgres-plugin-1.2.0.GA.jar Plugin Name: Postgres Last Updated: May 27, 2009 6:38:26 PM BRT File Size: 475,851 bytes MD5 Hashcode: 7049b7b7d33ec5f5ebb903ffdb9f5e85 Total number of plugins currently installed: [10] > 50
  • 53. sudo ./rhq-agent.sh > plugins update The plugin container has been stopped. Updating plugins to their latest versions. The plugin [buscador-plugin-1.2.0.GA.jar] has been updated. Completed updating the plugins to their latest versions. The plugin container has been started. > 51
  • 54. sudo ./rhq-agent.sh > plugins info Plugins that are currently installed: buscador-plugin-1.2.0.GA.jar Plugin Name: buscador Last Updated: May 29, 2009 7:29:26 AM BRT File Size: 6,567 bytes MD5 Hashcode: 2bd7e8dcbd206ee56a9aec9f6b9b6e6d jopr-hibernate-plugin-2.2.0.GA.jar Plugin Name: Hibernate Last Updated: May 27, 2009 6:38:29 PM BRT File Size: 11,008 bytes MD5 Hashcode: d8540d9ff5e15867f7e19bd755fe1afe ... rhq-postgres-plugin-1.2.0.GA.jar Plugin Name: Postgres Last Updated: May 27, 2009 6:38:26 PM BRT File Size: 475,851 bytes MD5 Hashcode: 7049b7b7d33ec5f5ebb903ffdb9f5e85 Total number of plugins currently installed: [11] 52
  • 56. Discovery Component import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent; public class BuscadorDiscovery implements ResourceDiscoveryComponent { public Set discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception { // Todos os recursos descobertos serao agrupados neste conjunto Set discoveredResources = new HashSet(); // Implementa a regra de descoberta do Buscador // (via tabela de processos, arquivo em disco, porta TCP/IP, etc) // Cria objeto que represente o recurso descoberto DiscoveredResourceDetails detail = .....; // Adicione cada um dos recursos descobertos ao resultado discoveredResources.add(detail); return discoveredResources; } 54
  • 57. Process Scan Process Info Query Language Process|basename|match=^java.*,arg|org.jboss.Main|match=.* process|pidfile|match=/etc/product/lock.pid List<ProcessScanResult> autoDiscoveryResults = context.getAutoDiscoveredProcesses(); for (ProcessScanResult result : autoDiscoveryResults) { ProcessInfo procInfo = result.getProcessInfo(); ... DiscoveredResourceDetails detail = new DiscoveredResourceDetails( resourceType, key, name, null, description, childConfig, procInfo ); result.add(detail); } Discovery Component 55
  • 58. 56
  • 59. Plugin Component public class BuscadorComponent implements ResourceComponent { public AvailabilityType getAvailability() { // Regra para verificar se o recurso esta disponivel ou nao. return AvailabilityType.UP; } public void start(ResourceContext context) throws Exception { // Inicializa conexao com o rescurso } public void stop() { // Finaliza conexao com o recurso } } 57
  • 60. Plugin Component public class BuscadorComponent implements ResourceComponent, MeasurementFacet { /** * Coleta valores das metricas mapeadas no descritor */ public void getValues(MeasurementReport report, Set metrics) throws Exception { for (MeasurementScheduleRequest metrica : metrics) { if (metrica.getName().equals("umaMetricaQualquer")) { MeasurementDataNumeric valor = null; valor = new MeasurementDataNumeric(metrica, Double.valueOf(VALOR_QUALQUER)); report.addData(valor); } // Fazer a mesma coisa para as outras metricas } } 58
  • 63. plugin-configuration <plugin-configuration> <c:simple-property name="contexto" type="string" required="true" /> </plugin-configuration> 61
  • 65. Measurement Facet <!-- jboss.web:name=http-0.0.0.0-8080,type=ThreadPool:currentThreadsBusy --> <metric property="jboss.web:name=%schema%%dash%%address%-%port%,type=ThreadPool:currentThreadsBusy" displayName="Threads Active" defaultOn="true" category="utilization" displayType="summary"/> public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> requests) { ... } 63
  • 66. Configuration Facet <resource-configuration> <c:group name="connection" displayName="Connection Information"> <c:simple-property name="type"> <c:property-options> <c:option value="no-tx-datasource" name="No TX Datasource"/> <c:option value="local-tx-datasource" name="Local TX Datasource" default="true"/> <c:option value="xa-datasource" name="XA Datasource"/> </c:property-options> </c:simple-property> ... </resource-configuration> 64
  • 67. Operation Facet <operation name="start" displayName="Start" description="Start this application server. The script used is specified in the Operations group of connection properties."> <results> <c:simple-property name="operationResult" description="Outcome of starting the server."/> </results> </operation> public OperationResult invokeOperation(String name, Configuration configuration) throws InterruptedException { JBossASServerSupportedOperations operation = Enum.valueOf(JBossASServerSupportedOperations.class, name.toUpperCase()); return operationsDelegate.invoke(operation, configuration); } 65
  • 68. Content Facet <content name="cumulativePatch" displayName="Cumulative Patch" category="deployable" description="Automatically installable application server patches"> <configuration> <c:simple-property name="jiraId"/> <c:simple-property name="distributionStatus"/> <c:simple-property name="downloadUrl"/> <c:simple-property name="instructionCompatibilityVersion"/> </configuration> </content> // ContentFacet Implementation -------------------------------------------- public List<DeployPackageStep> generateInstallationSteps(ResourcePackageDetails packageDetails) { return contentFacetDelegate.generateInstallationSteps(packageDetails); } public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails> packages, ContentServices contentServices) { return contentFacetDelegate.deployPackages(packages, contentServices); } public RemovePackagesResponse removePackages(Set<ResourcePackageDetails> packages) { return contentFacetDelegate.removePackages(packages); } public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type) { return contentFacetDelegate.discoverDeployedPackages(type); } public InputStream retrievePackageBits(ResourcePackageDetails packageDetails) { return contentFacetDelegate.retrievePackageBits(packageDetails); } 66
  • 69. Event Facet <event name="logEntry" description="an entry in a log file"/> public void start(ResourceContext context) throws Exception { ... this.logFileEventDelegate = new LogFileEventResourceComponentHelper(this.resourceContext); this.logFileEventDelegate.startLogFileEventPollers(); } public void stop() { this.logFileEventDelegate.stopLogFileEventPollers(); ... } 67
  • 70. Baixe, instale e configure o Maven Baixe e descompacte o código fonte do Jopr Baixe e execute o gerador de plugins Faça o deploy do plugin gerado Experimente a PIQL Explore suas facetas 68
  • 71. JUST DO IT 69 Sugestão: inspire-se no exemplo RHQ_httptest2.zip, disponível no servidor.
  • 72. Q&A

Hinweis der Redaktion

  1. Os 3 conceitos principais do JON s&amp;#xE3;o: - Plataforma: Dell 3.4Ghz 4GB RAM... - Servidores: JBoss, Apache, IIS, Postgres... - Servi&amp;#xE7;o: EJB, Datasource, WebApp...
  2. Todos os 3 elementos s&amp;#xE3;o chamados de &amp;#x2018;recurso&amp;#x2019;.
  3. Qualquer recurso pode ter um recurso pai e v&amp;#xE1;rios recursos filhos.
  4. O servidor JBoss AS &amp;#xE9; recurso filho da plataforma iMac. A plataforma iMac &amp;#xE9; recurso pai do servidor JBoss AS. Os servi&amp;#xE7;os EJBs, WebApps e Datasource s&amp;#xE3;o recursos filhos do servidor JBoss AS. O servidor JBoss AS &amp;#xE9; recurso pai dos servi&amp;#xE7;os EJB, WebApp e Datasource.
  5. Conceitos: Recurso, Categoria e Tipo
  6. Por exemplo, uma plataforma Linux tem X m&amp;#xE9;tricas dispon&amp;#xED;veis, enquanto um servidor JBoss tem Y m&amp;#xE9;tricas, totalmente diferente daquelas X.
  7. Reparem que o conjunto de m&amp;#xE9;tricas da plataforma &amp;#xE9; diferente do conjunto de m&amp;#xE9;tricas do servidor.
  8. O conjunto de opera&amp;#xE7;&amp;#xF5;es tambem diferem de um tipo de recurso para outro.
  9. Por exemplo, por que o PostgreSQL &amp;#xE9; detectado na plataforma e o MySQL, n&amp;#xE3;o?
  10. Relembrando a arquitetura do JON: - Um &amp;#xFA;nico jon-server &amp;#xE9; necess&amp;#xE1;rio. - Um jon-agent deve ser instalado em cada m&amp;#xE1;quina a ser monitorada. - O jon-server comunica-se com v&amp;#xE1;rios jon-agents, e vice-versa.
  11. O jon-agent busca no ambiente em que foi instalado por todos servi&amp;#xE7;os que reconhece. Se o administrador do JON, pela interface do jon-server, solicitar a monitora&amp;#xE7;&amp;#xE3;o dos recursos identificados pelo jon-agent, o agente inicia a coleta peri&amp;#xF3;dica de dados de cada servi&amp;#xE7;o descoberto.
  12. O elemento central do agente do JON s&amp;#xE3;o seus plugins. Cada plugin &amp;#xE9; respons&amp;#xE1;vel pela descoberta e monitora&amp;#xE7;&amp;#xE3;o de um tipo espec&amp;#xED;fico de recurso.
  13. O que define o poder do JON &amp;#xE9; o conjunto de plugins dispon&amp;#xED;vel em seus agentes. Ou seja, se existir um plugin do JON espec&amp;#xED;fico para Oracle, o Oracle ser&amp;#xE1; monitorado. Caso contr&amp;#xE1;rio, n&amp;#xE3;o ser&amp;#xE1;.
  14. Qualquer pessoa pode desenvolver e acrescentar novos plugins ao JON.
  15. Basta utilizar a API definida no projeto RHQ.
  16. E a&amp;#xED; &amp;#xE9; poss&amp;#xED;vel realizar o monitoramento de atividades de neg&amp;#xF3;cio, extraindo m&amp;#xE9;tricas estrat&amp;#xE9;gicas para a monitora&amp;#xE7;&amp;#xE3;o das atividades corporativas e apoio &amp;#xE0; tomada de decis&amp;#xF5;es gerenciais.
  17. Todo plugin pode fazer 3 coisas...
  18. Essas 3 coisas s&amp;#xE3;o chamadas de facetas (facets) do plugin.
  19. Cada uma dessas 3 coisas &amp;#xE9; implementada de forma independente.
  20. Para que essas 3 coisas sejam feitas, &amp;#xE9; preciso...
  21. Descritores fazem parte da cultura Java. Pra cada tipo de pacote Java existe um tipo espec&amp;#xED;fico de descritor.
  22. Esta &amp;#xE9; a estrutura do plugin descriptor. Apresentar: - Depend&amp;#xEA;ncias de um plugin com outros - Sequ&amp;#xEA;ncia de plataformas, servidores e servi&amp;#xE7;os - Cada tipo de recurso deve ter um nome &amp;#xFA;nico no plugin - Para cada tipo de recurso, define-se a l&amp;#xF3;gica de descoberta, as m&amp;#xE9;tricas e opera&amp;#xE7;&amp;#xF5;es suportadas, dentre outros.
  23. O Discovery Component &amp;#xE9; invocado periodicamente pelo agente.
  24. Ap&amp;#xF3;s a descoberta, o Plugin Component entra em a&amp;#xE7;&amp;#xE3;o para coleta de m&amp;#xE9;tricas, execu&amp;#xE7;&amp;#xE3;o de opera&amp;#xE7;&amp;#xF5;es, etc.
  25. Para cada fun&amp;#xE7;&amp;#xE3;o b&amp;#xE1;sica do plugin, &amp;#xE9; necess&amp;#xE1;ria a implementa&amp;#xE7;&amp;#xE3;o de uma faceta espec&amp;#xED;fica. Cada faceta corresponde a uma interface espec&amp;#xED;fica a ser implementada pelo desenvolvedor do plugin.
  26. Por conveni&amp;#xEA;ncia..
  27. J&amp;#xE1; at&amp;#xE9; tinha o reposit&amp;#xF3;rio no profile dev, mas seria mais coisa a explicar...
  28. O projeto Maven do plugin extende o projeto Maven ajopr-2/modules/plugins/teste2 todos os plugins.
  29. Altera&amp;#xE7;&amp;#xE3;o no pom.xml
  30. Altera&amp;#xE7;&amp;#xE3;o no pom.xml
  31. Build
  32. Deploy
  33. O Discovery Component &amp;#xE9; invocado periodicamente pelo agente.
  34. Ap&amp;#xF3;s a descoberta, o Plugin Component entra em a&amp;#xE7;&amp;#xE3;o para coleta de m&amp;#xE9;tricas, execu&amp;#xE7;&amp;#xE3;o de opera&amp;#xE7;&amp;#xF5;es, etc.
  35. Para cada fun&amp;#xE7;&amp;#xE3;o b&amp;#xE1;sica do plugin, &amp;#xE9; necess&amp;#xE1;ria a implementa&amp;#xE7;&amp;#xE3;o de uma faceta espec&amp;#xED;fica. Cada faceta corresponde a uma interface espec&amp;#xED;fica a ser implementada pelo desenvolvedor do plugin.
  36. Exemplo de configura&amp;#xE7;&amp;#xE3;o