RT, RT, muito muito mais mais que que um um sistema sistema de de acompanhamento acompanhamento de de chamados chamados Italo Valcy <[email protected]> Ponto de Presença da RNP na Bahia Universidade Federal da Bahia NetCafe, 25/Nov/2011 1 Italo Valcy RT: mais que um sistema de chamados Licença de uso e distribuição Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da: Creative Commons License: Atribuição - Uso não comercial - Permanência da Licença http://creativecommons.org/licenses/by-nc-sa/3.0/ 2 Italo Valcy RT: mais que um sistema de chamados O que é o RT? Em um call center... Você faz uma reclamação; a companhia registra o chamado e lhe dá um número de protocolo; enquanto o chamado está aberto, o problema é encaminhado para solução (podendo ser controlado por outro chamado); tendo o problema resolvido, o chamado é fechado e aquele número (provavelmente) jamais é usado novamente. 3 Italo Valcy RT: mais que um sistema de chamados O que é o RT? No RT é um pouco parecido O fundamento do RT (Request Tracker) é colocar ordem em chamados Os chamados são abertos, têm um tempo de vida e são então fechados. Um série de informações são mantidas junto aos chamados 4 Italo Valcy RT: mais que um sistema de chamados O que é o RT? É um sistema de controle de tíquetes, de código aberto Mantido pela Best Pratical Maior parte escrita em perl 5 Italo Valcy RT: mais que um sistema de chamados O que é o RT? Interface web parecida com um webmail Pastas compartilhadas (Filas) Threads numeradas (tíquetes) Funcionalidades adicionais para os tíquetes Status Prioridade Responsável etc. 6 Italo Valcy RT: mais que um sistema de chamados O que é o RT? Exemplo de uso Helpdesk Operação de redes Bug tracking Serviços para clientes Gerenciamento de projetos 7 Italo Valcy RT: mais que um sistema de chamados Escopo da palestra Overview de instalação e configuração Principais aspectos da utilização Custom Fields e Scrips Extensões 8 Italo Valcy RT: mais que um sistema de chamados Arquitetura do RT 9 Italo Valcy RT: mais que um sistema de chamados Instalação e configuração Versão estável atual: 4.0 (4.0.4) Última estável: 3.8 (ainda com suporte, 3.6 sem suporte) Último tarball http://download.bestpractical.com/pub/rt/release/rt.tar.gz Dependências via CPAN Instruções no README 10 Italo Valcy RT: mais que um sistema de chamados Instalação e configuração Distribuições baseadas em Debian: aptitude install request-tracker3.8 rt3.8-db-postgresql Configurar apache (modperl, fastcgi, speedycgi) Configurações específicas do RT: Set($rtname, 'NOC PoP-BA/RNP'); Set($Organization, 'NOC PoP-BA/RNP'); Set($CorrespondAddress , '[email protected]'); Set($CommentAddress , '[email protected]'); Set($WebPath , "/rt"); Set($WebBaseURL , "https://suporte.pop-ba.rnp.br"); Set($DatabaseType, "Pg"); Set($DatabaseHost, 'db-server.domain'); Set($DatabaseUser , 'myuser'); Set($DatabasePassword , 'mypassword'); Set($DatabaseName, 'mydbname'); Set($LogToSyslog , undef); Set($LogToScreen , undef); Set($LogToFile , 'warning'); Set($LogDir, '/var/log/request-tracker3.6'); Set($LogToFileNamed , "rt.log"); #log to rt.log 11 Italo Valcy RT: mais que um sistema de chamados Instalação e configuração The Mail Gateway Permite os usuários abrir e atualizar chamados a partir de seus clientes de e-mail Na visão do cliente: Chamados: [email protected] No servidor: Utilização do RT::MailGateway e conjunto com o MTA 12 Italo Valcy RT: mais que um sistema de chamados Instalação e configuração The Mail Gateway Script perl simples Usa HTTP (ou HTTPS) para se comunicar com o servidor (pode estar em outra máquina) Não precisa ter o restante do RT instalado Fluxo de execução: MTA faz um pipe da mensagem para rt-mailgate rt-mailgate envia a mensagem para o servidor RT via HTTP(s) O servidor cria/atualiza o chamado 13 Italo Valcy RT: mais que um sistema de chamados Instalação e configuração The Mail Gateway /etc/aliases # [...] security: "|/usr/bin/procmail -a 'Security' -a 'correspond'" security-comment: "|/usr/bin/procmail -a 'Security' -a 'comment'" /etc/procmailrc # mais informacoes: procmailrc(5) LOGFILE=/var/log/procmail.log DEBUG=yes FILA="$1" ACAO="$2" ########### # # Permite criacao de chamados nessa fila apenas para [email protected] :0 * FILA ?? Security * ACAO ?? (correspond|comment) * ^From:.*([email protected]) | /usr/bin/rt-mailgate --timeout 0 --queue ${FILA} \ --action ${ACAO} --url https://rt-server.domain/rt/ Italo Valcy RT: mais que um sistema de chamados 14 Instalação e configuração Se estiver tudo certo... 15 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Campos Filas Tipos de atualização Campos personalizados Templates Scrips 16 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Ticket: Create 17 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Ticket: Basics 18 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Ticket: History 19 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Ticket: Charts 20 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Ticket Usuários precisam estar logados (authU/authZ) Interface SelfService para usuários não privilegiados Senha necessária para acesso: Usar autenticação externa para o RT (e.g., LDAP) Enviar a senha para usuário quando da criação do primeiro tíquete 21 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Buscas armazenadas Qualquer consulta Qualquer formato de saída Pessoais ou compartilhadas 22 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Dashboard Parecidas com páginas personalizadas Compartilhável com grupo Bookmarkable URLs Envio por e-mail 23 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização Rights editor Aplicável à: Tíquetes Filas CustomFields Grupos Qualquer Principal 24 Italo Valcy RT: mais que um sistema de chamados Aspectos de utilização RT Mobile 25 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Custom Fields Helpdesk Hostname, OS, Browser, Site Bug Tracking Severity, OS, Category, "Broken In", "Fixed In" CSIRTs (PoP-BA) IncidentType, IncidentClient, IncidentStatus ... 26 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Tipos de Custom Fields Tipos: Select from a List WikiText Enter Text Images Combobox File Attachments Freeform AJAX Source Preenchimento na criação Possível usar em buscas e gráficos Mais informações: http://requesttracker.wikia.com/wiki/CustomField 27 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Scrips Condition / Action / Template Ideias de Scrip: OnCreate NotifyManager WithTemplate:ManagerNotify OnResolve NotifyRequestor WithTemplate:HappynessSurvey OnOwnerChange NotifyOwner WithTemplate:AssignmentNotifyWithHistory OnCreate NotifyRequestor WithTemplate:SelfServiceNewPasswd 28 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Scrips Conditions On Create / On Transaction / On Correspond / On Owner Change / User Defined Actions Notify Requestors / Notify Requestors, CCs, and Admin Ccs / Create Tickets / User Defined Templates AutoReply / Transaction / Correspondence / Status Change / Resolved / User Defined 29 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Scrips customizados Custom Actions, Templates, and Conditions No banco de dados No disco Flexibilidade Perl Objetos do RT 30 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Templates customizados Templates são objetos do tipo Text::Template Podem ser plain text Podem conter código Perl 31 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Templates customizados Customizando o Autoreply From: { $Transaction->CreatorObj->RealName } (via RT) <{ $Ticket->QueueObj->CorrespondAddress || $RT::CorrespondAddress }> Precedence: normal To: [email protected] Mail-Followup-Tuo: [email protected] Reply-To: [email protected] # # # # New Ticket Created by { $Transaction->CreatorObj->RealName } Please include the string: [{$rtname} #{$Ticket->id}] in the subject line of all future correspondence about this issue. <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} > {$Transaction->Content()} 32 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Condições customizadas Pedaço de código Perl que retorna true (1) ou false (0) Controla se executar ou não uma ação Exemplo: OnEmergency if ($self->TransactionObj->Subject =~ /emergency/i && $self->TicketObj->Transactions->Count == 1) { 1; } else { 0; } 33 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Ações customizadas PageSysadmins (exemplo anterior) Prepare my $hour = (localtime)[2]; if ($hour > 8 && $hour < 18) { return 0; } else { return 1; } Cleanup/Commit use Net::SMS; my $sms = Net::SMS->new(); $sms->msgPin("+1 555 123 1234"); $sms->msgFrom("RT"); $sms->msgText($self->TemplateObj->MIMEObj->body->as_string); $sms->msgSend() 34 Italo Valcy RT: mais que um sistema de chamados Custom Fields e Scrips Exemplo EmergencyPage Template Subject: 911 {$Ticket->Subject} Juntando tudo OnEmergency PageSysadmins WithTemplate:EmergencyPage 35 Italo Valcy RT: mais que um sistema de chamados Estendendo o RT O RT pode ser customizado a partir de suas extensões Adicionando funcionalidades e características UI / CLI / Scrips / Principals Geralmente disponíveis via CPAN 36 Italo Valcy RT: mais que um sistema de chamados Estendendo o RT Lista de extensões: http://bestpractical.com/rt/extensions.html Exemplos: Command by e-mail External Authentication (e.g., DBI, LDAP) Service Level Agreements (SLA) Security (RTIR, TRAIRA) 37 Italo Valcy RT: mais que um sistema de chamados Estendendo o RT RT::TRAIRA 38 Italo Valcy RT: mais que um sistema de chamados Estendendo o RT RT::CLI Permite interagir diretamente com os objetos do RT #!/usr/bin/perl push @INC, '/usr/share/request-tracker3.6/lib'; use RT; use RT::Interface::CLI; RT::LoadConfig(); my $RT = RT::Init(); my $CurrentUser = RT::Interface::CLI::GetCurrentUser(); // codigo perl 39 Italo Valcy RT: mais que um sistema de chamados Estendendo o RT bin/rt Interface pronta com funções básicas prédefinidas Pode executar via HTTP(s) remotamente rt ls "Priority > 5 and Status='new'" rt ls "queue='perl5' and (Status='new' or Status='open')" rt edit ticket/312 set queue=spam status=deleted rt comment -m 'this is a comment' 151 40 Italo Valcy RT: mais que um sistema de chamados Boas práticas Tipos de atualização Preenchimento de campos Manter somente o texto realmente necessário em atualizações Detalhar as pendências Resumo do tíquete na conclusão 41 Italo Valcy RT: mais que um sistema de chamados Suporte Comunidade bastante ativa Lista de discussão rt-users Suporte comercial pela BestPractical Consultoria: Italo Valcy Implantação Desenvolvimento Treinamento / Capacitação 42 Italo Valcy RT: mais que um sistema de chamados RT Dúvidas? Perguntas? Obrigado!!! ;-) Italo Valcy <[email protected]> Italo Valcy RT: mais que um sistema de chamados 43