美文网首页
日志收集ELK 实践

日志收集ELK 实践

作者: zhaoxianqiang | 来源:发表于2019-07-27 06:24 被阅读0次

    ELK 是什么毋庸多说,下面是用filebeat 收集nginx的访问日志和错误日志的实践。

    安装

    前提条件

    1. 准备三台主机
      10.10.10.1
      10.10.10.2
      10.10.10.3
    2. 安装好docker,docker-compose
    3. 国内主机的话要配置好docker 加速

    elasticsearch docker 安装

    用普通的下载源码包安装也可以,但是有些设定不对的话,会报各种的错误,如文件描述符个数,进程数量,执行用户权限等等问题。
    采用docker 安装非常省事,强烈推荐。
    1.进入第一台主机,拉取镜像

    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.2.0
    
    1. 新建 docker-compose.yaml 文件
    version: '2.2'
    services:
     es01:
       image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
       container_name: es01
       environment:
         - node.name=es01
         - discovery.seed_hosts=0
         - network.host=0
         - cluster.initial_master_nodes=es01
         - cluster.name=docker-cluster
         - bootstrap.memory_lock=true
         - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
       ulimits:
         memlock:
           soft: -1
           hard: -1
       volumes:
         - esdata01:/usr/share/elasticsearch/data
       ports:
         - 9200:9200
       networks:
         - esnet
    volumes:
     esdata01:
       driver: local
    networks:
    esnet:
    
    
    1. 启动
    docker-compose up -d
    
    1. docker-compose ps 查看启动结果


      image.png

    kibana 安装

    1. 进入第二台主机,拉取镜像
    docker pull docker.elastic.co/kibana/kibana:7.2.0
    
    1. 新建 docker-compose.yaml 文件
    version: '2'
    services:
      kibana:
        image: docker.elastic.co/kibana/kibana:7.2.0
        environment:
          SERVER_NAME: kibana
          ELASTICSEARCH_HOSTS: http://10.10.0.1:9200
        ports:
          - 5601:5601
    

    ELASTICSEARCH_HOSTS 环境变量是elasticsearch 的主机地址,
    5601 是对外公开的端口。

    1. 启动
    docker-compose up -d
    
    1. docker-compose ps 查看启动结果


      image.png

    5.浏览器查看kibana

    http://公开ip:5601
    
    image.png

    看到这图就证明以上安装是OK的了。

    filebeat 安装

    1. 进入第三台主机,安装filebeat
      kibana 主页面 点击add log data ,有各种log 收集安装的方法,
      我们这次收集nginx 日志,选择Nginx logs
    2. 首先安装 nginx
    3. 安装 Filebeat
    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-darwin-x86_64.tar.gz
    tar xzvf filebeat-7.2.0-darwin-x86_64.tar.gz
    cd filebeat-7.2.0-darwin-x86_64/
    
    1. 编辑配置
      filebeat.yml
    output.elasticsearch:
      hosts: ["10.10.0.1:9200"] 
    setup.kibana:
      host: "10.10.0.2:5601"
    
    1. 对nginx 日志文件路径进行设定

    module/nginx/access/manifest.yml

        default:
          - /usr/local/nginx/logs/access.log*
    

    /usr/local/nginx/logs/access.log* 是对应nginx 文件的访问日志

    module/nginx/error/manifest.yml

        default:
          - /usr/local/nginx/logs/error.log*
    
    

    /usr/local/nginx/logs/error.log* 是对应nginx 文件的错误日志

    1. 启动日志收集
    • NGINX 启动
    nginx 
    
    • filebeat 启动
    ./filebeat setup
    ./filebeat -e
    

    生成nginx 日志

    多访问几次第三台主机的URL ,
    10.10.10.3
    10.10.10.3/test

    kibana 中查看日志数据

    下面的路径进入
    [Home] -> Add data -> Nginx logs
    下面是效果,按请求地统计的访问数量,一目了然。


    image.png
    • 查看原始log
      点击[Nginx access and error logs] 链接


      image.png
    image.png

    是不是比看文本文件好多了呢?

    总结

    • docker 容器方式安装,省时省力
    • elasticsearch 是数据存储
    • kibana 是数据展示
    • filebeat 是数据收集,当然不仅仅收集nginx log ,系统性能数据等都可以
      需要不断的探索,就能找到属于你的数据。
      谢谢!

    相关文章

      网友评论

          本文标题:日志收集ELK 实践

          本文链接:https://www.haomeiwen.com/subject/mjqsrctx.html