EFK日志监控系统最佳实践,已在生产环境验证过(ELK日志监控系统升级版)

本次主要讨论在java开发过程中,经常使用到的日志监控平台。技术选型有Elasticsearch、Filebeat、Kibana。适用于java应用实例少于50个的场景。软件版本统一为最新的6.5.0,操作系统为centos7.4。以下为整个安装、配置、部署的流程。

Elasticsearch的安装配置部署

  1. 把tar包下载到/usr/local/src目录下。
  2. 使用[ tar -zxvf elasticsearch-6.5.0.tar.gz -C /usr/local/ ]命令解压tar包。
  3. 使用[ ln -s /usr/local/elasticsearch-6.5.0 elasticsearch ]命令建立软连接。
  4. 修改 /usr/local/elasticsearch/config/elasticsearch.yml 配置文件。
    # 集群名称,单机版使用默认即可
    cluster.name: my-application
    # 节点名称,单机版使用默认即可
    node.name: node-1
    # 数据存放的路径
    path.data: /var/lib/elasticsearch
    # 应用日志存放的路径
    path.logs: /var/log/elasticsearch
    # 服务绑定的IP地址
    network.host: x.x.x.x
    # 服务监听的端口
    http.port: 9200

     

  5. es不能以root用户身份运行,所以要创建新的用户组和用户名称
    # 创建用户组
    groupadd elsearch
    # 创建用户
    useradd elsearch -g elsearch -p elasticsearch
    
    # 把es要用到的路径都设置成的文件组权限设置成新的用户组和用户
    chown -R elsearch:elsearch /usr/local/elasticsearch
    chown -R elsearch:elsearch /var/lib/elasticsearch
    chown -R elsearch:elsearch /var/log/elasticsearch

     

  6.  启动es
    # 修改操作系统参数
    vi /etc/sysctl.conf
    vm.max_map_count=262144
    
    /etc/security/limits.conf
    * - nofile 65536
    * - memlock unlimited
    
    # 切换到es用户
    su elsearch
    # 以后台服务运行
    /usr/local/elasticsearch/bin/elasticsearch -d

     

Kibana安装配置部署

  1. 把 kibana-6.5.0-linux-x86_64.tar.gz 包下载到/usr/local/src目录下。
  2. 使用[ tar -zxvf kibana-6.5.0-linux-x86_64.tar.gz -C /usr/local/ ]命令解压tar包。
  3. 使用[ ln -s /usr/local/kibana-6.5.0-linux-x86_64 kibana ]命令建立软连接。
  4. 修改 /usr/local/kibana/config/kibana.yml 配置文件
    # 服务端口
    server.port: 5601
    # 服务器主机IP地址
    server.host: "x.x.x.x"
    # es索引服务器地址与上一步配置es时的地址相同
    elasticsearch.url: "http://x.x.x.x:9200"

     

  5. 除了es之外,其它服务都可以root身份运行
    # 先前台运行看有没有报错
    /usr/local/kibana/bin/kibana
    # 让服务在后台运行
    nohup /usr/local/kibana/bin/kibana &

     

Filebeat安装配置部署(轻量级,高效数据采集引擎)

  1. 把 filebeat-6.5.0-linux-x86_64.tar.gz 包下载到/usr/local/src目录下。
  2. 使用[ tar -zxvf filebeat-6.5.0-linux-x86_64.tar.gz -C /usr/local/ ]命令解压tar包。
  3. 使用[ ln -s /usr/local/filebeat-6.5.0-linux-x86_64 filebeat ]命令建立软连接。
  4. 修改 /usr/local/filebeat/filebeat.yml 配置文件
    # 配置输入插件,注意是yml格式
    filebeat.inputs:
    # 数据来源是log日志文件
    - type: log
      enabled: true
    # 日志文件路径
      paths:
        - /var/log/xhg/logbackjson_*.log
    
    # 解释内容格式为json的日志,此步很关键,java应用写出的日志内容格式必须为json
      json.keys_under_root: true
      json.add_error_key: true
      json.message_key: log
      json.overwrite_keys: true
    # 额外的标识字段,可以于区分是来自于哪个应用
      fields:
        log_type: logbackjson
    
    # 配置多个log数据源
    - type: log
    
      # Change to true to enable this input configuration.
      enabled: true
    
      # Paths that should be crawled and fetched. Glob based paths.
      paths:
        - /var/log/xhg/gateway/*.log
    
      json.keys_under_root: true
      json.add_error_key: true
      json.message_key: log
      json.overwrite_keys: true
    
      fields:
        log_type: gateway
    
    # 当输出插件中要使用自定义索引名称的时候配置这个
    setup.template.name: "cobee"
    setup.template.pattern: "cobee-*"
    
    # 配置数据输出目标地,这时候为elasticsearch
    output.elasticsearch:
      # Array of hosts to connect to.
      hosts: ["172.18.219.11:9200"]
      index: "xhg-ms-%{+yyyy.MM.dd}"
    
    
    # 其它配置项保持默认即可

     

  5.  起动filebeat
    # 后台起动filebeat,filebeat是一个轻量级的数据采集引擎,不需要安装jdk,不像logstash那么笨重
    /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml

     

Spring boot应用配置日志文件以json格式输出

  1. 引入maven依懒
    
        net.logstash.logback
        logstash-logback-encoder
        5.2
    
    
    # 当网络条件不好的时候,可以尝试使用阿里的中央仓库
             
    		
    			alimaven
    			aliyun maven
    			http://maven.aliyun.com/nexus/content/groups/public/
    			
    				true
    			
    			
    				false
    			
    		
    	

     

  2.  修改logback.xml配置文件,使java应用打印出来的日志以json格式来显示,并且一个日志占用一行,这样对于elk处理非常简单方便高效。
    # 把原来的文件appender的encoder注释掉,替换成下面配置
    
    
    # 此时java应用打印出来的日志就是以json格式来显示的了,并且一个日志占用一行,对于elk处理非常简单方便高效

     

你可能感兴趣的:(运维)