quinta-feira, 8 de maio de 2014

Como instalar e configurar o Monit no Linux para Monitoramento de Processos

Monit é um utilitário de código aberto que fornece várias funcionalidades de monitoramento do sistema, que são extremamente úteis para administradores de sistemas. Este artigo fornece um guia JumpStart em instalação e configuração monit. Discutimos, também, um exemplo específico relacionado ao monitoramento de processos.

1. Instale monit

No Fedora, openSUSE, Debian instalar monit como um pacote a partir do repositório de distribuição. Por exemplo, no Debian (e Ubuntu), instale monit usando o apt-get, como mostrado abaixo.
# Apt-get install monit
Se a sua distribuição não tem o pacote monit, baixar fonte monit e instalá-lo.

2. Configure monit

Uma entrada de monitoramento do processo de exemplo no arquivo de configuração do monit / etc / monit / monitrc parece com o seguinte.
verifique processo processName
        com pidfile PIDFILENAME-WITHABSOLUTE-PATH
        start = STARTUP-SCRIPT
        stop = STOP-SCRIPT
Por exemplo, para monitorar o daemon cron, acrescente as seguintes linhas no arquivo monitrc.
# Vim / etc / monit / monitrc
verifique processo crond
            com pidfile / var / run / crond.pid
            start = "/ etc / init.d / cron start"
            stop = "/ etc / init.d / stop cron"
Para mais configurações (por exemplo, reiniciar um processo quando ele atravessa a memória ou o limite do processo), referem-se a como monitorar seção "homem monit".
Além disso, permitir syslog descomentando a seguinte linha em / etc / monit / monitrc.

# Vim / etc / monit / monitrc
set logfile log_daemon syslog

3. Permitir inicialização do monit

Edite o arquivo etc monit / / default / e permitir o arranque de bandeira, o que garante que a configuração é feito para que monit pode começar.
# Vim / etc / default / monit
inicialização = 1

4. Comece monit

# / Etc / init.d / start monit
Iniciando daemon do monitor: monit

5. Verifique funcionalidade monit

Para testar isso, vamos matar o daemon cron rodando como mostrado abaixo.
# Ps-ef | grep cron
raiz 2886 1 0 10:18? 00:00:00 / usr / sbin / cron

# Pkill -9 cron
No intervalo seguinte, monit inicia automaticamente o daemon cron sem a interação do administrador como mostrado nas mensagens de syslog abaixo.
05 de dezembro 13:06:55 (nenhum) monit [2968]: o processo de 'crond' não está em execução
05 de dezembro 13:06:55 (nenhum) monit [2968]: 'crond' tentando reiniciar
05 de janeiro 13:06:55 (nenhum) monit [2968]: 'crond' start: / etc / init.d / cron
Faça um ps-ef para garantir que o trabalho do cron é iniciado automaticamente pelo monit, quando você matou.
# Ps-ef | grep cron
enraizar 19728 1 0 13:06? 00:00:00 / usr / sbin / cron


10 Exemplos do Utilitário IOzone para Disk I / O de Medição de Desempenho em Linux





Se alguém está reclamando que um banco de dados (ou qualquer aplicativo) rodando em um servidor (com certo sistema de arquivos, ou configuração RAID) está correndo mais rápido do que o mesmo banco de dados ou aplicativo em execução em outro servidor, você pode querer certificar-se de que o desempenho no nível de disco é o mesmo no servidor. Você pode usar IOzone para esta situação.

Se você estiver executando o seu banco de dados (ou qualquer outra aplicação) em determinado ambiente SAN ou NAS, e gostaria de migrá-lo para diferentes ambientes SAN ou NAS, você deve executar filesystem benchmakring em ambos os sistemas e compará-lo. Você pode usar IOzone para esta situação.
Se você sabe como usar IOzone, você pode muito bem usá-lo para várias finalidades filesystem benchmarking.

Baixe e instale IOZone

IOzone é um utilitário de benchmarking do sistema de arquivos de código aberto.
Siga os passos abaixo para baixar e instalar IOzone em seu sistema.
wget http://www.iozone.org/src/current/iozone3_394.tar

tar xvf iozone3_394.tar 

cd iozone3_394/src/current

fazer

fazer linux

O que medida utilitário IOzone?

IOzone executa os seguintes 13 tipos de teste. Se você está executando teste IOzone em um servidor de banco de dados, você pode se concentrar nos seis primeiro testes, como elas impactam diretamente o desempenho do banco de dados.
  1. Leia - Indica o desempenho de leitura de um arquivo que já existe no sistema de arquivos.
  2. Escrever - Indica o desempenho de escrever um novo arquivo para o sistema de arquivos.
  3. Re-leitura - Depois de ler um arquivo, isso indica o desempenho de leitura de um arquivo novamente.
  4. Re-escrever - Indica o desempenho de escrever para um arquivo existente.
  5. Aleatório Read - Indica o desempenho de leitura de um arquivo, lendo informações aleatórias a partir do arquivo. ou seja, este não é uma leitura seqüencial.
  6. Escrever aleatória - Indica o desempenho de gravação de um arquivo em vários locais aleatórios. ou seja, isso não é uma gravação seqüencial.
  7. Backward Ler
  8. Grave Re-Write
  9. Stride Ler
  10. Fread
  11. Fwrite
  12. Freread
  13. Frewrite

10 Exemplos do IOzone 

1. Execute todos os testes IOzone usando valores padrão



-Uma opção significa modo automático. Isso cria arquivos de teste temporários de tamanhos 64k 512MB para testes de desempenho. Este modo também usa 4k de 16M de tamanhos recorde para ler e escrever (mais sobre isso depois) o teste.

-A opção também irá executar todos os 13 tipos de testes.
$. / IOzone-a
O primeiro setion da saída IOzone contém as informações de cabeçalho, que exibe informações sobre o utilitário IOzone, e todas as opções IOzone que são usados ​​para gerar este relatório, como mostrado abaixo.
IOzone: Teste de Desempenho de File I / O
        Versão $ Revision: 3.394 $
 Compilado para o modo de 32 bits.
 Constituição: linux 

Contribuintes: William Norcott, Don Capps, Isom Crawford, Kirby Collins
             Al Slater, Scott Reno, Mike Wisner, Ken Goss

Run começou: Sáb 23 abril 2011 00:25:34

Modo Auto
Linha de comando usado:. / IOzone-a
A saída é em Kbytes / seg
Resolução Tempo = 0.000001 segundos.
Tamanho do cache do processador definido para 1024 Kbytes.
Cache do processador tamanho da linha definida para 32 bytes.
Tamanho do arquivo passo definido para 17 * tamanho do registro.
A segunda seção da saída contém os valores de saída (em por segundo) de vários testes.
  • 1 coluna KB: Indica o tamanho do arquivo que foi usado para o teste.
  • 2 reclen coluna: Indica o comprimento do registro que foi usado para o teste.
  • 3 ª coluna até a última coluna: Indica os vários testes que são realizados e seus valores de saída em cada segundo.
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
  64 4 495678 152376 1824993 2065601 2204215 875739 582008 971435 667351 383106 363588 566583 889465
  64 8 507650 528611 1051124 1563289 2071399 1084570 1332702 1143842 2138827 1066172 1141145 1303442 2004783
  64 16 587283 1526887 2560897 2778775 2366545 1122734 1254016 593214 1776132 463919 1783085 3214531 3057782
  64 32 552203 402223 1121909 1388380 1162129 415722 666360 1163351 1637488 1876728 1685359 673798 2466145
  64 64 551580 1122912 2895401 4911206 2782966 1734491 1825933 1206983 2901728 1207235 1781889 2133506 2780559
 128 4 587259 1525366 1801559 3366950 1600898 1391307 1348096 547193 666360 458907 1486461 1831301 1998737
 128 8 292218 1175381 1966197 3451829 2165599 1601619 1232122 1291619 3273329 1827104 1162858 1663987 1937151
 128 16 6500 08 510099 4120180 4003449 2508627 1727493 1560181 1307583 2203579 1229980 603804 1911004 2669183
 128 32 7032 00 1802599 2842966 2974289 2777020 1331977 3279734 1347551 1152291 684197 722704 907518 2466350
 128 64 8482 80 1294308 2288112 1377038 1345725 659686 1997031 1439349 2903100 1267322 1968355 2560063 1506623
 128 128 9021 20 551579 1305206 4727881 3046261 1405509 1802090 1085124 3649539 2066688 1423514 2609286 3039423
...

2. Salve a saída para uma planilha usando IOzone-b

Para salvar a saída IOzone para uma planilha, use o b-opção como mostrado abaixo. -B está para binário, e ele instrui IOzone para escrever a saída do teste em formato binário para uma planilha.
$. / IOzone-a-b output.xls
Nota: Os b-opção pode ser utilizada com qualquer um dos exemplos mencionados abaixo.
A partir dos dados que é salvo na planilha, você pode usar os criar alguns gráficos bonitos usando a funcionalidade de gráfico da ferramenta de planilha. O seguinte é um gráfico de amostra que foi criado a partir da saída IOzone.
Figura : Gráfico IOZone

3. Execute somente um tipo específico de teste usando IOzone-i

Se você estiver interessado em executar apenas um tipo específico de teste, use a opção-i.
Sintaxe:
IOzone-i [tipo de teste]
O tipo de teste é um valor numérico. A seguir estão os vários tipos de testes disponíveis e seu valor numérico.
  • 0 = escrita / reescrita
  • 1 = leitura / re-ler
  • 2 = random-read/write
  • 3 = leitura para trás
  • 4 = Re-write-registro
  • 5 = passo de leitura
  • 6 = fwrite / re-fwrite
  • 7 = fread / Re-fread,
  • 8 = mistura aleatória
  • 9 = pwrite / Re-pwrite
  • 10 = pread / Re-pread
  • 11 = pwritev / Re-pwritev
  • 12 = preadv / Re-preadv
O exemplo a seguir será executado somente os testes de escrita (ou seja, tanto escrever e reescrever). Como você pode ver a partir da saída as outras colunas estão vazias.
$. / IOzone-a-i 0
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
  64 4 353666 680969                                                                                
  64 8 477269 744768                                                                                            
  64 16 429574 326442                                                                                            
  64 32 557029 942148                                                                                            
  64 64 680844 633214                                                                                            
 128 4 187138 524591

Combine vários tipos de teste IOzone

Você também pode combinar vários tipos de teste, especificando-múltipla i na linha de comando.
Por exemplo, o exemplo a seguir irá testar tanto ler e escrever tipos de teste.
$. / IOzone-a-i-i 0 1
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
  64 4 372112 407456 1520085 889086                                                                          
  64 8 385574 743960 3364024 2553333                                                                          
  64 16 496011 397459 3748273 1330586                                                                          
  64 32 499600 876631 2459558 4270078

4. Especifique o tamanho do arquivo usando IOzone-s

Por padrão, IOzone criará automaticamente os arquivos temporários do tamanho de 64k para 512M, para realizar vários testes.
A primeira coluna na saída IOzone (com o cabeçalho da coluna KB) indica o tamanho do arquivo. Como você viu a partir da saída anterior, ele começa com o arquivo de 64KB, e vai continuar a aumentar até 512M (dobrando o tamanho do arquivo de cada vez).
Em vez de executar o teste para todos os tamanhos de arquivos, você pode específica o tamanho do arquivo com a opção-s.
O exemplo a seguir irá realizar teste de gravação apenas para o tamanho do arquivo de 1 MB (ou seja, 1024 KB).
$. / IOzone-a-i 0-s 1024
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
1024 4 469710 785882                                                                                            
1024 8 593621 1055581                                                                                            
1024 16 745286 1110539                                                                                            
1024 32 610585 1030184                                                                                            
1024 64 929225 1590130                                                                                            
1024 128 1009859 1672930                                                                                            
1024 256 1042711 2039603                                                                                            
1024 512 941942 1931895                                                                                            
1024 1024 1039504 706167

5. Especifique o tamanho de registro para testar usando IOzone-r

Quando você executa um teste, para um tamanho de arquivo específico, ele testa com diferentes tamanhos de registro variam de 4k para 16M.
Se você gostaria de fazer o teste de desempenho de I / O de um subsistema de I / O que hospeda banco de dados Oracle, você pode querer definir o tamanho recorde no IOzone para o mesmo valor do tamanho do bloco DB. O banco de dados lê e escreve com base no tamanho do bloco DB.
reclen significa Comprimento de registro. No exemplo anterior, a segunda coluna (coluna com o cabeçalho "reclen") indica o comprimento do registo de que deve ser usado para testar IOzone. No exemplo outout anterior, para o tamanho do arquivo de 1024KB, o teste IOzone usou vários tamanhos de registro variam de 4k de 16M para realizar o teste de escrita.
Em vez de usar todos esses tamanhos de comprimento de registro padrão, você também pode especificar o tamanho do disco que você gostaria de testar.
O exemplo abaixo será executado teste de gravação apenas para comprimento de registro de 32k. Na saída, a 2 ª coluna, agora apenas exibir 32.
$. / IOzone-a-i-r 0 32
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
  64 32 566551 820553                                                                                            
 128 32 5740 98 1000000                                                                                            
 256 32 8260 44 948043                                                                                            
 512 32 8012 82 1560624                                                                                            
1024 32 859116 528901                                                                                            
2048 32 881206 1423096

6. Combine o tamanho do arquivo com tamanho de registro

Você também pode usar a opção-s tanto e-r para um tamanho de arquivo temporário exata específico e tamanho exato do registro que precisa ser testado.
Por exemplo, o seguinte será executado o teste de gravação usando um arquivo de 2M com um comprimento de registro de 1M
$. / IOZone-a-i 0-s-r 2048 1024
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
2048 1024 1065570 1871841

7. Teste de throughput usando IOzone-t

Para executar a opção IOzone no modo de transferência, use-t. Você também deve especificar o número de threads que precisa estar ativo durante este teste.
O exemplo a seguir irá executar o teste IOzone transferência para gravações usando duas threads. Por favor, note que você não pode combinar-a com a opção-t opção.
$. / IOzone-i-t 0 2

As crianças vêem o rendimento por 2 escritores iniciais 1 = 433.194,53 KB / seg
Pai vê transferência para 2 escritores iniciais = 7372,12 KB / seg
Min rendimento por processo = 0.00 KB / sec 
Max rendimento por processo = 433.194,53 KB / sec
Rendimento médio por processo = 216.597,27 KB / sec
Quem Xfer = 0,00 KB

As crianças vêem o rendimento por 2 rewriters = 459.924,70 KB / seg
Pai vê transferência para 2 rewriters = 13.049,40 KB / seg
Min rendimento por processo = 225.610,86 KB / sec 
Max rendimento por processo = 234.313,84 KB / sec
Rendimento médio por processo = 229.962,35 KB / sec
Min xfer = 488.00 KB
Para executar a transferência de todos os tipos de ensaio, remover a "-i 0" no exemplo acima, como se mostra abaixo.
$. / IOzone-t 2

8. incluem a utilização da CPU usando IOzone - + u

Durante a realização dos testes IOzone, você também pode instruir IOzone para coletar a utilização da CPU usando - + opção u.
A - + na frente da opção pode parecer pouco estranho. Mas, você tem que dar o todo - + u (e não apenas-u, ou + u) para que isso funcione corretamente.
O exemplo a seguir irá executar todos os testes, e incluir o relatório de utilização da CPU como parte da saída de planilha excel que gera.
$ / IOzone-a -. + U-b output.xls
Nota: Isto irá mostrar a utilização da CPU em separado para cada teste que executa.

9. Aumentar o tamanho do arquivo usando IOzone-g

Isto é importante. Se o seu sistema tem mais de 512 MB de RAM, você deve aumentar o tamanho do arquivo temporário que IOzone usa para testes. Se você não fizer isso, você pode não obter resultados precisos, como o cache de buffer do sistema irá desempenhar um papel nele.
Para o desempenho do disco precisas, recomenda-se a ter o tamanho de arquivo temporário 3 vezes o tamanho do seu cache de buffer do sistema.
O exemplo a seguir irá executar o IOzone aumentando o tamanho máximo de arquivo de 2 GB, e execute o teste IOzone automático para testes de gravação.
$. / IOzone-a-g-i 0 2G
                                                aleatória registro tranco bkwd aleatória                                   
  KB reclen escrever reescrever ler reler ler escrever ler reescrita ler fwrite frewrite fread freread
  64 4 556674 1230677                                                                                            
  64 8 278340 441320                                                                                            
  64 16 608990 1454053                                                                                            
  64 32 504125 1085411                                                                                            
  64 64 571418 1279331                                                                                            
 128 4 526602 961764                                                                                            
 128 8 714730 518219                         
...

10. Montar vários pontos de teste em conjunto, utilizando IOzone-F

Através da combinação de várias opções IOzone, você pode realizar testes de disco I / O em vários pontos de montagem como mostrado abaixo.
Se você tem 2 pontos de montagem, você pode começar dois segmentos diferentes IOzone para criar arquivos temporários em ambos estes pontos de montagem para o teste, como mostrado abaixo.
$. / IOzone-it 2-u 2-r-s 16k 512M-F / u01/tmp1 / u02/tmp2
  • -L indica o número mínimo de processos IOZone que deve ser iniciado
  • -U indica o número máximo de processos IOZone que deve ser iniciado
  • -F deve conter vários valores. ou seja, se nós especificamos 2 em ambos-l e-u, devemos ter dois nomes aqui. Por favor, note que apenas os pontos de montagem precisam existe.O arquivo especificado na opção-F não precisa existir, como IOzone criará este arquivo temporário durante o teste. No exemplo acima, os pontos de montagem são / u01 e / u02.O tmp1 arquivo e tmp2 será criado automaticamente pelo IOzone para fins de testes.

Introdução a Performance, Monitoração e Ajuste fino em Linux






Administradores de sistemas Linux deve ser proficiente em Linux monitoramento e ajuste de desempenho. Este artigo fornece uma visão geral de alto nível sobre a forma como devemos abordar o monitoramento e ajuste de desempenho no Linux, e os vários subsistemas (e métricas de desempenho) que precisa ser monitorado.
Para identificar os gargalos do sistema e apresentar soluções para corrigi-lo, você deve entender como vários componentes do Linux funciona. Por exemplo, como o kernel dá preferência a um processo Linux sobre os outros usando valores agradáveis, como I / O interrupções são tratados, como funciona o gerenciamento de memória, como o sistema de arquivos do Linux funciona, como a camada de rede é implementado no Linux, etc ,
Por favor, note que a compreensão de como os vários componentes (ou subsistemas) funciona não é o mesmo que saber o comando para executar a obter determinada saída. Por exemplo, você poderia saber que "uptime" ou o comando "top" dá a "carga média". Mas, se você não sabe o que isso significa e como a CPU (ou processo) subsistema funciona, você pode não ser capaz de compreendê-lo corretamente. Compreender os subsistemas é uma tarefa em curso, o que você vai estar constantemente aprendendo o tempo todo.
Em um nível muito elevado, a seguir estão os quatro subsistemas que precisa ser monitorado.
  • CPU
  • Memória
  • I / O
  • Rede

1. CPU

Você deve compreender as quatro métricas de desempenho críticos para CPU - mudança de contexto, fila de execução, utilização de CPU, e média de carga.

Troca de Contexto

  • Quando CPU muda de um processo (ou thread) para outro, ele é chamado como mudança de contexto.
  • Quando um switch processo acontece kernel armazena o estado atual da CPU (de um processo ou thread) na memória.
  • Kernel também recupera o estado previamente armazenado (de um processo ou segmento) da memória e coloca-lo na CPU.
  • Troca de contexto é muito essencial para multitarefa do processador.
  • No entanto, um maior nível de troca de contexto pode causar problemas de desempenho.

Run Queue

  • Fila de execução indica o número total de processos ativos na fila atual para CPU.
  • Quando CPU está pronta para executar um processo, ele pega a partir da fila de execução com base na prioridade do processo.
  • Por favor, note que os processos que estão em estado de sono, ou i / o estado de espera não estão na fila de execução.
  • Assim, um maior número de processos na fila de execução pode causar problemas de desempenho.

Utilização da CPU

  • Isso indica o quanto da CPU está sendo usado.
  • Isso é bastante para a frente, e você pode ver a utilização da CPU do comando top .
  • 100% de utilização da CPU significa que o sistema é totalmente carregado.
  • Assim, uma idade mais elevada% de utilização da CPU irá causar problemas de desempenho.

Carga Média

  • Isso indica a carga média da CPU durante um período de tempo específico.
  • No Linux, média de carga é exibido para o último 1 minuto, 5 minutos e 15 minutos. Isso é útil para ver se a carga total no sistema é indo para cima ou para baixo.
  • Por exemplo, uma média de carga de "0,75 1,70 2,10" indica que a carga sobre o sistema está descendo. 0,75 é a média de carga no último 1 minuto. 1,70 é a média de carga nos últimos 5 minutos. 2,10 é a média de carga nos últimos 15 minutos.
  • Por favor, note que esta carga média é calculada através da combinação de ambos o número total de processos na fila, eo número total de processos no estado da tarefa ininterrupta.

2. Rede

  • Uma boa compreensão dos conceitos de TCP / IP é útil ao analisar quaisquer problemas de rede. Vamos discutir mais sobre isso em artigos futuros.
  • Para interfaces de rede, você deve monitorar o número total de pacotes (e bytes) recebidos / enviados através da interface, número de pacotes descartados, etc,

3. De I / O

  • I / O de espera é a quantidade de tempo de CPU está à espera de I / O. Se você vê alta consistente i / o espera do sistema, isso indica um problema no subsistema de disco.
  • Você também deve monitorar leituras / segundo, e escreve / segundo. Isto é medido em blocos. ou seja, número de blocos de leitura / escrita por segundo. Estes também são referidos como bi e bo (bloco e bloquear).
  • tps indica o total de transações por segundo, que é a soma de rtPS (leia transações por segundo) e ETAs (operações de escrita por segundo).

4. Memória

  • Como você sabe, a memória RAM é a memória física. Se você tem 4 GB de RAM instalada no seu sistema, você tem 4 GB de memória física.
  • A memória virtual = O espaço de troca disponível no disco + memória física. A memória virtual contém tanto espaço do usuário e espaço de kernel.
  • Usando um 32-bit ou 64-bit sistema faz uma grande diferença na determinação de quanta memória um processo pode utilizar.
  • Em um sistema de 32 bits de um processo só pode acessar um máximo de 4 GB de memória virtual. Em um sistema de 64 bits não existe essa limitação.
  • A RAM não utilizada será usado como cache do sistema de arquivos no kernel.
  • O sistema Linux vai trocar quando ele precisa de mais memória. ou seja, quando ele precisa de mais memória do que a memória física. Quando se troca, ele grava as páginas de memória menos utilizadas da memória física para o espaço de troca no disco.
  • Lote de troca pode causar problemas de desempenho, como o disco é muito mais lento do que a memória física, e é preciso tempo para trocar as páginas de memória de RAM para o disco.
Todos os acima de 4 subsistemas estão interligados. Só porque você vê um alto leituras / segundo, ou escreve / segundo, ou I / O de espera não significa que o problema está lá com o sub-sistema de I / O. Também depende do que o aplicativo está fazendo. Na maioria dos casos, o problema de desempenho pode ser causado pelo aplicativo que está em execução no sistema Linux.
Lembre-se da regra 80/20 - 80% da melhoria de desempenho vem de ajustar o aplicativo, eo restante 20% vem de ajuste dos componentes de infra-estrutura.
Existem várias ferramentas disponíveis para monitorar o desempenho do sistema Linux. Por exemplo: top, livre, ps, iostat, vmstat, mpstat, sar, tcpump, netstat, IOzone, etc, nós estaremos discutindo mais sobre essas ferramentas e como usá-los nos próximos artigos desta série.
Segue-se a abordagem de 4 etapas para identificar e resolver um problema de desempenho.
  • Passo 1 - Compreender (e reproduzir) o problema: Metade do problema é resolvido quando você entender claramente o que é o problema. Antes de tentar resolver o problema de desempenho, trabalhar primeiro em definir claramente o problema. Quanto mais tempo você gasta com a compreensão e definição do problema vai lhe dar detalhes suficientes para procurar as respostas no lugar certo. Se possível, tente reproduzir o problema, ou pelo menos simular uma situação que você acha que se assemelha ao problema. Isso irá ajudá-lo mais tarde para validar a solução que você venha a corrigir o problema de desempenho.
  • Passo 2 - Monitorar e coleta de dados: Depois de definir claramente o problema, monitorar o sistema e tentar recolher o máximo de dados possível sobre vários subsistemas. Com base nesses dados, chegou-se a lista de problemas potenciais.
  • Passo 3 - Eliminar e limitar as questões: Depois de ter uma lista de possíveis problemas, mergulhar em cada um deles e eliminar qualquer não questões. Reduzi-lo ainda mais para ver se é uma questão de aplicação, ou um problema de infra-estrutura.Aprofundar ainda mais e reduzi-lo a um componente específico. Por exemplo, se é uma questão de infra-estrutura, reduzi-lo e identificar o subsistema que está causando o problema. Se é um problema de subsistema de I / O, reduzi-lo a uma partição específica, ou grupo de ataque, ou LUN, ou disco. Basicamente, manter perfuração para baixo até que você colocar o dedo sobre a causa raiz do problema.
  • Passo 4 - Uma mudança de cada vez: Uma vez que você estreitou para baixo a uma pequena lista de possíveis problemas, não tente fazer várias mudanças ao mesmo tempo.Se você fizer várias alterações, você não sabe qual fixa o problema original. Várias alterações de uma só vez também pode causar novos problemas, o que você vai estar perseguindo, em vez de corrigir o problema original. Então, faça uma mudança de cada vez, e veja se ele corrige o problema original.
Nos próximos artigos da série de desempenho, vamos discutir mais sobre como monitorar e problemas de desempenho no endereço CPU, memória, I / O e subsistema de rede usando várias ferramentas de monitoramento de desempenho do Linux.



Exemplos de 25 regras mais usada no Linux Iptables


À primeira vista, as regras do iptables pode parecer enigmática.
Neste artigo, eu dei 25 regras de iptables práticas que você pode copiar / colar e usá-lo para as suas necessidades.
Estes exemplos atuará como modelos básicos para que você possa ajustar essas regras que atendam às suas necessidades específicas.
Para facilidade de referência, todas estas 25 regras do iptables são em formato de script shell:iptables-rules
1. Excluir regras existentes
Antes de iniciar a construção de novo conjunto de regras, você pode querer para limpar todas as regras padrão e regras existentes. Use o comando iptables nivelado como mostrado abaixo para fazer isso.
iptables -F

2. Definir Políticas Cadeia Padrão

A política de cadeia padrão é ACCEPT. Altere isso para soltar para todas as entradas, FORWARD, e as cadeias de saída como mostrado abaixo.
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT


Quando você faz tanto INPUT, e política padrão da chain OUTPUT como DROP para cada necessidade de regras de firewall que você tem, você deve definir duas regras. ou seja, uma para entrada e outra para saída.
Em todos os nossos exemplos abaixo, temos duas regras para cada cenário, como já definido GOTA como política padrão para entrada e chain OUTPUT.
Se você confiar em seus usuários internos, você pode omitir a última linha acima. ou seja, não deixe cair todos os pacotes de saída por padrão. Nesse caso, para cada necessidade de regras de firewall que você tem, você só tem que definir apenas uma regra. ou seja, definir regra apenas para entrada, como a saída é aceitar para todos os pacotes.
Nota: Se você não sabe o que um meio de cadeia, você deve primeiro se familiarizar com os fundamentos do IPTables .

3. Bloquear um endereço IP específico

Antes de prosseguir irá outros exemplos, se você quiser bloquear um endereço IP específico, você deve fazer isso primeiro, como mostrado abaixo. Altere o "xxxx" no exemplo a seguir para o endereço IP específico que você gostaria de bloquear.
BLOCK_THIS_IP = "xxxx"
iptables-A INPUT-s "$ BLOCK_THIS_IP"-j DROP
Isso é útil quando você encontrar algumas atividades estranhas de um endereço IP específico em seus arquivos de log, e você deseja bloquear temporariamente que endereço IP enquanto você fazer mais pesquisas.
Você também pode usar uma das seguintes variações, que bloqueia apenas o tráfego TCP na conexão eth0 para este endereço IP.
iptables-A INPUT-i eth0-s "$ BLOCK_THIS_IP"-j DROP
iptables-A INPUT-i eth0-p tcp-s "$ BLOCK_THIS_IP"-j DROP

4. Permitir que todos os entrada SSH

As seguintes regras permitem que TODAS as conexões ssh de entrada na interface eth0.
iptables-A INPUT-i tcp eth0-p - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A OUTPUT-tcp o eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
Nota : Se você gosta de entender exatamente o que todos e cada um dos argumentos significa, você deve ler como adicionar regras de firewall IPTables

5. Permitir SSH de entrada apenas de uma rede sepcific

As seguintes regras permitem conexões ssh recebidas apenas de 192.168.100.X rede.
iptables-A INPUT-i eth0-p tcp-s 192.168.100.0/24 - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A OUTPUT-tcp o eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
No exemplo acima, ao invés de / 24, você também pode usar a máscara de sub-rede completo.ou seja, "192.168.100.0/255.255.255.0".

6. Permitir HTTP e HTTPS de entrada

As seguintes regras permitem que todo o tráfego web de entrada. ou seja, o tráfego HTTP para a porta 80.
iptables-A INPUT-i tcp eth0-p - dport 80-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A OUTPUT-tcp o eth0-p - sport 80-m state - state ESTABLISHED-j ACCEPT
As seguintes regras permitem que todas as chamadas recebidas tráfego web segura. ou seja, o tráfego HTTPS para a porta 443.
iptables-A INPUT-i tcp eth0-p - dport 443-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 443-m state - state ESTABLISHED-j ACCEPT

7. Combine várias regras em conjunto, utilizando MultiPorts

Quando você está permitindo conexões de entrada de mundo exterior a várias portas, em vez de escrever regras individuais para cada porta, você pode combiná-los usando a extensão de múltiplas como mostrado abaixo.
O exemplo a seguir permite que todos SSH de entrada, tráfego HTTP e HTTPS.
iptables-A INPUT-i eth0-p tcp-m multiport - dports 22,80,443-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp-m multiport - Esportes 22,80,443-m state - state ESTABLISHED-j ACCEPT

8. Permitir SSH Outgoing

As seguintes regras permitem a conexão ssh saída. ou seja, quando você ssh de dentro para um servidor externo.
iptables-A OUTPUT-o eth0-p tcp - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A INPUT-i tcp eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT
Por favor note que este é um pouco diferente do que a regra de entrada. ie Nós permitimos que tanto o novo estado e estabelecida com chain OUTPUT, e único estado ESTABELECIDO na chain INPUT. Para a regra de entrada, que é vice-versa.

9. Permitir SSH saída apenas para uma Rede Específico

As seguintes regras permitem a conexão ssh de saída apenas para uma rede específica. ou seja, você um ssh apenas para 192.168.100.0/24 rede pelo lado de dentro.
iptables-A OUTPUT-o eth0-p tcp-d 192.168.100.0/24 - dport 22-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A INPUT-i tcp eth0-p - sport 22-m state - state ESTABLISHED-j ACCEPT

10. Permitir saída HTTPS

As seguintes regras permitem o tráfego seguro de saída web. Isso é útil quando você quer permitir o tráfego de internet para seus usuários. Em servidores, essas regras também são úteis quando você quer usar o wget para baixar alguns arquivos de fora.
iptables-A OUTPUT-o eth0-p tcp - dport 443-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A INPUT-i tcp eth0-p - sport 443-m state - state ESTABLISHED-j ACCEPT
Nota: Para o tráfego HTTP web saída, adicionar duas regras adicionais, como o acima, e mudar 443-80.

11. Carregar saldo a receber o tráfego da Web

Você também pode carregar equilibrar o seu tráfego web da usando regras de firewall iptables.
Este usa o iptables extensão enésima. O seguinte exemplo de carga equilibra o tráfego HTTPS para três endereço IP diferente. Para cada pacote 3 º, é balanceamento de carga para o servidor apropriado (usando o contador 0).
iptables-A PREROUTING-i eth0-p tcp - dport 443-m state - Estado de Nova-m enésimo - contador 0 - a cada 3 - pacote 0-j DNAT - to-destination 192.168.1.101:443
iptables-A PREROUTING-i eth0-p tcp - dport 443-m state - Estado de Nova-m enésimo - contador 0 - a cada 3 - pacote 1-j DNAT - to-destination 192.168.1.102:443
iptables-A PREROUTING-i eth0-p tcp - dport 443-m state - Estado de Nova-m enésimo - contador 0 - a cada 3 - pacote 2-j DNAT - to-destination 192.168.1.103:443

12. Permitir Ping de fora para dentro

As seguintes regras permitem que os usuários de fora para ser capaz de executar ping seus servidores.
iptables-A INPUT-p icmp - icmp-type echo-request-j ACCEPT
iptables-A OUTPUT-p icmp - icmp-type echo-reply-j ACCEPT

13. Permitir Ping de dentro para fora

As seguintes regras permitem que você pingar de dentro para qualquer um dos servidores externos.
iptables-A OUTPUT-p icmp - icmp-type echo-request-j ACCEPT
iptables-A INPUT-p icmp - icmp-type echo-reply-j ACCEPT

14. Permitir Loopback Acesso

Você deve permitir o acesso de auto-retorno completo em seus servidores. ou seja, acesso usando 127.0.0.1
iptables-A INPUT-i lo-j ACCEPT
iptables-A OUTPUT-o lo-j ACCEPT

15. Permitir rede interna para a rede externa.

No servidor de firewall, onde uma placa ethernet está ligado ao externo, e outra placa de rede conectada aos servidores internos, use as seguintes regras para permitir conversa da rede interna para a rede externa.
Neste exemplo, eth1 está ligado à rede externa (internet), e eth0 está ligado à rede interna (por exemplo: 192.168.1).
iptables-A FORWARD-i eth0-o eth1-j ACCEPT

16. Permitir DNS saída

As seguintes regras permitem conexões DNS saída.
iptables-A OUTPUT-p udp-o eth0 - dport 53-j ACCEPT
iptables-A udp-i eth0 INPUT-p - sport 53-j ACCEPT

17. Permitir conexões NIS

Se você estiver executando o NIS para gerenciar suas contas de usuário, você deve permitir que as conexões NIS. Mesmo quando a conexão SSH é permitido, se você não permitir que o NIS relacionado conexões ypbind, os usuários não poderão se autenticar.
As portas do NIS são dinâmicas. ou seja, quando o ypbind começa ele aloca as portas.
Primeiro faça uma rpcinfo-p, como mostrado abaixo e obter os números de porta. Neste exemplo, verificou-se através da porta 853 e 850.
rpcinfo-p | grep ypbind
Agora, permita conexão de entrada para a porta 111, e as portas que foram usadas por ypbind.
iptables-A INPUT-p tcp - dport 111-j ACCEPT
iptables-A INPUT-p udp - dport 111-j ACCEPT
iptables-A INPUT-p tcp - dport 853-j ACCEPT
iptables-A INPUT-p udp - dport 853-j ACCEPT
iptables-A INPUT-p tcp - dport 850-j ACCEPT
iptables-A INPUT-p udp - dport 850-j ACCEPT
O texto acima não irá funcionar quando você reiniciar o ypbind, como ele vai ter diferentes números de porta nesse momento.
Há duas soluções para isso: 1) Usar endereço IP estático para o seu NIS, ou 2) Use algumas técnicas inteligentes shell script para pegar automaticamente o número de porta dinâmica da saída do comando "rpcinfo-p", e usá-las no acima regras de iptables.

18. Permitir Rsync de uma rede específica

As regras a seguir permite rsync apenas a partir de uma rede específica.
iptables-A INPUT-i eth0-p tcp-s 192.168.101.0/24 - dport 873-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 873-m state - state ESTABLISHED-j ACCEPT

19. Permitir apenas conexão com o MySQL a partir de uma rede específica

Se você estiver executando o MySQL, normalmente você não quer permitir a ligação directa do exterior. Na maioria dos casos, você pode ter servidor web rodando no mesmo servidor onde o banco de dados MySQL é executado.
No entanto DBA e os desenvolvedores podem precisar entrar diretamente para o MySQL a partir de seu laptop e desktop usando o cliente MySQL. Nesses casos, você pode querer permitir que sua rede interna para falar com o MySQL diretamente, como mostrado abaixo.
iptables-A INPUT-i eth0-p tcp-s 192.168.100.0/24 - dport 3306-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 3306-m state - state ESTABLISHED-j ACCEPT

20. Permitir Sendmail ou Postfix Tráfego

As seguintes regras permitem o tráfego de correio. Pode ser sendmail ou postfix.
iptables-A INPUT-i tcp eth0-p - dport 25-m state - Estado Novo, ESTABLISHED-j ACCEPT
iptables-A OUTPUT-tcp o eth0-p - sport 25-m state - state ESTABLISHED-j ACCEPT

21. Permitir IMAP e IMAPS

As seguintes regras permitem o tráfego IMAP/IMAP2.
iptables-A INPUT-i tcp eth0-p - dport 143-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 143-m state - state ESTABLISHED-j ACCEPT
As seguintes regras permitem o tráfego IMAPS.
iptables-A INPUT-i tcp eth0-p - dport 993-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 993-m state - state ESTABLISHED-j ACCEPT

22. Permitir POP3 e POP3S

As seguintes regras permitem o acesso POP3.
iptables-A INPUT-i tcp eth0-p - dport 110-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 110-m state - state ESTABLISHED-j ACCEPT
As seguintes regras permitem o acesso POP3S.
iptables-A INPUT-i tcp eth0-p - dport 995-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 995-m state - state ESTABLISHED-j ACCEPT

23. Prevenir Ataque Dos

A seguinte regra de iptables irá ajudá-lo a evitar a negação de serviço (DoS) ataque em seu servidor web.
iptables-A INPUT-p tcp - dport 80-m limit - limit 25/minute - limit-burst 100-j ACCEPT
No exemplo acima:
  • -M limit: Este usa a extensão iptables limite
  • -Limite 25/minute: Isso limita apenas máximo de 25 conexão por minuto. Altere este valor com base em sua exigência específica
  • -Burst-limit 100: Esse valor indica que o limite / minuto será aplicada somente depois que o número total de conexão tenham atingido o nível-limite de ruptura.

24. Port Forwarding

As seguintes vias exemplo todo o tráfego que vem da porta 442-22. Isto significa que a ligação ssh entrada pode vir tanto a porta 22 e 422.
fila-A PREROUTING iptables-t-p TCP-d 192.168.102.37 - dport 422-j DNAT - to 192.168.102.37:22
Se você fizer o acima, você também precisa permitir explicitamente conexão de entrada na porta 422.
iptables-A INPUT-i tcp eth0-p - dport 422-m state - Estado Novo, ESTABELECIDO-j ACCEPT
iptables-A OUTPUT-o eth0-p tcp - sport 422-m state - state ESTABLISHED-j ACCEPT

25. Registrar pacotes descartados

Você também pode querer registrar todos os pacotes perdidos. Estas regras devem ser na parte inferior.
Primeiro, crie uma nova corrente chamada de registro.
iptables-N REGISTRO
Em seguida, verifique se todas as conexões de entrada restantes saltar para a cadeia de log como mostrado abaixo.
iptables-A INPUT-j REGISTRO
Em seguida, registrar esses pacotes, especificando um costume "log-prefix".
iptables-A limite REGISTRO-m - limite 2/min-j LOG - log-prefix "IPTables Packet Dropped:" - log-level 7
Finalmente, soltar esses pacotes.
iptables-A REGISTRO-j DROP
Todas as 25 regras do iptables acima estão em formato de script shell: iptables-rules