Histórico da Página
1. Visão geral do Datasul Cloud Monitor
O Datasul Cloud Monitor é um plugin desenvolvido em plataforma JAVA, cujo objetivo é monitorar os produtos Datasul, a saber, Datasul 11 e Datasul EMS. Esta ferramenta é utilizada pelo painel de Monitoramento do 3C para extrair informações sobre a situação de seus sistemas em ambiente cloud. O painel de monitoramento do 3C fornece aos clientes funcionalidades como gestão de incidentes, mudanças, billing, controle de uso, dentre outras métricas de operação dos sistemas. Para maiores detalhes sobre o painel de monitoramento do 3C, acesse https://suporte.totvs.com/centrocontrolecloud.
A arquitetura do 3C é composta por:
- Ferramentas para gestão e inventário dos ambientes cloud (cadastros do 3C)
- Base de dados do 3C para armazenar informações como indicadores de contrato, clientes, ambientes físicos, thresholds, dentre outras.
- Ferramenta de monitoramento (Nagios)
- Scheduler que obtém a situação dos sistemas por meio de plug-ins especializados para cada linha de produto
- Plugins de monitoramento (Datasul Cloud Monitor)
- Ferramentas especializadas para cada linha de produto, cujo objetivo é computar métricas de disponibilidade dos serviços, controle de uso e consumo de storage dos sistemas envolvidos.
A imagem a seguir apresenta uma macro-visão da arquitetura do 3C para monitoramento de sistemas da linha Datasul.
O plugin Datasul Cloud Monitor permite o monitoramento das seguintes métricas:
Disponibilidade
- Bancos de dados: indica se os bancos de dados requeridos pelo ERP Datasul estão acessíveis, incluindo bancos mono e multi empresa configurados no Foundation. Os testes de disponibilidade dos bancos de dados abrangem conexões 4GL e SQL.
- EAI: verifica se os serviços estão acessíveis através de uma conexão HTTP com o Service Provider do EAI.
- RPW: indica se os servidores RPW configurados no Foundation estão disponíveis. Quando positivo, é verificado também quais os servidores disponíveis que estão em uso, isto é, executando algum pedido no momento.
- JBoss: verifica se a instância do JBoss está acessível através de uma conexão HTTP.
- Appserver: verifica se a instância do Appserver está acessível ao invocar uma procedure via API Progress.
- Login: simula o processo de login de um determinado usuário. Para o Datasul 11, o processo de login envolve a criação de um contexto de usuário no Josso através do ExternalUserAuthentication.
Storage
- Banco de dados: calcula o volume de bytes utilizados para armazenar o banco de dados, incluindo binários, dados e logs.
- RPW: calcula o volume de bytes utilizados nos diretórios de spool de todos os servidores RPW.
- Usuários: calcula o volume de bytes utilizados nos subdiretórios de spool dos usuários.
- Binários do produto: calcula o volume de bytes utilizados na estrutura de binários (*.r) do produto e específicos (quando houver).
- JBoss: calcula o volume de bytes utilizados pela instalação do JBoss. Quando houver ambiente de load balance, será calculado o espaço utilizado em todas as instâncias do JBoss.
- Appserver: calcula o volume de bytes utilizados na instalação do Appserver Progress e aplicações.
- Web-Enabled: calcula o volume de bytes utilizados na instalação do Web-Enabled.
2. Arquitetura do Datasul Cloud Monitor
O Datasul Cloud Monitor foi desenvolvido utilizando a tecnologia RMI, onde seu funcionamento consiste basicamente em dois aplicativos, seguindo uma arquitetura cliente-servidor. A principal motivação para o uso da tecnologia RMI se deve ao fato do plugin do Nagios ser desenvolvido em Java. Neste caso, o plugin do Nagios irá invocar os serviços especializados para a linha Datasul implementados pelo plugin Datasul Cloud Monitor. Em outras palavras, o plugin do Nagios representa a aplicação cliente na arquitetura proposta, ao passo que o plugin Datasul Cloud Monitor é a aplicação servidora.
Com isto, é possível que o plugin do Nagios identifique a disponibilidade dos produtos Datasul 11, EMS 2 e EMS 5, bem como calcular o volume da bytes consumidos por um determinado ambiente cloud.
2.1 Server
Para iniciar o servidor RMI, é necessário abrir o prompt de comando do SO e localizar o diretório que contenha os arquivos descompactados (Exemplo em Windows: cd c:\temp\cloud-monitor). Após isto deve-se executar o comando abaixo:
java -jar datasul-cloud-monitor-server-1.0-SNAPSHOT.jar <host/ip> <porta>
Os parâmetros utilizados em <host/ip> e <porta> deverão ser utilizados também no aplicativo Java Client para estabelecer a pesquisa pelo servidor desejado. Ou seja, o plugin do Nagius deverá estabelecer uma conexão RMI conforme os parâmetros informados no servidor.
2.2 Client
Para ter acesso aos métodos publicados no servidor RMI, é necessário implementar o código abaixo no programa Java Client:
Bloco de código | ||||
---|---|---|---|---|
| ||||
StringBuilder rmiStrConnection = new StringBuilder(); RMICloudService cloudService = null; rmiStrConnection.append("rmi://"); rmiStrConnection.append(<host/ip>); rmiStrConnection.append(":"); rmiStrConnection.append(<porta>); rmiStrConnection.append("/DatasulCloudMonitor"); try { cloudService = (RMICloudService) Naming.lookup(rmiStrConnection.toString()); /*A partir daqui é possível chamar o método desejado disponível pela variável cloud service*/ } catch (MalformedURLException e1) { e1.printStackTrace(); } catch (RemoteException e1) { e1.printStackTrace(); } catch (NotBoundException e1) { e1.printStackTrace(); } |
3. Utilização dos métodos para o produto Datasul 11
Com base na implementação do item 2.2, para o Datasul 11, entre os seus itens de disponibilidade, é possível verificar a disponibilidade de:
3.1 Disponibilidade de conexão SQL
Método publicado no servidor: availabilitySQL
Parâmetros: List<AvailabilityParamsSQL>
A classe AvailabilityParamsSQL é composta pelos atributos:
Atributo | Descrição | Formato |
databaseType | Tipo de banco (SQLServer ou OpenEdge) | String |
dbName | Nome do banco | String |
urlConnection | Conexão URL | String |
userName | Nome do usuário | String |
passWord | Senha | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
List<AvailabilityDatabaseItem> returnValue = null; List<AvailabilityParamsSQL> availabilityParamsSQLs = new ArrayList<AvailabilityParamsSQL>(); AvailabilityParamsSQL availabilityParamsSQL = new AvailabilityParamsSQL(); availabilityParamsSQL.setDatabaseType("OpenEdge"); availabilityParamsSQL.setDbName("emsfnd"); availabilityParamsSQL.setUserName("pub"); availabilityParamsSQL.setPassWord("pub"); availabilityParamsSQL.setUrlConnection("jdbc:datadirect:openedge://totvsjoi-gcad04:5096;databaseName=emsfnd"); availabilityParamsSQLs.add(availabilityParamsSQL); returnValue = cloudService.availabilitySQL(availabilityParamsSQLs); for (AvailabilityDatabaseItem item : returnValue) { System.out.println(item.getItemName() + "\n"); System.out.println(item.getStatus() + "\n"); } |
Retorno: List<AvailabilityDatabaseItem>
A classe AvailabilityDatabaseItem é composta pelos atributos:
Atributo | Descrição | Formato |
itemName | Nome do Item | String |
status | Status do item | String |
3.2 Disponibilidade do AppServer Datasul
Método publicado no servidor: availabilityAppServer
Parâmetros: AvailabilityParamsDatasul
A classe AvailabilityParamsDatasul é composta pelos atributos:
Atributo | Descrição | Formato |
appServerName | Nome do servidor AppServer | String |
appServerPort | Porta do AppServer | String |
appServerApp | Instância do AppServer | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsDatasul paramsDatasul = new AvailabilityParamsDatasul(); paramsDatasul.setAppServerName("localhost"); paramsDatasul.setAppServerPort("5162"); paramsDatasul.setAppServerApp("cordas8180"); AvailabilityAppServerItem appServerItem = cloudService.availabilityAppServer(paramsDatasul); System.out.println("<<App Server>>"); System.out.println("Nome: " + appServerItem.getAppServerName()); System.out.println("Porta: " + appServerItem.getAppServerPort()); System.out.println("Instancia: " + appServerItem.getAppServerApp()); System.out.println("Status: " + appServerItem.getAppServerStatus()); |
Retorno: List< AvailabilityAppServerItem>
A classe AvailabilityAppServerItem é composta pelos atributos:
Atributo | Descrição | Formato |
appServerName | Nome do servidor AppServer | String |
appServerPort | Porta do AppServer | String |
appServerApp | Instância do AppServer | String |
appServerStatus | Status do AppServer | String |
3.3 Disponibilidade de bancos
Método publicado no servidor: availabilityDatasulDatabases
Parâmetros: AvailabilityParamsDatasulDatabases
A classe AvailabilityParamsDatasulDatabases é composta pelos atributos:
Atributo | Descrição | Formato |
appServerName | Nome do servidor AppServer | String |
appServerPort | Porta do AppServer | String |
appServerApp | Instância do AppServer | String |
dbNames | Nomes dos bancos | String[] |
Bloco de código | ||||
---|---|---|---|---|
| ||||
List<AvailabilityDatabaseItem> avalItems = null; AvailabilityParamsDatasulDatabases paramsDatasulDatabases = new AvailabilityParamsDatasulDatabases(); paramsDatasulDatabases.setAppServerName("localhost"); paramsDatasulDatabases.setAppServerPort("5162"); paramsDatasulDatabases.setAppServerApp("cordas8180"); String[] dbNames = {"emsfnd","emsdev"}; paramsDatasulDatabases.setDbNames(dbNames); avalItems = cloudService.availabilityDatasulDatabases(paramsDatasulDatabases); if (avalItems != null) { for (AvailabilityDatabaseItem item : avalItems) { System.out.println("DatabaseName: " + item.getItemName()); System.out.println("Status: " + item.getStatus() + "\n"); } } |
Retorno: List<AvailabilityDatabaseItem>
A classe AvailabilityDatabaseItem é composta pelos atributos:
Atributo | Descrição | Formato |
itemName | Nome do Item | String |
status | Status do item | String |
3.4 Disponibilidade de servidores RPW Datasul
Método publicado no servidor: availabilityRPWDatasul
Parâmetros: AvailabilityParamsDatasul
A classe AvailabilityParamsDatasul é composta pelos atributos:
Atributo | Descrição | Formato |
appServerName | Nome do servidor AppServer | String |
appServerPort | Porta do AppServer | String |
appServerApp | Instância do AppServer | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsDatasul paramsRPWDatasul = new AvailabilityParamsDatasul(); paramsRPWDatasul.setAppServerName("localhost"); paramsRPWDatasul.setAppServerPort("5162"); paramsRPWDatasul.setAppServerApp("cordas8180"); List<AvailabilityRPWItem> avalRPWList = cloudService.availabilityRPWDatasul(paramsRPWDatasul); for (AvailabilityRPWItem item : avalRPWList) { System.out.println("Cod. Servidor RPW: " + item.getServerCode()); System.out.println("Des. Servidor RPW: " + item.getServerDesc()); System.out.println("Estado: " + item.getState()); if (item.getState().equals("ativo")) { System.out.println("Executando? " + item.getExecution()); } } |
Retorno: List<AvailabilityRPWItem>
A classe AvailabilityRPWItem é composta pelos atributos:
Atributo | Descrição | Formato |
serverCode | Código do servidor RPW | String |
serverDesc | Descrição do servidor RPW | String |
state | Estado do servidor (Ativo, Inativo ou Bloqueado) | String |
execution | Indica se está em execução | Boolean |
3.5 Disponibilidade JBoss
Método publicado no servidor: availabilityJboss
Parâmetros: AvailabilityParamsJboss
A classe AvailabilityParamsJboss é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
host | Nome do servidor JBoss | String |
port | Porta da instância | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsJboss paramsJboss = new AvailabilityParamsJboss(); paramsJboss.setProtocol("http"); paramsJboss.setHost("cordas"); paramsJboss.setPort("8180"); AvailabilityJbossItem jbossItem = cloudService.availabilityJboss(paramsJboss); System.out.println("<< JBoss >>"); System.out.println(jbossItem.getHost()); System.out.println(jbossItem.getPort()); System.out.println(jbossItem.getStatus()); |
Retorno: AvailabilityJbossItem
A classe AvailabilityJbossItem é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
host | Nome do servidor JBoss | String |
port | Porta da instância | String |
status | Status do JBoss | String |
3.6 Disponibilidade do EAI 1
Método publicado no servidor: availabilityEAI1
Parâmetros: AvailabilityParamsEAI1
A classe AvailabilityParamsEAI1 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 1 | String |
port | Porta | String |
axisContextName | Nome do contexto axis | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsEAI1 paramsEAI1 = new AvailabilityParamsEAI1(); paramsEAI1.setProtocol("http"); paramsEAI1.setServer("bomjesus"); paramsEAI1.setPort("8080"); paramsEAI1.setAxisContextName("axis506gens"); AvailabilityEAI1Item eai1Item = cloudService.availabilityEAI1(paramsEAI1); System.out.println("<<EAI 1>>"); System.out.println("Protocolo: " + eai1Item.getProtocol()); System.out.println("Server: " + eai1Item.getServer()); System.out.println("Port: " + eai1Item.getPort()); System.out.println("Nome contexto axis: " + eai1Item.getAxisContextName()); System.out.println("Status: " + eai1Item.getStatus()); |
Retorno: AvailabilityEAI1Item
A classe AvailabilityEAI1Item é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 1 | String |
port | Porta | String |
axisContextName | Nome do contexto axis | String |
status | Status do EAI 1 | String |
3.7 Disponibilidade do EAI 2
Método publicado no servidor: availabilityEAI2
Parâmetros: AvailabilityParamsEAI2
A classe AvailabilityParamsEAI2 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 2 | String |
port | Porta | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsEAI2 paramsEAI2 = new AvailabilityParamsEAI2(); paramsEAI2.setProtocol("http"); paramsEAI2.setServer("cordas"); paramsEAI2.setPort("8180"); AvailabilityEAI2Item eai2Item = cloudService.availabilityEAI2(paramsEAI2); System.out.println("<<EAI 2>>"); System.out.println("Protocolo: " + eai2Item.getProtocol()); System.out.println("Server: " + eai2Item.getServer()); System.out.println("Port: " + eai2Item.getPort()); System.out.println("Status: " + eai2Item.getStatus()); |
Retorno: AvailabilityEAI2Item
A classe AvailabilityEAI2Item é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 2 | String |
port | Porta | String |
status | Status do servidor EAI 2 | String |
3.8 Disponibilidade de login
Método publicado no servidor: availabilityLoginDatasul
Parâmetros: AvailabilityParamsLoginDatasul
A classe AvailabilityParamsLoginDatasul é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor JBoss | String |
port | Porta da instância | String |
userName | Usuário | String |
passWord | Senha | String |
remoteServerName | Nome do servidor remoto (WebEnabled) | String |
remoteServerPort | Porta do servidor remoto (WebEnabled) | int |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsLoginDatasul paramsLoginDatasul = new AvailabilityParamsLoginDatasul(); paramsLoginDatasul.setProtocol("http"); paramsLoginDatasul.setHost("cordas"); paramsLoginDatasul.setPort("8180"); paramsLoginDatasul.setUserName("super"); paramsLoginDatasul.setPassWord("super@123"); paramsLoginDatasul.setRemoteServerName("cordas.jv01.local"); paramsLoginDatasul.setRemoteServerPort(39080); AvailabilityLoginDatasulItem loginDatasulItem = cloudService.availabilityLoginDatasul(paramsLoginDatasul); System.out.println("<<Login Datasul>>"); System.out.println("Protocolo: " + paramsLoginDatasul.getProtocol()); System.out.println("Host: " + paramsLoginDatasul.getHost()); System.out.println("Porta: " + paramsLoginDatasul.getPort()); System.out.println("Usuario: " + paramsLoginDatasul.getUserName()); System.out.println("Senha: " + paramsLoginDatasul.getPassWord()); System.out.println("Servidor remoto (WebEnabled): " + paramsLoginDatasul.getRemoteServerName()); System.out.println("Port do servidor remoto (WebEnabled): " + paramsLoginDatasul.getRemoteServerPort()); System.out.println("Status: " + loginDatasulItem.getStatus()); |
Retorno: AvailabilityLoginDatasulItem
A classe AvailabilityLoginDatasulItem é composta pelos atributos:
Atributo | Descrição | Formato |
status | Status do login | String |
3.9 Disponibilidade Datasul
Método publicado no servidor: verifyDatasulAvailabilities
Parâmetros: List<AvailabilityParamsSQL>, AvailabilityParamsDatasulDatabases, AvailabilityParamsEAI1, AvailabilityParamsEAI2, AvailabilityParamsDatasul, AvailabilityParamsJboss, AvailabilityParamsLoginDatasul
A classe AvailabilityParamsSQL é composta pelos atributos:
Atributo | Descrição | Formato |
databaseType | Tipo de banco (SQLServer ou OpenEdge) | String |
dbName | Nome do banco | String |
urlConnection | Conexão URL | String |
userName | Nome do usuário | String |
passWord | Senha | String |
A classe AvailabilityParamsDatasulDatabases é composta pelos atributos:
Atributo | Descrição | Formato |
appServerName | Nome do servidor AppServer | String |
appServerPort | Porta do AppServer | String |
appServerApp | Instância do AppServer | String |
dbNames | Bancos para consulta | String[] |
A classe AvailabilityParamsEAI1 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 1 | String |
port | Porta | String |
axisContextName | Nome do contexto axis | String |
A classe AvailabilityParamsEAI2 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 2 | String |
port | Porta | String |
A classe AvailabilityParamsDatasul é composta pelos atributos:
Atributo | Descrição | Formato |
appServerName | Nome do servidor AppServer | String |
appServerPort | Porta do AppServer | String |
appServerApp | Instância do AppServer | String |
A classe AvailabilityParamsJboss é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
host | Nome do servidor JBoss | String |
port | Porta da instância | String |
A classe AvailabilityParamsLoginDatasul é compostapelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor JBoss | String |
port | Porta da instância | String |
userName | Usuário | String |
passWord | Senha | String |
remoteServerName | Nome do servidor remoto (WebEnabled) | String |
remoteServerPort | Porta do servidor remoto (WebEnabled) | Int |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityItem result = null; /* Montando parametros de disponibilidade SQL */ List<AvailabilityParamsSQL> availabilityParamsSQLs = new ArrayList<AvailabilityParamsSQL>(); AvailabilityParamsSQL paramsSQL = null; paramsSQL = new AvailabilityParamsSQL(); paramsSQL.setDatabaseType("SQLServer"); paramsSQL.setDbName("emsfnd"); paramsSQL.setUserName("datasul1154"); paramsSQL.setPassWord("datasul1154"); paramsSQL.setUrlConnection("jdbc:sqlserver://moitas:1433;databaseName=emsfnd1154"); availabilityParamsSQLs.add(paramsSQL); /* Montando parametros de disponibilidade de bancos do Datasul */ AvailabilityParamsDatasulDatabases paramsDatasulDatabases = new AvailabilityParamsDatasulDatabases(); paramsDatasulDatabases.setAppServerName("moitas"); paramsDatasulDatabases.setAppServerPort("5162"); paramsDatasulDatabases.setAppServerApp("cordas8480"); String[] dbNames = {"emsfnd"}; paramsDatasulDatabases.setDbNames(dbNames); /* Montando parametros de disponibilidade EAI 1 */ AvailabilityParamsEAI1 paramsEAI1 = new AvailabilityParamsEAI1(); paramsEAI1.setProtocol("http"); paramsEAI1.setServer("bomjesus"); paramsEAI1.setPort("8080"); paramsEAI1.setAxisContextName("axis506gens"); /* Montando parametros de disponibilidade EAI 2 */ AvailabilityParamsEAI2 paramsEAI2 = new AvailabilityParamsEAI2(); paramsEAI2.setProtocol("http"); paramsEAI2.setServer("cordas"); paramsEAI2.setPort("8480"); /* Montando parametros de disponibilidade AppServer Datasul */ AvailabilityParamsDatasul paramsDatasul = new AvailabilityParamsDatasul(); paramsDatasul.setAppServerName("moitas"); paramsDatasul.setAppServerPort("5162"); paramsDatasul.setAppServerApp("cordas8480"); /* Montando parametros de disponibilidade JBoss */ AvailabilityParamsJboss paramsJboss = new AvailabilityParamsJboss(); paramsJboss.setProtocol("http"); paramsJboss.setHost("cordas"); paramsJboss.setPort("8480"); /* Montando parametros de disponibilidade Login Datasul */ AvailabilityParamsLoginDatasul paramsLoginDatasul = new AvailabilityParamsLoginDatasul(); paramsLoginDatasul.setProtocol("http"); paramsLoginDatasul.setHost("cordas"); paramsLoginDatasul.setPort("8480"); paramsLoginDatasul.setUserName("super"); paramsLoginDatasul.setPassWord("super"); paramsLoginDatasul.setRemoteServerName("cordas.jv01.local"); paramsLoginDatasul.setRemoteServerPort(39080); result = cloudService.verifyDatasulAvailabilities(availabilityParamsSQLs, paramsDatasulDatabases, paramsEAI1, paramsEAI2, paramsDatasul, paramsJboss, paramsLoginDatasul); if (result != null) { System.out.println("Status: " + result.getStatus() + "\n Mensagem: " + result.getMessage()); } |
Retorno: AvailabilityItem
A classe AvailabilityItem é composta pelos atributos:
Atributo | Descrição | Formato |
status | Status da verificação | String |
message | Mensagem | String |
4. Utilização dos métodos para o produto EMS
Com base na implementação do item 2.2, para o EMS, entre os seus itens de disponibilidade, é possível verificar a disponibilidade de:
4.1 Disponibilidade dos bancos
Método publicado no servidor: availabilityEMSDatabases
Parâmetros: AvailabilityParamsEMSDatabases
A classe AvailabilityParamsEMSDatabases é composta pelos atributos:
Atributo | Descrição | Formato |
dlcPath | Diretório do prowin32.exe | String |
pfPath | Diretório do arquivo .pf | String |
iniPath | Diretório do arquivo .ini | String |
dbNames | Nomes dos bancos | String[] |
Bloco de código | ||||
---|---|---|---|---|
| ||||
List<AvailabilityDatabaseItem> avalItems = null; AvailabilityParamsEMSDatabases paramsEMSDatabases = new AvailabilityParamsEMSDatabases(); paramsEMSDatabases.setDlcPath("c:\\dlc102b\\bin\\prowin32.exe"); paramsEMSDatabases.setPfPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\connect.pf"); paramsEMSDatabases.setIniPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\progresc.ini"); String[] dbNames = {"mgadm","mguni","movfis"}; paramsEMSDatabases.setDbNames(dbNames); avalItems = cloudService.availabilityEMSDatabases(paramsEMSDatabases); if (avalItems != null) { for (AvailabilityDatabaseItem item : avalItems) { System.out.println("DatabaseName: " + item.getItemName()); System.out.println("Status: " + item.getStatus() + "\n"); } } |
Retorno: List<AvailabilityDatabaseItem>
A classe AvailabilityDatabaseItem é composta pelos atributos:
Atributo | Descrição | Formato |
itemName | Nome do Item | String |
status | Status do item | String |
4.2 Disponibilidade de servidores RPW
Método publicado no servidor: availabilityRPWEMS
Parâmetros: AvailabilityParamsRPWEMS
A classe AvailabilityParamsRPWEMS é composta pelos atributos:
Atributo | Descrição | Formato |
dlcPath | Diretório do prowin32.exe | String |
pfPath | Diretório do arquivo .pf | String |
iniPath | Diretório do arquivo .ini | String |
fndDbName | Nome do banco do Foundation | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsRPWEMS paramsRPWEMS = new AvailabilityParamsRPWEMS(); paramsRPWEMS.setDlcPath("c:\\dlc102b\\bin\\prowin32.exe"); paramsRPWEMS.setPfPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\connect.pf"); paramsRPWEMS.setIniPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\progresc.ini"); paramsRPWEMS.setFndDbName("mguni"); List<AvailabilityRPWItem> avalRPWList; avalRPWList = cloudService.availabilityRPWEMS(paramsRPWEMS); for (AvailabilityRPWItem item : avalRPWList) { System.out.println("Cod. Servidor RPW: " + item.getServerCode()); System.out.println("Des. Servidor RPW: " + item.getServerDesc()); System.out.println("Estado: " + item.getState()); if (item.getState().equals("ativo")) { String execution = item.getExecution() ? "Sim" : "Não"; System.out.println("Executando? " + execution); } } |
Retorno: List<AvailabilityRPWItem>
A classe AvailabilityRPWItem é composta pelos atributos:
Atributo | Descrição | Formato |
serverCode | Código do servidor RPW | String |
serverDesc | Descrição do servidor RPW | String |
state | Estado do servidor (Ativo, Inativo ou Bloqueado) | String |
execution | Indica se está em execução | Boolean |
4.3 Disponibilidade do EAI 1
Método publicado no servidor: availabilityEAI1
Parâmetros: AvailabilityParamsEAI1
A classe AvailabilityParamsEAI1 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 1 | String |
port | Porta | String |
axisContextName | Nome do contexto axis | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsEAI1 paramsEAI1 = new AvailabilityParamsEAI1(); paramsEAI1.setProtocol("http"); paramsEAI1.setServer("bomjesus"); paramsEAI1.setPort("8080"); paramsEAI1.setAxisContextName("axis506gens"); AvailabilityEAI1Item eai1Item = cloudService.availabilityEAI1(paramsEAI1); System.out.println("<<EAI 1>>"); System.out.println("Protocolo: " + eai1Item.getProtocol()); System.out.println("Server: " + eai1Item.getServer()); System.out.println("Port: " + eai1Item.getPort()); System.out.println("Nome contexto axis: " + eai1Item.getAxisContextName()); System.out.println("Status: " + eai1Item.getStatus()); |
Retorno: AvailabilityEAI1Item
A classe AvailabilityEAI1Item é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 1 | String |
port | Porta | String |
axisContextName | Nome do contexto axis | String |
status | Status do EAI 1 | String |
4.4 Disponibilidade do EAI 2
Método publicado no servidor: availabilityEAI2
Parâmetros: AvailabilityParamsEAI2
A classe AvailabilityParamsEAI2 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 2 | String |
port | Porta | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsEAI2 paramsEAI2 = new AvailabilityParamsEAI2(); paramsEAI2.setProtocol("http"); paramsEAI2.setServer("cordas"); paramsEAI2.setPort("8180"); AvailabilityEAI2Item eai2Item = cloudService.availabilityEAI2(paramsEAI2); System.out.println("<<EAI 2>>"); System.out.println("Protocolo: " + eai2Item.getProtocol()); System.out.println("Server: " + eai2Item.getServer()); System.out.println("Port: " + eai2Item.getPort()); System.out.println("Status: " + eai2Item.getStatus()); |
Retorno: AvailabilityEAI2Item
A classe AvailabilityEAI2Item é compostapelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 2 | String |
port | Porta | String |
status | Status do servidor EAI 2 | String |
4.5 Disponibilidade de login
Método publicado no servidor: availabilityLoginEMS
Parâmetros: AvailabilityParamsLoginEMS
A classe AvailabilityParamsLoginEMS é composta pelos atributos:
Atributo | Descrição | Formato |
dlcPath | Diretório do prowin32.exe | String |
pfPath | Diretório do arquivo .pf | String |
iniPath | Diretório do arquivo .ini | String |
fndDbName | Nome do banco do Foundation | String |
userName | Usuário | String |
passWord | Senha | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityParamsLoginEMS paramsLoginEMS = new AvailabilityParamsLoginEMS(); paramsLoginEMS.setDlcPath("c:\\dlc102b\\bin\\prowin32.exe"); paramsLoginEMS.setPfPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\connect.pf"); paramsLoginEMS.setIniPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\progresc.ini"); paramsLoginEMS.setFndDbName("mguni"); paramsLoginEMS.setUserName("super"); paramsLoginEMS.setPassWord("super"); AvailabilityLoginEMSItem loginEMSItem = cloudService.availabilityLoginEMS(paramsLoginEMS); if (loginEMSItem != null ) { System.out.println("<<Login EMS>>"); System.out.println("Banco FND: " + paramsLoginEMS.getFndDbName()); System.out.println("Usuario: " + paramsLoginEMS.getUserName()); System.out.println("Senha: " + paramsLoginEMS.getPassWord()); System.out.println("Status: " + loginEMSItem.getStatus()); } |
Retorno: AvailabilityLoginEMSItem
AvailabilityLoginEMSItem é composta pelos atributos:
Atributo | Descrição | Formato |
status | Status do login | String |
4.6 Disponibilidade EMS
Método publicado no servidor: verifyEMSAvailabilities
Parâmetros: AvailabilityParamsEMSDatabases, AvailabilityParamsEAI1, AvailabilityParamsEAI2, AvailabilityParamsRPWEMS, AvailabilityParamsLoginEMS
A classe AvailabilityParamsEMSDatabases é composta pelos atributos:
Atributo | Descrição | Formato |
dlcPath | Diretório do prowin32.exe | String |
pfPath | Diretório do arquivo .pf | String |
iniPath | Diretório do arquivo .ini | String |
dbNames | Nomes dos bancos | String[] |
A classe AvailabilityParamsEAI1 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 1 | String |
port | Porta | String |
axisContextName | Nome do contexto axis | String |
A classe AvailabilityParamsEAI2 é composta pelos atributos:
Atributo | Descrição | Formato |
protocol | Protocolo (http ou https) | String |
server | Nome do servidor EAI 2 | String |
port | Porta | String |
A classe AvailabilityParamsRPWEMS é composta pelos atributos:
Atributo | Descrição | Formato |
dlcPath | Diretório do prowin32.exe | String |
pfPath | Diretório do arquivo .pf | String |
iniPath | Diretório do arquivo .ini | String |
fndDbName | Nome do banco do Foundation | String |
A classe AvailabilityParamsLoginEMS é composta pelos atributos:
Atributo | Descrição | Formato |
dlcPath | Diretório do prowin32.exe | String |
pfPath | Diretório do arquivo .pf | String |
iniPath | Diretório do arquivo .ini | String |
fndDbName | Nome do banco do Foundation | String |
userName | Usuário | String |
passWord | Senha | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
AvailabilityItem result = null; /* Montando parametros de disponibilidade de bancos do EMS */ AvailabilityParamsEMSDatabases paramsEMSDatabases = new AvailabilityParamsEMSDatabases(); paramsEMSDatabases.setDlcPath("c:\\dlc102b\\bin\\prowin32.exe");paramsEMSDatabases.setPfPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\connect.pf"); paramsEMSDatabases.setIniPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\progresc.ini"); String[] dbNames = {"mgadm","mguni","movadm"}; paramsEMSDatabases.setDbNames(dbNames); /* Montando parametros de disponibilidade EAI 1 */ AvailabilityParamsEAI1 paramsEAI1 = new AvailabilityParamsEAI1(); paramsEAI1.setProtocol("http"); paramsEAI1.setServer("bomjesus"); paramsEAI1.setPort("8080"); paramsEAI1.setAxisContextName("axis506gens"); /* Montando parametros de disponibilidade EAI 2 */ AvailabilityParamsEAI2 paramsEAI2 = new AvailabilityParamsEAI2(); paramsEAI2.setProtocol("http"); paramsEAI2.setServer("cordas"); paramsEAI2.setPort("8180"); /* Montando parametros de disponibilidade RPW EMS */ AvailabilityParamsRPWEMS paramsRPWEMS = new AvailabilityParamsRPWEMS(); paramsRPWEMS.setDlcPath("c:\\dlc102b\\bin\\prowin32.exe"); paramsRPWEMS.setPfPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\connect.pf"); paramsRPWEMS.setIniPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\progresc.ini"); paramsRPWEMS.setFndDbName("mguni"); /* Montando parametros de disponibilidade Login EMS */ AvailabilityParamsLoginEMS paramsLoginEMS = new AvailabilityParamsLoginEMS(); paramsLoginEMS.setDlcPath("c:\\dlc102b\\bin\\prowin32.exe"); paramsLoginEMS.setPfPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\connect.pf"); paramsLoginEMS.setIniPath("c:\\ambientes\\2.06B\\EMS206BMULTI-PSC101B-SUP\\progresc.ini"); paramsLoginEMS.setFndDbName("mguni"); paramsLoginEMS.setUserName("super"); paramsLoginEMS.setPassWord("super"); result = cloudService.verifyEMSAvailabilities(paramsEMSDatabases, paramsEAI1, paramsEAI2, paramsRPWEMS, paramsLoginEMS); if (result != null) { System.out.println("Status: " + result.getStatus() + "\n Mensagem: " + result.getMessage()); } |
Retorno: AvailabilityItem
A classe AvailabilityItem é composta pelos atributos:
Atributo | Descrição | Formato |
status | Status da verificação | String |
message | Mensagem | String |
5. Utilização do método de verificação do tamanho de diretórios
Para verificar o tamanho de um diretório ou arquivo utilizado pelo cliente nos servidores do Cloud, foi desenvolvido um método para atender a esta necessidade no Datasul Cloud Monitor (a implementação deste método requer a implementação do item 2.2).
Método publicado no servidor: getStorageDirItems
Parâmetros: List<StorageParamsDirItem>
A classe StorageParamsDirItem é composta pelos atributos:
Atributo | Descrição | Formato |
dirName | Nome do diretório | String |
pathDir | Caminho do diretório ou arquivo | String |
Bloco de código | ||||
---|---|---|---|---|
| ||||
List<StorageParamsDirItem> storageList = new ArrayList<StorageParamsDirItem>(); StorageParamsDirItem storageParamItem = new StorageParamsDirItem(); storageParamItem.setDirName("Log AppServer"); storageParamItem.setPathDir("C:\\appserver\\cassino8180\\log"); storageList.add(storageParamItem); storageParamItem = new StorageParamsDirItem(); storageParamItem.setDirName("JBoss log"); storageParamItem.setPathDir("c:\\java\\jboss-4.2.3.GA\\server\\cassino-8180\\log"); storageList.add(storageParamItem); List<StorageDirItem> result = cloudService.getStorageDirItems(storageList); System.out.println("<<Diretorios>>"); for (StorageDirItem item : result) { System.out.println("---"); System.out.println("Nome: " + item.getDirName()); System.out.println("Diretorio: " + item.getPathDir()); System.out.println("Tamanho: " + item.getSizeDir()); } |
Retorno: List<StorageDirItem>
A classe StorageDirItem é composta pelos atributos:
Atributo | Descrição | Formato |
dirName | Nome do diretório | String |
pathDir | Caminho do diretório ou arquivo | String |
sizeDir | Tamanho do diretório ou arquivo | String |
6. Mapeamento da dependência no projeto Java Client
Para utilizar o arquivo datasul-cloud-monitor-server-client-1.0-SNAPSHOT.jar (onde contém todas as classes e interfaces para implementação e utilização do serviço) no projeto Java client pode-se utilizar a dependência maven abaixo no arquivo pom.xml:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency> <groupId>com.totvs.framework</groupId> <artifactId>datasul-cloud-monitor-server-client</artifactId> <version>1.0-SNAPSHOT</version> </dependency> |
Download do arquivo pom.xml para utilizar como referência no projeto Java Client:
http://tdn.totvs.com.br/download/attachments/140968166/pom.xml
7. Datasul Cloud Monitor Release 1.0-SNAPSHOT
O arquivo datasul-cloud-monitor.zip, anexo a este documento, contém o arquivo datasul-cloud-monitor-server-1.0-SNAPSHOT.jar e as bibliotecas necessárias para monitorar os produtos Datasul e EMS.
É necessário seguir os passos citados nos itens 2.1 e 2.2 deste documento para fins de utilização.
Download do arquivo datasul-cloud-monitor.zip:
http://tdn.totvs.com.br/download/attachments/140968166/datasul-cloud-monitor.zip