{"id":4366,"date":"2017-09-25T20:48:37","date_gmt":"2017-09-25T23:48:37","guid":{"rendered":"https:\/\/blog.clusterweb.com.br\/?p=4366"},"modified":"2017-09-25T20:48:37","modified_gmt":"2017-09-25T23:48:37","slug":"utilizando-logrotate","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4366","title":{"rendered":"Utilizando Logrotate"},"content":{"rendered":"<p>A ferramenta\u00a0<i>logrotate<\/i>\u00a0tem como objetivo rotacionar automaticamente logs de aplicativos segundo a necessidade e a organiza\u00e7\u00e3o que o administrador de sistemas (SysAdmin) deseje. Todo administrador experiente reconhece a import\u00e2ncia dos logs e principalmente o qu\u00e3o relevante \u00e9 ter os logs dispon\u00edveis e organizados para um momento onde \u00e9 necess\u00e1ria uma r\u00e1pida consulta aos mesmos. Esta ferramenta \u00e9 muito \u00fatil para os SysAdmin e possui recursos flex\u00edveis que por vezes n\u00e3o s\u00e3o explorados. \u00c9 relevante salientar que alguns aplicativos possuem seu desempenho comprometido quando seus arquivos de log chegam a tamanhos muito grandes.<\/p>\n<h2>Instalar logrotate<\/h2>\n<p>Para instalar o logrotate basta efetuar o procedimento padr\u00e3o da distribui\u00e7\u00e3o Linux que est\u00e1 sendo utilizada.<\/p>\n<p><b><i>Gentoo<\/i><\/b><\/p>\n<pre>  # emerge -va app-admin\/logrotate\r\n<\/pre>\n<p><b><i>Ubuntu<\/i><\/b><\/p>\n<pre>  # apt-get install logrotate\r\n<\/pre>\n<p><b><i>CentOS<\/i><\/b><\/p>\n<pre>  # yum install logrotate\r\n<\/pre>\n<p><!--more--><\/p>\n<h2>Arquivos de configura\u00e7\u00e3o do logrotate<\/h2>\n<p>Depois de instalado \u00e9 preciso efetuar a personaliza\u00e7\u00e3o da configura\u00e7\u00e3o do logrotate.<\/p>\n<p>O logrotate \u00e9 executado automaticamente segundo o agendamento desejado, no entanto al\u00e9m de permitir um ajuste mais detalhando no pr\u00f3prio arquivo de configura\u00e7\u00e3o do logrotate a ferramenta tamb\u00e9m possui sua execu\u00e7\u00e3o vinculada ao cron. Dessa forma ao listar o conte\u00fado do cron.daily devemos encontrar o script do logrotate que foi adicionado automaticamente no momento da instala\u00e7\u00e3o da ferramenta.<\/p>\n<pre>  # ls \/etc\/cron.daily        \u00e9 esperado encontrar na lista de scripts localizadas neste diret\u00f3rio o \"logrotate\"\r\n<\/pre>\n<p>O logrotate possui basicamente um arquivo de configura\u00e7\u00e3o geral\/global:<\/p>\n<pre>  \/etc\/logrotate.conf\r\n<\/pre>\n<p>Neste arquivo s\u00e3o inseridas as configura\u00e7\u00f5es &#8220;padr\u00e3o&#8221; de rotacionamento de logs para todos os arquivos de log que foram especificados nas confgira\u00e7\u00f5es do logrotate.<\/p>\n<p>Um diret\u00f3rio, no qual podem ser inseridos arquivos espec\u00edficos para determinados aplicativos:<\/p>\n<pre>  \/etc\/logrotate.d\r\n<\/pre>\n<p>Neste diret\u00f3rio podem ser criados arquivos com configura\u00e7\u00f5es espec\u00edficas de rotacionamento de logs para determinados aplicativos segundo a necessidade do administrador. Muitos aplicativos ao serem instalados, como por exemplo o Apache, geram um arquivo de rotacionamento de logs dentro do diret\u00f3rio \/etc\/logrotate.d com configura\u00e7\u00f5es pr\u00f3prias mas que podem ser facilmente personalizadas, bastando apenas editar o arquivo referente ao aplicativo.<\/p>\n<h2>Configurar logrotate<\/h2>\n<p>Inicialmente vamos analisar o arquivo de configura\u00e7\u00e3o geral\/global do logrotate (\/etc\/logrotate.conf), conforme mencionado anteriormente a execu\u00e7\u00e3o do logrotate est\u00e1 vinculada ao cron (agendamento) do sistema operacional di\u00e1rio, no entanto \u00e9 necess\u00e1rio personalizar o per\u00edodo de rotacionamento dos logs diretamente no logrotate.<\/p>\n<p>Vamos analisar algumas op\u00e7\u00f5es do arquivo de configura\u00e7\u00e3o geral \/etc\/logrotate.conf (o conte\u00fado abaixo est\u00e1 personalizado):<\/p>\n<pre>  # See \"man logrotate\" for details\r\n  # per\u00edodo em que os arquivos de log devem ser rotacionados\r\n  daily\r\n  rotate 35\r\n  compress\r\n  dateext\r\n  size 5M\r\n  copytruncate\r\n  notifempty\r\n  nomail\r\n  noolddir\r\n  \r\n  # administrador ou aplicativos podem inserir seus arquivos de configura\u00e7\u00e3o espec\u00edficos de rotacionamento de log neste diret\u00f3rio\r\n  include \/etc\/logrotate.d\r\n  \r\n  # tamb\u00e9m podem ser inseridas configura\u00e7\u00f5es de rotacionamento de logs diretamente neste arquivo.\r\n  # para isso basta definir o nome do arquivo de log a ser rotacionado e suas configura\u00e7\u00f5es espec\u00edficas que sobrescrevem as gerais definidas anteriormente.\r\n  \/var\/log\/wtmp {\r\n         monthly\r\n         create 0664 root utmp\r\n         rotate 1\r\n  }\r\n  \r\n  # \u00e9 preciso especificar os arquivos a serem rotacinados pelo logrotate\r\n  \/var\/log\/mail.info \/var\/log\/mail.log \/var\/log\/mail.err {\r\n         rotate 31\r\n  }\r\n  \r\n  # outra forma de especificar os arquivos a serem rotacionados pelo logrotate\r\n  \/var\/log\/*log {\r\n         rotate 31\r\n  }\r\n  \r\n<\/pre>\n<p>Apenas para verificarmos, na instala\u00e7\u00e3o do Apache no Ubuntu foi gerado o arquivo \/etc\/logrotate.d\/apache2 com o seguinte conte\u00fado:<\/p>\n<pre>  \/var\/log\/apache2\/*.log {\r\n         weekly\r\n         missingok\r\n         rotate 52\r\n         compress\r\n         delaycompress\r\n         notifempty\r\n         create 640 root adm\r\n         sharedscripts\r\n         postrotate\r\n                 \/etc\/init.d\/apache2 reload &gt; \/dev\/null\r\n         endscript\r\n  }\r\n  \r\n<\/pre>\n<p>Analisando algumas diretivas de configura\u00e7\u00e3o dispon\u00edveis no logrotate:<\/p>\n<ul>\n<li>Per\u00edodo em que os arquivos de log devem ser rotacionadosAs op\u00e7\u00f5es para esta configura\u00e7\u00e3o s\u00e3o:<\/li>\n<\/ul>\n<table border=\"1\" cellpadding=\"4\" align=\"center\">\n<tbody>\n<tr>\n<td>daily<\/td>\n<td>diariamente<\/td>\n<\/tr>\n<tr>\n<td>weekly<\/td>\n<td>semanalmente<\/td>\n<\/tr>\n<tr>\n<td>monthly<\/td>\n<td>mensalmente<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><b>rotate 35<\/b>\u00a0&#8211; indica o n\u00famero de arquivos de log rotacionados a serem mantidos, o arquivo rotacionado mais velho sempre \u00e9 substitu\u00eddo.<\/li>\n<li><b>compress<\/b>\u00a0&#8211; comprimir os arquivos de log rotacionados (padr\u00e3o \u00e9 o gzip).<\/li>\n<li><b>create<\/b>\u00a0&#8211; imediatamente ap\u00f3s rotacionar um arquivo de log o arquivo de log \u00e9 recriado com o mesmo nome e com as permiss\u00f5es especificadas. Exemplo de sintaxe: create 640 root adm<\/li>\n<li><b>delaycompress<\/b>\u00a0&#8211; comprimir o arquivo de log rotacionado apenas no pr\u00f3ximo rotacionamento. \u00datil quando um aplicativo continua escrevendo um arquivo de log por um determinado tempo ap\u00f3s o rotacionamento. Esta diretiva deve ser utilizada de forma concomitante com a diretiva compress.<\/li>\n<li><b>dateext<\/b>\u00a0&#8211; inserir a data em que os arquivos foram rotacionado como parte do nome do arquivo de log rotacionado. Um exemplo de arquivo rotacionado gerado com a data no nome: \/var\/log\/syslog-20111218.gz<\/li>\n<li><b>size 5M<\/b>\u00a0&#8211; tamanho que o arquivo de log deve ter para ser rotacionado, o &#8220;M&#8221; indica megabytes, tamb\u00e9m pode ser utilizado &#8220;k&#8221; que indica kilobytes. Neste exemplo o arquivo de log s\u00f3 ser\u00e1 rotacionado se tiver o tamanho m\u00ednimo de 5 megabytes.<\/li>\n<li><b>copytruncate<\/b>\u00a0&#8211; esta op\u00e7\u00e3o \u00e9 muito \u00fatil pois permite &#8220;limpar&#8221; o conte\u00fado de um arquivo de log depois que uma c\u00f3pia dele \u00e9 gerada para o rotacionamento, dessa forma n\u00e3o se perde o arquivo &#8220;original&#8221; de log. Caso o arquivo original de log seja rotacionado ser\u00e1 preciso gerar um novo arquivo de log com as pemiss\u00f5es corretas para que o aplicativo possa escrever nele novamente, por vezes isso \u00e9 um problema.<\/li>\n<li><b>notifempty<\/b>\u00a0&#8211; n\u00e3o rotacionar o arquivo de log se ele estiver vazio.<\/li>\n<li><b>ifempty<\/b>\u00a0&#8211; rotacionar o arquivo de log mesmo que este esteja vazio. Esta \u00e9 a op\u00e7\u00e3o padr\u00e3o.<\/li>\n<li><b>nomail<\/b>\u00a0&#8211; n\u00e3o enviar o arquivo de log por e-mail.<\/li>\n<li><b>mail<\/b>\u00a0&#8211; quando os arquivos de logs forem rotacionados com o n\u00famero m\u00e1ximo de vers\u00f5es (diretiva rotate) estipulado os arquivos de log ser\u00e3o enviados por e-mail para o endere\u00e7o definido nesta diretiva. Exemplo de sintaxe: mail &lt;logs (a) dominio com br&gt;<\/li>\n<li><b>missingok<\/b>\u00a0&#8211; se o arquivo de log n\u00e3o existir o logrotate passa para a interpreta\u00e7\u00e3o do pr\u00f3ximo arquivo sem gerar mensagens de erro.<\/li>\n<li><b>noolddir<\/b>\u00a0&#8211; manter os arquivos de log no diret\u00f3rio de origem, \u00e9 poss\u00edvel mover os arquivos de log rotacionados para um outro diret\u00f3rio desde que no mesmo dispositivo f\u00edsico.<\/li>\n<li><b>olddir<\/b>\u00a0&#8211; diret\u00f3rio para onde os arquivos de log rotacionados devem ser movidos. Exemplo de sintaxe: olddir \/var\/log\/logs_antigos<\/li>\n<li><b>postrotate\/endscript<\/b>\u00a0&#8211; os comandos definidos entre estas duas diretivas s\u00e3o executadas\u00a0<u>logo ap\u00f3s<\/u>\u00a0o arquivo de log ser rotacionado. Este conjunto de diretivas s\u00f3 deve ser configurado para uma defini\u00e7\u00e3o espec\u00edfica de rotacionamento de log, n\u00e3o pode ser configurado nas diretivas globais do logrotate.<\/li>\n<li><b>prerotate\/endscript<\/b>\u00a0&#8211; os comandos definidos entre estas duas diretivas s\u00e3o executadas\u00a0<u>antes<\/u>\u00a0o arquivo de log ser rotacionado. Este conjunto de diretivas s\u00f3 deve ser configurado para uma defini\u00e7\u00e3o espec\u00edfica de rotacionamento de log, n\u00e3o pode ser configurado nas diretivas globais do logrotate.<\/li>\n<li><b>sharedscripts<\/b>\u00a0&#8211; geralmente os script definidos nas diretivas postrotate e prerotate s\u00e3o executados para cada um dos logs rotacionados no padr\u00e3o definido previamente, isso significa que um mesmo script pode ser executado v\u00e1rias vezes. Quando esta diretiva \u00e9 especificada os script definidos nas diretivas postrotate e prerotate s\u00e3o executados uma \u00fanica vez. No entanto, caso n\u00e3o haja necessidade de rotacionar os arquivos de log definidos no padr\u00e3o, os scripts n\u00e3o ser\u00e3o executado. Esta diretiva requer a configura\u00e7\u00e3o da diretiva create.<\/li>\n<\/ul>\n<h2>Executando manualmente o logrotate<\/h2>\n<p>\u00c9 poss\u00edvel executar manualmente o logrotate caso se queira efetuar algum teste inicial, por exemplo com uma configura\u00e7\u00e3o espec\u00edfica para os arquivos de log de um determinado aplicativo.<\/p>\n<p>No terminal, preferencialmente logado com o usu\u00e1rio root execute:<\/p>\n<pre>  # logrotate \/etc\/logrotate.conf\r\n<\/pre>\n<p>Para for\u00e7ar a execu\u00e7\u00e3o do rotacionamento execute:<\/p>\n<pre>  # logrotate --force \/etc\/logrotate.conf\r\n<\/pre>\n<p>Para verificar com mais detalhes o que est\u00e1 sendo executado pelo logrotate vamos ativar o modo &#8220;verbose&#8221; na execu\u00e7\u00e3o manual<\/p>\n<pre>  # logrotate --force --verbose \/etc\/logrotate.conf<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A ferramenta\u00a0logrotate\u00a0tem como objetivo rotacionar automaticamente logs de aplicativos segundo a necessidade e a organiza\u00e7\u00e3o que o administrador de sistemas (SysAdmin) deseje. Todo administrador experiente reconhece a import\u00e2ncia dos logs e principalmente o qu\u00e3o relevante \u00e9 ter os logs dispon\u00edveis e organizados para um momento onde \u00e9 necess\u00e1ria uma r\u00e1pida consulta aos mesmos. Esta ferramenta [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[455,460,91,1082,730,1,830,725,42,51,439,495,548],"tags":[1128,269],"class_list":["post-4366","post","type-post","status-publish","format-standard","hentry","category-apache2","category-awstats","category-banco-de-dados","category-centos-7-rhel-7","category-clusterweb","category-viazap","category-debian","category-hospedagem","category-leitura-recomendada","category-linux-linuxrs","category-midia","category-profissional-de-ti","category-ubuntu-2","tag-logrotate","tag-utilizando"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4366"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4366\/revisions"}],"predecessor-version":[{"id":4367,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4366\/revisions\/4367"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}