Nova postagem

Pesquisar

Artigo
· 51min atrás 6min de leitura

APM - Usando o Monitor de Histórico do IRIS ou Caché

O APM normalmente se concentra na atividade da aplicação, mas coletar informações sobre o uso do sistema fornece dados de contexto importantes que ajudam a entender e gerenciar o desempenho da sua aplicação, portanto estou incluindo o Monitor de Histórico do IRIS nesta série.

Neste artigo, descreverei brevemente como iniciar o Monitor de Histórico do IRIS ou Caché para criar um registro da atividade em nível de sistema, complementando as informações de atividade e desempenho da aplicação que você coleta. Também apresentarei exemplos de SQL para acessar as informações.

O que é o Monitor de Histórico do IRIS ou Caché?

O Monitor de Histórico está disponível no IRIS ou nas plataformas anteriores Caché e Ensemble. Ele é uma extensão do Monitor do Sistema do IRIS ou Caché. Mantém um registro persistente das métricas relacionadas à atividade do banco de dados (por exemplo, leituras e atualizações de globais) e ao uso do sistema (por exemplo, uso de CPU).

Existem várias ferramentas para coletar essas estatísticas, algumas das quais entram em enorme nível de detalhe, mas podem ser difíceis de entender. O Monitor de Histórico foi projetado para ser simples de usar, para executar continuamente em sistemas em produção e exigir menos esforço e conhecimento especializado para compreender a saída.

Ele armazena informações em um pequeno número de tabelas horárias e diárias que podem ser facilmente consultadas com SQL. Portanto, se você iniciá-lo hoje, o registro histórico estará disponível quando você precisar. E, claro, você ainda pode complementar o registro histórico com uma coleta de dados mais detalhada quando tiver um problema para investigar.

Quais são os custos e benefícios?

O Monitor de Histórico é muito leve e não adicionará uma carga significativa ao sistema em execução. O espaço em disco utilizado também é muito pequeno, com o armazenamento somando cerca de 130 MB por ano, mesmo que você opte por estender o tempo de retenção das estatísticas horárias, conforme recomendado neste artigo.

É fácil de configurar e a saída não requer análise adicional para ser utilizada.

No dia em que você ativar o Monitor de Histórico, verá pouca ou nenhuma vantagem em relação a outras ferramentas que podem fornecer detalhes mais imediatos. O benefício aparece semanas ou meses depois, quando você estiver trabalhando em um plano de capacidade ou investigando um problema de desempenho.

Ele fornece um registro histórico de muitas métricas importantes, incluindo:

  • Uso de CPU
  • Tamanho dos arquivos de banco de dados e dos journals
  • Referências e atualizações de globais
  • Leituras e gravações físicas
  • Uso de licenças

Também registra um grande número de métricas técnicas mais detalhadas que podem ser úteis ao investigar mudanças no desempenho de uma aplicação.

Como acesso os dados armazenados pelo Monitor de Histórico?

Tabelas

As informações são armazenadas no namespace %SYS. Elas podem ser facilmente acessadas usando SQL e, portanto, podem ser analisadas com qualquer ferramenta popular de relatórios. Existem quatro tabelas principais diárias: SYS_History.Daily_DB, SYS_History.Daily_Sys, SYS_History.Daily_Perf e SYS_History.Daily_WD, que armazenam os resumos diários. Existem tabelas equivalentes que armazenam os resumos horários.

Campos diários e horários

As tabelas diárias e horárias possuem, respectivamente, um campo diário ou horário no formato ‘64491||14400’, em que as duas partes correspondem aos valores de data e hora em $h no momento em que o processo em segundo plano foi executado para gerar os dados. A parte referente ao horário não tem muito significado nas tabelas diárias.

Campo Element_key

Algumas tabelas incluem os valores médios e máximos observados em cada período de tempo, além do desvio padrão. O tipo de registro é indicado pelo valor do campo element_key.

Portanto, uma consulta típica para visualizar o crescimento no uso médio diário de CPU seria:

SELECT Substr(DS.Daily,1,5) as DateH, (100-DS.Sys_CPUIdle) as AvgCPUBusy

FROM SYS_History.Daily_SYS    DS

WHERE element_key='Avg'

ORDER BY DateH

Como configuro e inicio o Monitor de Histórico?

Abra uma sessão de terminal do Caché e altere para o namespace %SYS. Em seguida, execute o comando

Do ^%SYSMONMGR

Serão apresentados vários menus de caracteres. Digite os números para fazer as seguintes seleções:

  1. Manage Application Monitor

2) Manage Monitor Classes

Em seguida, selecione a opção de ativar duas vezes e informe os nomes das classes

                 1)Activate/Deactivate Monitor Class

                            %Monitor.System.HistoryPerf

    Yes

1) Activate/Deactivate Monitor Class

     %Monitor.System.HistorySys

     Yes

Existem várias outras classes, mas não se sinta tentado a ativá-las sem testar primeiro. Algumas utilizam o PERFMON e não são adequadas para execução em um sistema em produção.

Em seguida, utilize a opção de sair até retornar ao primeiro menu. Para ativar as alterações, pare e depois inicie o monitor do sistema a partir do primeiro menu.

1) Start/Stop System Monitor

1) Start/Stop System Monitor

O Monitor de Histórico será executado continuamente, mesmo que o sistema seja reiniciado.

Você pode querer manter as estatísticas horárias por mais tempo do que o padrão de 60 dias. Para isso, utilize o método SetPurge(). Por exemplo, para manter as estatísticas horárias por um ano:

%SYS>do ##class(SYS.History.Hourly).SetPurge(365)

Exemplo de SQL mais complexo

Para um exemplo mais complicado, se você também quiser a média diária de CPU e o uso médio de CPU entre 9h e 12h, além de informações sobre referências e atualizações de globais:

SELECT Substr(DS.Daily,1,5) Day,

           (100-DS.Sys_CPUIdle) as Daily_Avg_CPU,

            Round(AVG(100-H1.Sys_CPUIdle),2) Morning_Avg_CPU ,

            DP.Perf_GloRef, DP.Perf_GloUpdate

FROM SYS_History.Daily_Perf DP,

           SYS_History.Daily_SYS DS,

           SYS_History.Hourly_Sys H1

WHERE DP.Daily=DS.Daily and DP.element_key='Avg' and DS.element_key='Avg'

and H1.element_key='Avg'and substr(DS.Daily,1,5)=Substr(H1.Hourly,1,5)

and Substr(H1.Hourly,8,12) in (32400,36000,39600)

GROUP BY DS.daily

 

O que no meu sistema de teste resulta em …

Day

Daily_Avg_CPU

Morning_Avg_CPU

Perf_GloRef

Perf_GloUpdate

64514

13.64

2.25

99.03

7.73

64515

19.94

14.67

91.95

6.32

64516

8.79

12.14

102.21

6.91

64517

14.09

3.36

39729.06

5393.97

64518

20.26

25.11

15036.53

60.63

64519

9.27

15.5

3898.47

153.68

64520

5.54

1.78

87.94

5.65

64521

6.08

1.89

117.49

6.73

64524

17.8

16.81

70.8

5.14

 

 

 

 

 

Documentação

O Monitor de Histórico é descrito completamente na documentação.

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· 6 hr atrás

Data Repoint NULLS Data In New Class Table When Old Class Property Is Changed & Saved

We are attempting to "Repoint" old class data to new class data to save disk space and data redundancy across multiple tables. This works to a point.  In essence the two classes are sharing the same data / Index / stream globals.  But if an ID in the Old_Class is opened, a property is modified, and saved the property that is in the New_Class (but not in the Old_Class) is NULLed / blanked.

Simplified explanation of data and what’s occurring.

Old Class Values   New Class Values
First_Name John   First_Name John
Middle_Initial Q   Middle_Initial Q
Last_Name Public   Last_Name Public
Date_Of_Birth 1/1/1965   Date_Of_Birth 1/1/1965
SSN 123-45-6789   SSN 123-45-6789
      Marital_Status Married

When the Old_Class is opened and any field in the Old_Class is modified and a %Save is run the Marital_Status becomes NULL / Blank.

Why does a %Save on the Old_Class result in a NULL / Blank value in the data storage global and in the New_Class table?  We have already checked Journaling and it sets a null into the $List position for "Marital_Status".

Is there a means to open the record via the Old_Class alter a property value, and perform a %Save without “losing” the value in the Marital_Status field in the New_Class?

8 novos comentários
Discussão (8)2
Entre ou crie uma conta para continuar
Artigo
· 7 hr atrás 12min de leitura

Agentes de IA do Zero - Parte 2: Dando um Corpo ao Cérebro

cover

Na Parte 1, estabelecemos a base técnica do MAIS (Multi-Agent Interoperability Systems). Conectamos com sucesso o "Cérebro", construímos um Adapter robusto usando LiteLLM, protegemos nossas chaves de API com o IRIS Credentials e, finalmente, deciframos o código do quebra-cabeça da interoperabilidade com Python.

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· 9 hr atrás 4min de leitura

Las Vegas to Los Angeles Bus Travel Guide & Best Deals

Traveling from Las Vegas to Los Angeles is one of the most popular road journeys in the United States. Every day, thousands of tourists, students, workers, and weekend travelers move between these two iconic cities. One city offers nonstop entertainment and nightlife, while the other delivers beaches, culture, and endless opportunities.

Discussão (0)1
Entre ou crie uma conta para continuar
Anúncio
· 10 hr atrás

Top InterSystems Developer Community Authors of 2025

Hey Developers,

It's time to announce the Top InterSystems Developer Community Authors of 2025 🎉

We are pleased to reward the most active contributors across all regional DC sites (EN, ES, PT, JP, CN, and FR):

  • Breakthrough of the Year
  • Top Best-Selling Authors
  • Top Experts
  • Top Opinion Leaders

Let's look at the DC Wall of Fame of 2025 and greet everyone with big applause! 👏

Badge's Name Winners DC Winners InterSystems
 
Nomination: Breakthrough of the Year
Breakthrough of 2025

  

@Vachan C Rannore
@Harshitha
@Andrew Sklyarov
@Arsh Hasan
@Stav Bendarsky

@Liam Evans
@Derek Gervais
@Beatrice Zorzoli
@Thibault Odor
@Marco Bahamondes

 
Nomination: InterSystems Best-selling Author
1st place: 
Gold Best-Selling Author

  

@Heloisa Paiva

@Luis Angel Pérez Ramos

2nd place: 
Silver Best-Selling Author

  

@Yuri Marx

@Hiroshi Sato

3rd place: 
Bronze Best-Selling Author

  

@姚 鑫

@Guillaume Rongier

Best-Selling Author

  

@sween
@Ashok Kumar T 
@Iryna Mykhailova 
@Muhammad Waseem 
@Robert Cemper 
@Julio Esquerdo 
@Dmitry Maslennikov 

@Megumi Kakechi
@Sylvain Guilbaud 
@Toshihiko Minamoto 
@Ricardo Paiva 
@Evgeny Shvarov 
@Jose-Tomas Salvador 
@Mihoko Iijima 

 
Nomination: InterSystems Expert
1st place: 
Gold Expert

  

@Enrico Parisi  

@Luis Angel Pérez Ramos

2nd place: 
SilverExpert

  

@Robert Cemper

@Alexander Koblov

3rd place: 
Bronze Expert

  

@Jeffrey Drumm

@Brett Saviano
@Eduard Lebedyuk

DC Expert

  

@Julius Kavay
@John Murray
@David Hockenbroch
@Ashok Kumar T 
@Robert Barbiaux 
@Stephen Canzano 
@Yaron Munz 

@Ben Spead 
@Timo Lindenschmid 
@Guillaume Rongier 
@Timothy Leavitt 
@Sylvain Guilbaud 
@Tani Frankel 

 
Nomination: InterSystems Opinion Leader
1st place: 
Gold Opinion Leader

  

@Robert Cemper

@Luis Angel Pérez Ramos

2nd place: 
Silver Opinion Leader

  

@Andre Larsen Barbosa

@Evgeny Shvarov

3rd place: 
Bronze Opinion Leader

  

@Dmitry Maslennikov

@Tani Frankel

DC Opinion Leader

  

@Yuri Marx
@Iryna Mykhailova 
@Ashok Kumar T 
@Enrico Parisi 
@Kurro Lopez 
@Muhammad Waseem 
@Henry Pereira 

@Guillaume Rongier
@Ben Spead 
@Eduard Lebedyuk 
@Alberto Fuentes 
@Sylvain Guilbaud 
@Danusa Calixto 
@Timothy Leavitt 

This list is a good reason to start following some of the great authors of the Developer Community ;)

BIG APPLAUSE TO OUR WINNERS!

Congratulations to all of you, and thank you for your great contributions to the InterSystems Developer Community in 2025! 

10 novos comentários
Discussão (10)7
Entre ou crie uma conta para continuar