SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
AUT MAÇÃO
Ganhando produtividade
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
Para que criar um script,
robô ou automatizar alguma coisa?
3
Por que automatizar?
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?
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
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.
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...
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.
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?
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
11
Zabbix
Ferramenta facilmente customizável e
gerenciável via script.
API simples, robusta e rápida. Ótima
para se utilizar para
automatizar tarefas.
12
Zabbix
Documentação organizada,
completa e com muitos
exemplos
de uso…
DOCUMENTAÇÃO
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
};
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
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
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
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
};
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
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
CREDITS
Special thanks to all the people who made and released
these awesome resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash
20
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
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
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
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...
��

Mais conteúdo relacionado

Mais procurados

Javascript no SAPO e libsapojs
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojscodebits
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage apiSuissa
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Geolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesGeolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesLuis Gustavo Almeida
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Pythonpugpe
 
Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.Luiz Henrique Estacio
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
Construindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com PythonConstruindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com Pythonpugpe
 
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webHenrique Gogó
 
React e Ratchet, async e websockets com PHP, por Gabriel Couto
React e Ratchet, async e websockets com PHP, por Gabriel CoutoReact e Ratchet, async e websockets com PHP, por Gabriel Couto
React e Ratchet, async e websockets com PHP, por Gabriel CoutoiMasters
 
Yet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroYet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroCarlos Brando
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinNelson Glauber Leal
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSRomulo Fagundes
 

Mais procurados (20)

Javascript no SAPO e libsapojs
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojs
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Geolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesGeolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e Routes
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Python
 
Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.Javascript - Agora a coisa ficou séria.
Javascript - Agora a coisa ficou séria.
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Construindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com PythonConstruindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com Python
 
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações web
 
React e Ratchet, async e websockets com PHP, por Gabriel Couto
React e Ratchet, async e websockets com PHP, por Gabriel CoutoReact e Ratchet, async e websockets com PHP, por Gabriel Couto
React e Ratchet, async e websockets com PHP, por Gabriel Couto
 
Yet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroYet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentro
 
Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)Mashups: Criando Valor na Web 2.0 (BandTec)
Mashups: Criando Valor na Web 2.0 (BandTec)
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com Kotlin
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
 

Semelhante a Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade

Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Rafael Ponte
 
Primeiros passos com a API do Zabbix
Primeiros passos com a API do ZabbixPrimeiros passos com a API do Zabbix
Primeiros passos com a API do ZabbixJanssen Lima
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Desenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyDesenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyRodrigo Martins
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open SourceEdgar Silva
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...WeOp - The Operations Summit
 
Supervisão e Monitorização
Supervisão e MonitorizaçãoSupervisão e Monitorização
Supervisão e MonitorizaçãoSAPO Sessions
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com pythonUFPA
 
Docker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekDocker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekLuiz Carlos Faria
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresqlGerdan Santos
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Davy Alvarenga Machado
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 

Semelhante a Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade (20)

Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Primeiros passos com a API do Zabbix
Primeiros passos com a API do ZabbixPrimeiros passos com a API do Zabbix
Primeiros passos com a API do Zabbix
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Desenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyDesenvolvimento Mobile com Ruby
Desenvolvimento Mobile com Ruby
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe ...
 
Supervisão e Monitorização
Supervisão e MonitorizaçãoSupervisão e Monitorização
Supervisão e Monitorização
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com python
 
Docker Everywhere - MTAC Week
Docker Everywhere - MTAC WeekDocker Everywhere - MTAC Week
Docker Everywhere - MTAC Week
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
 
Python 08
Python 08Python 08
Python 08
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 

Último

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Último (8)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade

  • 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
  • 11. 11 Zabbix Ferramenta facilmente customizável e gerenciável via script. API simples, robusta e rápida. Ótima para se utilizar para automatizar tarefas.
  • 12. 12 Zabbix Documentação organizada, completa e com muitos exemplos de uso… DOCUMENTAÇÃO
  • 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... ��