微服务之分布式日志 ELK

分布式事务

  1. 什么是分布式事务
    1. 在分布式应用中,日志被分布在不同的设备上,为了方便集中管理日志并且得到相应的预期结果,这就是分布式日志.
  2. 为什么使用分布式日志
    1. 化繁为简,提高日志处理速度

ELK

  1. ELK其实是Elasticsearch, Logstash, Kibana的首字母,通过它们的整合使用,将所有节点上的日志统一收集,管理,访问。其工作流程如下:
    在这里插入图片描述

  2. Elasticsearch: 是个开源分布式搜索引擎

    1. 下载地址

    2. 解压并进入config目录, elasticsearch.yml

      node.name: node-1
      path.data: /usr/local/elasticsearch/elasticsearch-7.1.1/data
      path.logs: /usr/local/elasticsearch/elasticsearch-7.1.1/logs
      network.host: 127.0.0.1
      http.host: 0.0.0.0
      http.port: 9200
      discovery.seed_hosts: ["127.0.0.1"]
      cluster.initial_master_nodes: ["node-1"]
      
    3. 创建一个用户

      1. useradd es
      2. chown -R es:es /usr/local/elasticsearch/elasticsearch-7.1.1
      3. su es
      4. /usr/local/elasticsearch/elasticsearch-7.1.1/bin/elasticsearch -d
      5. curl http://localhost:9200
  3. Logstash: 是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据

    1. 文件下载地址

    2. 解压并进入bin目录, vim logstash-elasticsearch.conf

      input {
      	stdin {}
      }
      output {
      	elasticsearch {
      		hosts => '192.168.88.166:9200'
      	}
      	stdout {
      		codec => rubydebug
      	}
      }
      

    3.启动 ./logstash -f logstash-elasticsearch.conf

  4. Kinaba: 使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作

    1. 文件下载地址

    2. 解压并进入config目录

    3. vim kibana.yml

      server.port: 5601 
      server.host: "0.0.0.0" 
      elasticsearch.hosts: ["http://192.168.88.166:9200"] 
      kibana.index: ".kibana"
      
    4. 授权es用户: chown -R es:es /usr/local/kibana

    5. 切回es用户并启动 su - es

      /usr/local/kibana/kibana-7.9.1-linux-x86_64/bin/kibana &
      
    6. 访问: http://192.168.88.166:5601/

    7. 切换为中文, 在config/kibana.yml添加

      i18n.locale: "zh-CN"
      
  5. 日志收集:
    1. 对应服务器安装logstash,配置规则,例如新建logstash-apache.conf

    input {
      file {
        path => "/home/project/logs/sys-*.log"
    	start_position => beginning
    	sincedb_path => "/dev/null"
    	codec => multiline {
          pattern => "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"
          negate => true
          auto_flush_interval => 3
          what => previous
        }
      }
    }
    
    filter {
      if [path] =~ "info" {
        mutate { replace => { type => "sys-info" } }
        grok {
          match => { "message" => "%{COMBINEDAPACHELOG}" }
        }
        date {
          match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
        }
      } else if [path] =~ "error" {
        mutate { replace => { type => "sys-error" } }
      } else {
        mutate { replace => { type => "random_logs" } }
      }
    }
    
    output {
      elasticsearch {
        hosts => '192.168.88.166:9200'
      }
      stdout { codec => rubydebug }
    }
    
    1. 启动logstash: ./logstash -f logstash-apache.conf
    2. 通过kibana即可看到各个服务日志情况
      在这里插入图片描述

总结

  1. 阅读微服务相关的姊妹篇可以更好的理解本文哦
  2. 文章列表
    1. 微服务之网关篇 Spring Cloud Gateway
    2. 微服务之注册中心篇 Nacos
    3. 微服务之配置中心篇 Naocs
    4. 微服务之远程调用篇 OpenFeign
    5. 微服务之服务监控篇 Actuator&Admin
    6. 微服务之链路追踪篇 Skywalking
    7. 微服务之分布式事务篇 Seata
    8. 微服务思想介绍
    9. 微服务之熔断与降级篇 Sentinel
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐