O documento discute os benefícios da automação, incluindo aumento da produtividade ao liberar tempo para atividades criativas, manutenção do controle e padronização de processos, e flexibilidade para adaptar rotinas e tomadas de decisão. Ele fornece exemplos de scripts em Perl para automatizar tarefas comuns na ferramenta Zabbix, como encontrar hosts monitorados por um proxy específico e mover hosts entre proxies.
2. Igor Nicoli dos Santos
Especialista em automação, Tecnólogo em redes,
Zabbix Specialist/Professional, entusiasta
OpenSource e aficionado por tecnologia e
“scripiteiro” por vocação.
Quem sou eu
2
3. Para que criar um script,
robô ou automatizar alguma coisa?
3
Por que automatizar?
4. Criando scripts, robôs e até
mesmo micro sistemas, você ganha
tempo, aumenta a produtividade,
mantém o controle e ainda pode
flexibilizar suas rotinas e
tomadas de decisão.
4
Por que automatizar?
5. Facilite seu dia-a-dia:
Gaste tempo criando, planejando e inovando.
Para executar dezenas, centena ou milhares de vezes a mesma
ação, crie um
robô/script...
Por que automatizar?
TEMPO...
5
6. PRODUTIVIDADE/FLEXIBILIDADE...
6
Por que automatizar?
Crie seus scripts de forma
flexível, e tente alcançar o máximo
possível de possibilidades.
Scripts parametrizáveis ou quê
recebem parâmetros são mais
flexíveis.
Criando scripts/robôs você aumenta
a sua produtividade, já que você
fica livre para fazer outras
coisas.
7. Mantenha tudo organizado e sob controle:
Uma forma de se padronizar e manter o controle é garantindo
que uma determinada ação/tarefa seja executada sempre da
mesma maneira.
Para isso, crie um T-800 script…
7
Por que automatizar?
PADRONIZAÇÃO/CONTROLE...
8. MENTIRAS E VERDADES...
8
Curiosidades
Nem sempre é possível automatizar tudo.
A automatização vai tirar o nosso emprego.
Sem padronização, não tem automação.
Sempre vale a pena automatizar.
9. AUTOMATIZAR UMA TAREFA/PROCEDIMENTO?
9
Quando...
O que automatizar, não é uma decisão fácil!
● É possível executar o procedimento sem
intervenção humana?
● Será executado mais de uma vez? Quantas
vezes?
● Quanto tempo leva para executar manualmente?
● Esse procedimento já é executado manualmente?
Por quem?
10. AUTOMATIZAR UMA TAREFA/PROCEDIMENTO?
10
Quando...
1 dia 1 mês 1 ano
Quantidade de
execuções
3 vezes
3 vezes x 20 dias 3 vezes x 252 dias
60 vezes 756 vezes
Tempo de execução
(manual)
3 horas
3 hora x 20 dias 3 hora x 252 dias
2 dias e 12 horas 31 dias e 12 horas
Tempo de
desenvolvimento
30 horas
Tempo de execução
(script)
30 segundos
30s x 20 dias 10s x 252 dias
10 minutos 2 horas, 6 minutos
13. 13
Zabbix
EXEMPLOS
findHostWithThisProxy
Necessidade:
Criar uma lista com todos os hosts
monitorados por um proxy.
Aplicabilidade:
- Relatório operacional para controle
do ambiente;
- Migração dos hosts para outro proxy.
Perl
#!/usr/bin/perl
use JSON::RPC::Client;
require "/opt/zabbix/etc/zabbix_api.conf" ;
# Authenticate yourself
$OBJsonClient = new JSON::RPC::Client;
$OBJson = {
jsonrpc => "2.0",
method => "user.login" ,
params => {
user => $APIUser ,
password => $APIPass
},
id => 1
};
14. moveHost2Proxy
Necessidade:
Migrar uma lista de hosts para
outro proxy.
Aplicabilidade:
- Mover hosts de um proxy para outro
em momentos de manutenção ou de
falha.
14
Zabbix
EXEMPLOS
Perl
$OBJson = {
jsonrpc => "2.0",
method => "host.get" ,
params => {
filter => {
available => [ 0, 2 ],
snmp_available => [ 0, 2 ],
jmx_available => [ 0, 2 ],
ipmi_available =>[ 0, 2 ]
},
output => "extend" ,
sortfield => "host",
sortorder => "ASC",
},
auth => $ZBXAuthID ,
id => 1
};
15. 15
findMacro
Necessidade:
Encontrar os hosts que possuem uma
determinada macro.
Aplicabilidade:
- Identificar os hosts com
customização via MACRO;
- Encontrar os hosts que estão usando
uma MACRO que sera removida.
- Fazer um levantamento de todos os
hosts que precisam ter uma
determinada MACRO altera.
Zabbix
EXEMPLOS
Perl
if( &CheckRequest( $RPCResponse , 0 )){
foreach my $data
(@{$RPCResponse ->content->{ result }}){
if( $OptDisplay =~ m/all/i ){
print $AvailableCodes { $data->{
available }}. ", ".$data->{ proxy_hostid }. ",
".$data->{ name }. ", ".$data->{ error }. "n";
} else {
if( $data->{ jmx_available } == 2 ){
print $AvailableCodes { $data->{
jmx_available }}. ", ".$data->{ proxy_hostid
}.", ".$data->{ name }. ", ".$data->{
jmx_error }. "n";
}
if( $data->{ ipmi_available } == 2 ){
print $AvailableCodes { $data->{
ipmi_available }}. ", ".$data->{ proxy_hostid
16. updateMacro
Necessidade:
Manipular as macros globais e de
hosts.
Aplicabilidade:
- Altera, criar, excluir ou adicionar
macros global ou em host.
Zabbix
EXEMPLOS
16
Perl
# Get Response
my $RPCResponse = $OBJsonClient ->call(
$APIUrl, $OBJson );
die "n * Authentication failed n" unless
$RPCResponse ->content->{ 'result' }."nn";
# Get AuthID
$ZBXAuthID =
$RPCResponse ->content->{ 'result' };
print "n * Authentication successful. Auth
ID: $ZBXAuthID nn";
# Check if response was successful
die "Failed to auth on "$APIUrl"n" unless
$RPCResponse ->content->{ result };
17. 17
findOrphanItem
Necessidade:
Auditar uma determinação criada
para o ambiente:
Nenhum item pode ser criado
diretamente em um host, obrigatoriamente
os itens precisam ser criado em um
template.
Aplicabilidade:
- Cria uma lista com todos os hosts e
seus itens “Orphans” para auditoria.
Zabbix
EXEMPLOS
Perl
#!/usr/bin/perl
use JSON::RPC::Client;
require "/opt/zabbix/etc/zabbix_api.conf" ;
# Authenticate yourself
$OBJsonClient = new JSON::RPC::Client;
$OBJson = {
jsonrpc => "2.0",
method => "user.login" ,
params => {
user => $APIUser ,
password => $APIPass
},
id => 1
};
18. managerMap
Necessidade:
Gerenciar os mapas de forma mais
rápida e fácil bem como alterar suas
características de permissionamento.
Aplicabilidade:
- Encontrar todos os mapas de um
determinado usuário;
- Mudar as permissões de
compartilhamento e acesso.
Zabbix
EXEMPLOS
18
Perl
#============================================
================
# Efetua o logoff via API no zabbix:
sub ZabbixLogoff {
$OBJson = {
jsonrpc => "2.0",
method => "user.logout" ,
params => [ ],
auth => $ZBXAuthID ,
id => 1
};
my $RPCResponse = $OBJsonClient ->call(
$APIUrl, $OBJson );
if( ! &CheckRequest( $RPCResponse , 0 )){
19. 19
Obrigado!
ALGUMA PERGUNTA?
Todos os scripts aqui referenciados serão
disponíbilizados no github.
Você consegue me encontrar no:
Igor Nicoli dos Santos @igor_nicoli
igor.nicoli@gmail.com https://github.com/wuilber002
20. CREDITS
Special thanks to all the people who made and released
these awesome resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash
20
21. Presentation design
This presentations uses the following typographies:
▪ Titles & Body copy: Cousine
You can download the fonts on this page:
https://www.fontsquirrel.com/fonts/cousine
You don’t need to keep this slide in your presentation. It’s only here to serve you as a design guide if you need to
create new slides or download the fonts to edit the presentation in PowerPoint®
21
22. ROBOT
https://fcit.usf.edu/matrix/?s=Robot
You don’t need to keep this slide in your presentation. It’s only here to serve you as a design guide if you need to
create new slides or download the fonts to edit the presentation in PowerPoint®
22
23. SlidesCarnival icons are editable
shapes.
This means that you can:
● Resize them without losing
quality.
● Change fill color and
opacity.
Isn’t that nice? :)
Examples:
23
24. 24
Now you can use any emoji as an icon!
And of course it resizes without losing quality and you can
change the color.
How? Follow Google instructions
https://twitter.com/googledocs/status/730087240156643328
✋👆👉👍👤👦👧👨👩👪💃🏃
💑❤😂😉😋😒😭👶😸🐟🍒🍔
💣📌📖🔨🎃🎈🎨🏈🏰🌏🔌🔑
and many more...
��