Assessment em Ambientes Siebel – Parte 2

Assessment Siebel Parte II

A primeira parte desse artigo com a introdução, descrição dos acessos e as primeiras coletas pode ser acessado aqui (Assessment em Ambientes Siebel – Parte I).

Coletas adicionais para Assessment em Ambientes SIebel

Aqui continuamos a elencar algumas coletas fundamentais para um eficiente Assessment em Ambientes Siebel que facilitarão o trabalho de qualquer troubleshooter ou arquiteto.

 

Habilitar o Siebel ARM granularidade 1 (g1) nos Siebel Servers

O Siebel ARM captura tempos de resposta em pontos chave de monitoramento dentro da infraestrutura do Siebel Server. Poderíamos habilitar a coleta em todo servidor, mas num primeiro momento, é interessante coletarmos apenas dados dos principais componentes utilizados no Siebel no ambiente produtivo do cliente. Aqui, sigo utilizando como exemplo o WfProcMgr, EAIObjMgr_ptb, EIM e eCommunicationsObjMgr_ptb (AOM).

Atenção: É importante destacar que o SARM g1 pode impactar a performance geral dos componentes entre 0 (ambientes Vanilla) e o máximo de 5% (ambientes altamente customizados) negativamente, segundo o Suporte Global da Oracle. Contudo, segundo minhas experiências prévias, qualquer impacto existente é imperceptível.

SBLSERVER_ROOT\bin\srvrmgr.exe /g GTW /e ENT / SBL_SERVER /u USER /p PASS
change param SARMLevel=1 for comp WfProcMgr
change param SARMPeriod=5 for comp WfProcMgr
change param SARMMaxFiles=20 for comp WfProcMgr
change param SARMFileSize= 10485760 for comp WfProcMgr
change param SARMLevel=1 for comp EAIObjMgr_ptb
change param SARMPeriod=5 for comp EAIObjMgr_ptb
change param SARMMaxFiles=20 for comp EAIObjMgr_ptb
change param SARMFileSize= 10485760 for comp EAIObjMgr_ptb
change param SARMLevel=1 for comp eCommunicationsObjMgr_ptb
change param SARMPeriod=5 for comp eCommunicationsObjMgr_ptb
change param SARMMaxFiles=20 for comp eCommunicationsObjMgr_ptb
change param SARMFileSize= 10485760 for comp eCommunicationsObjMgr_ptb
exit

Onde:

SBLSERVER_ROOT é o diretório de instalação de algum dos Siebel Servers;

GTW é o alias/Name Server do Siebel Gateway;

ENT é o nome lógico do Siebel Enterprise;

USER é o usuário com privilégio de acesso às telas administrativas do Siebel;

PASS é a senha do usuário privilegiado;

SBL_SERVER é o nome lógico de cada Siebel Server do ambiente;

Atenção: Com as configurações acima é possível saber a quantidade de espaço em disco necessário no server para guardar os arquivos bastando seguir a seguinte lógica:

Espaço Máximo por Comp. = MaxMThreads X SARMMaxFiles X (SARMFileSize/1048576)

Supondo que no num Siebel Server os 3 componentes estejam habilitados e 2 deles têm MaxMThreads=20 um deles têm MaxMThreads=10, temos:

Espaço Máximo necessário no SERVER = ((20 X 20 X 10) *2) + (20 X 10 X 10)

Espaço Máximo necessário no SERVER = 10000 Megabytes aproximadamente (10Gb)

Quando a limite máximo de arquivos definidos em SARMMaxFiles é atingido, os arquivos SARM gerados mais antigo é sobre-escrito pelo mais novo. Portanto, não há possibilidade do espaço consumido pelos arquivos do SARM g1 ultrapassarem as estimativas feitas pra cada um dos Siebel Servers.

Não há como antecipar a frequência um novo arquivo será gerado (depende da carga do MThread), logo o ideal é fazer uma cópia dos arquivos já gerados para outro local de forma a mantermos o histórico por pelo menos uns 15 dias consecutivos sem o risco de perdermos os SARMs files mais antigos. Para esse objetivo, podemos utilizar o seguinte script de cópia de arquivos:

FOR /L %%A IN (1,1,336) DO (
copy "SBLSERVER_ROOT/log/*.sarm" "CUSTOM_PATH/SBL_SERVER /" /Y
TIMEOUT 1800
)

Onde:

SBLSERVER_ROOT é o diretório de instalação de cada um dos Siebel Servers que tem o componente operacional;

CUSTOM_PATH é o path com permissão de escrita para reter temporariamente os outputs das coletas;

SBL_SERVER é o nome lógico de cada Siebel Server do ambiente;

Essa cópia está programada para executar à cada 30 minutos durante 7 dias seguidos. O filesystem destino no CUSTOM_PATH deverá ter espaço suficiente para reter todos os arquivos .sarm gerados pelos 3 componentes à partir de todos os Siebel Servers onde eles estão em execução.

É claro que há todo o trabalho de processamento desses SARMs files para transformá-los em informação útil ao Assessment em Ambientes Siebel. Esse processamento merece um artigo exclusivo (loading…).

 

Habilitar o Siebel ARM g1 nos Siebel Web Servers

Como já falado anteriormente, Siebel ARM captura tempos de resposta em pontos chave de monitoramento dentro da infraestrutura do Siebel Server.

No caso dos Siebel Web Servers, a configuração é feita através da configuração de variáveis de ambiente conforme abaixo:

SIEBEL_SARMLevel = 1
SIEBEL_SARMBufferSize = 5000000
SIEBEL_SARMMaxFiles = 10
SIEBEL_SARMFileSize = 5242880
SIEBEL_SARMThreshold = 0

A mesma lógica de escrita e sobre-escrita de arquivos é aplicável, dessa forma, também é altamente recomendável copiar os arquivos já gerados para outro local de forma a mantermos o histórico por pelo menos 7 dias consecutivos sem o risco de perdermos os SARMs files mais antigos. Para esse objetivo, podemos utilizar o seguinte script de cópia de arquivos:

FOR /L %%A IN (1,1,336) DO (
copy " SWSE_ROOT/log/*.sarm" "CUSTOM_PATH/NS_SWS/" /Y
TIMEOUT 1800
)

onde:

SWSE_ROOT são os diretórios de instalação de todos os Siebel Web Servers;

CUSTOM_PATH é o path com permissão de escrita para reter temporariamente os outputs das coletas;

NS_SWS é o Name Server do Siebel Web Server

 

Perfil de Consumo de Memória e CPU dos Siebel Servers

Para fins de cruzamento de informações e identificação de picos de processamento, memory leaks, crashs ou anomalias impactando os Siebel Servers, é necessário coletar informações de consumo de CPU e Memória durante X dias a cada Y minutos (depende da operação e perfil de uso da aplicação) . A ferramenta que será utilizada para a coleta não faz diferença deste que possamos analisar nos outputs as seguintes variáveis:

Geral (Por server):

  • Available bytes

Memória (Por processo e Geral):

  • Private Bytes
  • Handle Count
  • Pool Nonpaged Bytes
  • Pool Paged Bytes
  • Virtual Bytes

CPU

  • % Processor Time
  • “% Privileged Time

Exemplo usando WMI (do windows):

wmic OS get /format:csv >> %OUT_PATH%\%TIMESTAMP%_%SERVER%_OS_GET.log

wmic cpu get /format:csv >> %OUT_PATH%\%TIMESTAMP%_%SERVER%_CPU_GET.log

wmic path win32_perfformatteddata_perfproc_process where (Name like ‘%%sieb%%’) get /format:csv >> %OUT_PATH%\%TIMESTAMP%_%SERVER%_SIEB_GET_PID.log

Continua após a publicidade 

 

Spool Cíclicos

Alguns outputs precisam ser gerados ciclicamente durante X dias com frequência de Y minutos (depende da operação e perfil de uso da aplicação) através da execução dos seguintes comandos:

FOR /L %%A IN (1,1,336) DO (
SBLSERVER_ROOT\BIN\ srvrmgr.exe /g GTW /e ENT /u USER /p PASS /i CUSTOM_PATH\srvrmgr_commands.txt /o CUSTOM_PATH \output\list_%%A.log
TIMEOUT 1800
)

O arquivo “srvrmgr_commands.txt” deve ser criado em CUSTOM_PATH\ com o seguinte conteúdo:

list comp
list tasks
list stats for comp eCommunicationsObjMgr_ptb server SBL_SERVER show STAT_NAME, CURR_VAL
list stats for comp EAIObjMgr_ptb server SBL_SERVER show STAT_NAME, CURR_VAL
list stats for comp WfProcMgr server SBL_SERVER show STAT_NAME, CURR_VAL

… o bloco em azul se repete para cada Servidor Siebel com o respectivo componente habilitado

Onde:

SBLSERVER_ROOT é o diretório de instalação de um dos Siebel Servers;

CUSTOM_PATH é o path com permissão de escrita para reter temporariamente os outputs das coletas;

SBL_SERVER é o nome lógico de cada Siebel Server do ambiente;

SBLSERVER_ROOT é o diretório de instalação de algum dos Siebel Servers;

GTW é o alias/Name Server do Siebel Gateway;

ENT é o nome lógico do Siebel Enterprise;

USER é o usuário com privilégio de acesso às telas administrativas do Siebel;

PASS é a senha do usuário privilegiado;

 

Contagem de Produtos Complexos

Essas contagens são importantes para guiar a estratégia de configuração de cache de produtos, parte fundamental do Assessment em Ambientes Siebel.

--CPS USADOS POR HORA NOS ÚLTIMOS 30 DIAS / EXPORTAR O RESULTADOS
SELECT  P.NAME,
TO_CHAR (O.CREATED, 'dd/mm/yyyy hh24') || '00:00',
COUNT ( * )
FROM  SIEBEL.S_PROD_INT P, SIEBEL.S_ORDER_ITEM O
WHERE      P.ROW_ID = O.PROD_ID
AND O.ROOT_ORDER_ITEM_ID = O.ROW_ID
AND P.PROD_TYPE_CD = :VALOR
AND O.CREATED >= TRUNC (SYSDATE - 30)
GROUP BY  P.NAME, TO_CHAR (O.CREATED, 'dd/mm/yyyy hh24') || '00:00';
--QUANTIDADE TOTAL CPS ÚLTIMOS 30 DIAS / EXPORTAR OS RESULTADOS
SELECT  P.NAME, COUNT ( * )
FROM  SIEBEL.S_PROD_INT P, SIEBEL.S_ORDER_ITEM O
WHERE      P.ROW_ID = O.PROD_ID
AND O.ROOT_ORDER_ITEM_ID = O.ROW_ID
AND P.PROD_TYPE_CD = :VALOR
AND O.CREATED >= TRUNC (SYSDATE - 30)
GROUP BY  P.NAME;

Onde:

:VALOR pode ser ‘Customizable’, ‘Personalizável’, etc., dependendo do idioma utilizado pelo configurador de produtos.

A contagem abaixo requer o auxílio de um Desenvolvedor Siebel que vai precisar fazer medições de consumo de memória do Siebel Web Client Dedicado (siebel.exe) para cada um dos Produtos Complexos retornados na query acima.

Após iniciar o Siebel Web Client Dedicado (SWCD) é preciso fazer uma medição da quantidade de memória consumida em 3 momentos:

  1. Imediatamente antes de clicar no botão “Customize” (ou “Personalizar” ou “Configurar” dependendo da tradução) – Momento X;
  2. Imediatamente após o produto complexo ser carregado na tela – Momento Y.
  3. Imediatamente após fazer uma configuração normal no produto complexo – Momento Z.

Atenção: Como trata-se de medições aproximadas, é altamente recomendável que cada produto complexo seja testado 3x para eliminar distorções.

Após cada ciclo de teste de 1 produto complexo, o SWCD deve ser desligado e religado novamente para o refazer o teste com o mesmo produto ou com o próximo produto complexo do ambiente.

A tabela abaixo pode ser utilizada para as medições:

Assessment em Ambientes Siebel

 

Perfil de Workflow

Essas contagens são importantes para guiar a estratégia de configuração dos Workmons e das principais engines relacionadas.

--DADOS DE GRUPOS DE PROCESSAMENTO
SELECT  GP.NAME GRUPO,
RL.NAME NORMA,
DECODE (RL.BATCH_FLG, 'Y', 'BATCH', 'ON-LINE'),
AD.NAME AÇÃO,
AD.PROGRAM_NAME PROGRAMA,
PA.DEFAULT_VALUE,
AA.DEFAULT_VALUE WF
FROM  SIEBEL.S_ESCL_GROUP GP,
SIEBEL.S_ESCL_RULE RL,
SIEBEL.S_ESCL_ACTION RA,
SIEBEL.S_ACTION_DEFN AD,
SIEBEL.S_ACTION_ARG AA,
SIEBEL.S_PROG_DEFN PG,
SIEBEL.S_REPOSITORY RP,
SIEBEL.S_PROG_ARG PA,
SIEBEL.S_WF_STEP_ARG ARG,
SIEBEL.S_WF_STEP STEP,
SIEBEL.S_WF_STEP PROC
WHERE      GP.ROW_ID = RL.GROUP_ID(+)
AND RL.ROW_ID = RA.RULE_ID(+)
AND RA.ACTION_ID = AD.ROW_ID(+)
AND AD.ROW_ID = AA.ACTION_ID(+)
AND AD.PROGRAM_NAME = PG.NAME(+)
AND PG.REPOSITORY_ID = RP.ROW_ID(+)
AND RP.NAME = 'Siebel Repository'
AND PG.ROW_ID = PA.PROGRAM_ID(+)
AND PG.TYPE_CD = 'Generic Request Server'
AND PA.NAME = 'Action Type'
AND (RL.ACTIVATE_DT < SYSDATE OR RL.ACTIVATE_DT IS NULL)
AND (RL.EXPIRE_DT > SYSDATE OR RL.EXPIRE_DT IS NULL)
AND AA.DEFAULT_VALUE = PROC.NAME(+)
AND PROC.ROW_ID = STEP.PROCESS_ID(+)
AND STEP.ROW_ID = ARG.STEP_ID(+);
 
--VOLUME DE PROCESSAMENTO
SELECT /*+ LEADING (ESCLGRP) PARALLEL(16) FULL(ESCLGRP) FULL(ESCLRULE) FULL(ESCLLOG)*/
ESCLGRP.NAME,
TO_CHAR (ESCLLOG.CREATED, 'dd/mm/yyyy hh24') || ':00:00',
COUNT (1) QTD
FROM  SIEBEL.S_ESCL_GROUP ESCLGRP,
SIEBEL.S_ESCL_RULE ESCLRULE,
SIEBEL.S_ESCL_LOG ESCLLOG
WHERE  ESCLLOG.RULE_ID = ESCLRULE.ROW_ID(+)
AND ESCLRULE.GROUP_ID = ESCLGRP.ROW_ID(+)
AND ESCLLOG.VIOLATED_DT BETWEEN TRUNC (SYSDATE) - 30
AND TRUNC (SYSDATE)
GROUP BY  ESCLGRP.NAME,
TO_CHAR (ESCLLOG.CREATED, 'dd/mm/yyyy hh24') || ':00:00'
ORDER BY  2 DESC;

 

Parâmetros do SOA e Pool de Conexões

Necessário para verificarmos se os parâmetros de controle de sessões do SOA estão de acordo com os parâmetros e configurações do Siebel EAI.

Essa coleta de informações precisa ser coordenada pelo profissional especialista na ferramenta Middleware e envolve basicamente em informar:

Parâmetros de Java Pool > Time to Live, Max Sockets, Timeout, Idletime, etc.

Verificar se todas as interfaces consumidas no middleware com destino ao Siebel passam pelo Java Pool.

Enviar relatório ou resumo de número de incidentes (http 500 ou similar) por dia, hora, etc.

 

Incidentes

Referente a identificação, classificação e designação dos indicadores de incidentes da aplicação para determinar pontos de atenção, gargalos ou erros sistêmicos.

               

Principais arquivos de incidentes

Disponibilizar os seguintes arquivos de incidentes localizados em todos os servidores de aplicação, conforme paths correlacionados:

GTWYSRVR_ROOT/log/*.log
SWSE_ROOT/log/*.log
SBLSRVR_ROOT/log/*.log
SBLSRVR_ROOT/bin/crash*.txt
SBLSRVR_ROOT/bin/*.fdr
SBLSRVR_ROOT/bin/sqlnet.log

Onde:

GTWYSRVR_ROOT é o diretório de instalação do Siebel Gateway;

SWSE_ROOT são os diretórios de instalação de todos os Siebel Web Servers;

SBLSRVR _ROOT é o root do Siebel Filesystem local e compartilhado de todos os filesystems utilizados pela aplicação;

 

Histórico de incidentes

É de extrema importância que haja ao menos uma reunião com a área técnica ligada à área usuária.

Nessa oportunidade deverão ser levantados quais as principais queixas sobre a operação, as mais frequentes e quais têm maiores impactos. Essas informações podem guiar coletas mais detalhadas para cenários mais específicos.

Análise preliminar de e-Scripts

Para essa coleta, eu recomendo usar o Siebel OVA que você pode baixar no GitHub:

https://github.com/tetralix/siebel_ova

Contudo, há uma pequena modificação que faço no getlst.sql para gerar um output também com os scripts de produtos complexos (já sugeri a modificação do getlst.sql lá no github):

Basta adicionar (antes do “exit”):

spool '&_prod'
SELECT 'Siebel Repository' as repository_name, 'Product Script' as obj_type , s.VOD_NAME as service_name, sst.SCRIPT_NAME as script_name, sst.last_upd, sst.script_TEXT
FROM siebel.S_ISS_OBJ_SCRPT SST, siebel.s_vod S
WHERE SST.item_id = S.OBJECT_NUM
and s.VOD_TYPE_CD = 'ISS_PROD_DEF'
and  sst.last_upd > to_date('01.01.2009','DD.MM.RRRR');
spool off
 

Prazo e Esforço (estimativa genérica e com base nos dados hipotéticos mencionados nesse artigo)

Se os acessos necessários para efetuar todas as coletas fossem concedidos a Troubleshooter IT essa seria a estimativa, em horas, para adaptarmos e implantarmos a coleta e analisar os outputs gerando os reports de performance, best practices, configurador de produtos, EAI/Workflows reviews, script reviews, recomendações de arquitetura, etc., em um ambiente médio (5 Siebel Servers, 2 web Servers, 1 FS, até 2000 usuários, até 5 produtos complexos, baixo/médio índice de customização) considerando as engines que eu utilizei como parâmetros durante todo o artigo.

Obviamente a quantidade de horas varia (para cima ou para baixo) dependendo do caso específico e do ambiente específico. Se um cliente contrata um reviews de performance geral, mas ele não usa a engine de Order Manager, não faz sentido boa parte das coletas. O mesmo vale para as outras engines.

Assessment Siebel

Atenção: Alguns insumos solicitados nesse rascunho de Assessment em Ambientes Siebel precisam de apoio do Cliente, Desenvolvedor e consultores responsáveis pelo middleware. Dessa forma, pode haver variação nos tempos em decorrência da não pré-alocação e engajamento desses profissionais no assessment.

E… foi!

Bem, ao menos uns 60% do trabalho necessário para viabilizar as coletas de informações e insumos para o trabalho do arquiteto (da Troubleshooter IT) estão aí em cima.

Agora cabe sua diretoria de TI, seu Gestor ou o comitê de arquitetura da sua empresa procurar a gente. Desse contato, saí uma uma proposta de Review adequado a necessidade específica da sua empresa.

Abraço.

Do you need help with Assessment and Troubleshootings in your Oracle Siebel CRM environment or in the Database? Contact us.

Compartilhe esse conteúdo com seus contatos