ELK de log centralizado para prática de arquitetura de equipe de P & D de pequeno e médio porte

Autor Zhang Huiqing, Yang Li

Editar Xiaozhi

Na comunidade, não é a falta de diagramas de arquitetura, mas a falta de práticas práticas de implementação da arquitetura de referência. A estrutura das grandes empresas sempre parece inconsciente, mas quando é realmente usada como referência, muitas vezes é impossível iniciar. Talvez as práticas arquitetônicas de equipes de P&D de pequeno e médio porte possam ser copiadas? Este artigo é o sexto da coluna de Zhang Huiqing - "Prática de arquitetura de equipes de P&D para pequenas e médias empresas". Hoje falamos sobre o ELK.

Apêndice à série de artigos

Os seguintes artigos podem ser lidos clicando no título

Um registro centralizado

Os logs podem ser divididos em logs do sistema, logs de aplicativos e logs de negócios.Os logs do sistema são usados pelo pessoal de O&M, os logs de aplicativos são usados pelo pessoal de P&D e os logs de negócios são utilizados pelos operadores comerciais. Nós explicamos principalmente aqui Log de aplicativo , Por meio do log do aplicativo, para entender as informações e o status do aplicativo, além de analisar a causa do erro do aplicativo.

Com a crescente complexidade do sistema e o advento da era do big data, é comum precisar de dezenas ou mesmo centenas de servidores, portanto, é urgente a necessidade de um conjunto de produtos que possam ser gerenciados centralmente para logs. O ELK implementa uma plataforma centralizada de gerenciamento de logs que cobre uniformemente o gerenciamento centralizado de coleta, recuperação, estatística, análise e gerenciamento de informações distribuídas de logs.

1.1 Introdução ao ELK

ELK é a abreviação de Elasticsearch, Logstash e Kibana.A combinação desses três conjuntos de ferramentas de código aberto pode criar uma poderosa plataforma centralizada de gerenciamento de logs.

O Elasticsearch é um mecanismo de pesquisa distribuído de código aberto que fornece três funções: pesquisa, análise e armazenamento de dados. Suas características são: descoberta distribuída, automática, fragmentação automática de índice, mecanismo de cópia de índice, interface de estilo RESTful, várias fontes de dados e carregamento automático de pesquisa.

O Logstash é uma ferramenta de código aberto para coletar, analisar e filtrar logs. Suporta praticamente qualquer tipo de log, incluindo log do sistema, log comercial e log de segurança. Ele pode receber logs de várias fontes, incluindo Syslog, sistema de mensagens (como RabbitMQ) e Filebeat; pode gerar dados de várias maneiras, incluindo email, WebSockets e Elasticsearch.

Kibana é uma interface gráfica amigável baseada na Web para pesquisar, analisar e visualizar dados armazenados no Elasticsearch. Ele usa a interface RESTful do Elasticsearch para recuperar dados, não apenas permitindo que os usuários personalizem a exibição do painel, como também consultando, resumindo e filtrando dados de uma maneira especial.

1.2, arquitetura ELK

A figura a seguir é o diagrama da arquitetura do ELK de gerenciamento de log centralizado. Por motivos de desempenho, optamos por usar o formato Beats + EK para criar um sistema centralizado de gerenciamento de logs.

Arquitetura ELK

Segundo, o método de configuração

2.1, Elasticsearch

Após a conclusão da implantação do Elasticsearch, é necessário alterar as principais propriedades no arquivo de configuração elasticsearch.yml: cluster.name, node.name, network.host, discovery.zen.ping.unicast.hosts. Entre eles, quando o Elasticsearch é implantado no modo de cluster, a propriedade discovery.zen.ping.unicast.hosts precisa ser configurada.

2.2, Logstash

Configurando Entrada, Filtro (opcional) e Saída no arquivo filebeat-pipeline.conf para concluir a coleta, filtragem e saída de dados, conforme mostrado na figura a seguir:

Configuração do Logstash

Em seguida, use o arquivo filebeat-pipline.conf para ativar o serviço Logstash, conforme mostrado na figura a seguir:

Habilitar o serviço Logstash

Nota: Como a solução Beats + EK é usada para implementar o gerenciamento centralizado de logs, o Logstash não é necessário.

2.3, Kibana

Alterando o conteúdo do arquivo de configuração kibana.yml para conectar-se ao endereço de serviço Elasticsearch correto, geralmente você só precisa configurar a propriedade elasticsearch.url, consulte a primeira figura abaixo. Após a conclusão da configuração, execute o comando [bin / kibana &] para ativar o serviço Kibana, consulte a segunda figura abaixo. Por fim, você pode abrir a página de gerenciamento do Kibana (endereço de acesso: no navegador para visualizar o log.

Instruções de configuração do Kibana

Ativar serviço Kibana

2.4, Batida de arquivo

O conteúdo do arquivo de configuração filebeat.yml inclui principalmente Filebeat, Output, Shipper (opcional) e Log (opcional ).O Filebeat define principalmente as informações do arquivo de log para monitoramento, e Output configura principalmente o destino de saída dos dados do log.

No arquivo filebeat.yml, as convenções de nomenclatura para os principais valores de atributo são as seguintes:

1. A convenção de nomenclatura para fields.AppID é {AppID}.

2. A convenção de nomenclatura de fields.AppName é {nome da linha de produtos em inglês}. {Nome em inglês do projeto} (se o nome em inglês do projeto for composto por 2 ou mais palavras em inglês, use. Para separar as palavras).

3. Observe que, para o atributo index: o valor definido pelo index (index) é {nome da linha de produtos em inglês}, mas as letras em inglês devem estar todas em minúsculas e não podem começar com sublinhado nem conter vírgula.

O exemplo de configuração de filebeat.yml é mostrado na figura abaixo:

Configuração de amostra de filebeat.yml

Em qual servidor o arquivo de log está armazenado, o servidor no qual o serviço de batida de arquivo está implantado. Etapas para habilitar o serviço de arquivo no sistema operacional Windows:

1. Inicie a pesquisa em janelas, insira powershell, abra o local do arquivo do powershell, clique com o botão direito do mouse em powershell.exe para executar como administrador e entre na janela do PowerShell.

Ou inicie o cmd.exe como administrador, digite o comando powershell e a janela do PowerShell.

Nota:

Certifique-se de abrir a janela do PowerShell como administrador; caso contrário, se você executar o script .ps1 na etapa 2 abaixo, você receberá um erro dizendo que não tem permissão para criar um serviço de batida de arquivo:

2. Navegue para o diretório em que o programa de execução de batida de arquivo está localizado, por exemplo: cd 'E: \ ELK \ filebeat-1.3.0-windows' e execute o comando: powershell.exe -ExecutionPolicy -Recursos-sem restrições-arquivo. \ Install-service-filebeat.ps1.

3. Você pode usar os seguintes comandos para exibir, ativar e parar o serviço de batida de arquivo na janela do PowerShell:

  • Exibir status do serviço de batida de arquivo

  • Inicie o serviço de batida de arquivo: Batida de arquivo de serviço inicial

  • Interrompa o serviço de batida de arquivo

3. Como usar

3.1, log local do Log4Net

1. Especificação do caminho de armazenamento de log: {letra da unidade}: \ Log4Net {AppID} \, em que AppID é o código de seis dígitos do projeto que fizemos. Por exemplo: D: \ Log4Net \ 110107 \.

2. Conteúdo da configuração do Log4net.config:

< ? xml version = "1.0" encoding = "utf-8"? >   < configuração >   < configSections >   < nome da seção = "log4net" type = "System.Configuration.IgnoreSectionHandler" / >   < / configSections >   < configurações do aplicativo >   < / configurações do aplicativo >   < log4net >   < nome do aplicativo = "FileAppender" type = "log4net.Appender.RollingFileAppender" >   < ! -AppID 150202, usado para distinguir o log de qual aplicativo- >   < valor do arquivo = "D: \ Log4Net \ 150202 \" / >   < valor rollingStyle = "Composto" / >   < Valor datePattern = "aaaa-MM-dd" .log "" / >   < staticLogFileName value = "false" / >   < nome do parâmetro = "Encoding" value = "utf-8" / >   < valor maximumFileSize = "100MB" / >   < valor countDirection = "0" / >   < valor maxSizeRollBackups = "100" / >   < appendToFile value = "true" / >   < tipo de layout = "log4net.Layout.PatternLayout" >   < conversionPattern value = "hora do log:% date thread: nível do log:% -5 classe de registro de nível:% logger log de mensagem:% logger log message:% message% newline" / >   < / layout >   < / appender >   < nome do criador de logs = "FileLogger" addivity = "false" >   < valor do nível = "DEBUG" / >   < appender-ref ref = "FileAppender" / >   < / logger >   < / log4net >   < / configuração >

Notado:

  • O maximumFileSize está definido como 100 MB; defina countDirection como um número inteiro maior que -1; maxSizeRollBackups está definido como 100.

  • Especificação de conteúdo do arquivo de log: cada requisito de conteúdo de log no arquivo de log é "mensagem de log de classe de erro no nível do log do encadeamento no tempo de gravação".

3.2, consulta de log

Com base no log de consulta do Kibana (endereço de acesso: principalmente através das seguintes etapas:

1. Selecione a biblioteca de índices de negócios.

2. Selecione o período.

3. Digite o conteúdo a ser pesquisado para obter uma consulta precisa ou digite * para uma consulta difusa.

4. Clique no ícone de expansão de cada log para visualizar as informações detalhadas do log.

5. Na área esquerda da interface do Kibana, de cima para baixo estão a caixa de seleção da biblioteca de índices, a lista de coleções de campos selecionados (Campos Selecionados) e a lista de coleções de campos disponíveis (Campos Disponíveis). Altere a apresentação da tabela de logs à direita do Kibana adicionando campos disponíveis à lista de conjuntos de campos selecionados.

Por favor, consulte a seguinte imagem:

Interface de log de consulta do Kibana

4. Download da demonstração e mais informações

  • :

    https://github.com/das2017/Log4NetDemo

  • Site oficial ELK :

    https://www.elastic.co/

  • Instruções de configuração de expressão regular :

    https://www.elastic.co/guide/en/beats/filebeat/current/regexp-support.html

Sobre o autor

Zhang Huiqing, veterano em TI por mais de 10 anos, atuou sucessivamente como Arquiteto Ctrip, Arquiteto Chefe do Grupo Guda, CTO da CTS, etc., e liderou a atualização e transformação da arquitetura técnica das duas empresas. Agora preste atenção à arquitetura e eficiência de engenharia, correspondência e integração de tecnologia e negócios, valor tecnológico e inovação.

Yang Li, que tem muitos anos de experiência em pesquisa e desenvolvimento de sistemas de aplicativos para Internet, trabalhou no Grupo Guda e atualmente é um arquiteto de sistemas de Zhongqing Yiyou. Ele é o principal responsável pelo projeto de arquitetura de sistemas de negócios do centro de P&D da empresa e pela acumulação e treinamento de novas tecnologias. Nesta fase, nos concentramos principalmente em software de código aberto, arquitetura de software, microsserviços e big data.

Viagem a manchete do show "mascote"? "Nongmeidayan" o primeiro monge não concorda
Anterior
Amazon lançou drama "Hannah", o mais recente trailer na publicidade Globos de Ouro, mulheres estréia Hanna
Próximo