ELK日志分析系統(2)-logspout收集容器日志


 

1. 概述

  安裝了ELK之后,就是要考慮怎么獲取log數據了。

  收集log數據的方式有很多種:

  1). beats采集數據發布到logstash

  2). Filebeat采集數據發布到logstash

  3). logspout, 自動把docker下的所有容器的所有日志發布到logstash

  4). python logstash庫直接發布日志到logstash

  5). 原始容器日志記錄的目錄作為一個卷(volume),並且讓其他容器使用--volumes-from選項來繼承這個卷

  6). 容器日志docker run --log-driver=syslog --log-opt syslog-address=tcp://:5000

  考慮到4-6多多少少都要修改業務代碼,不夠邏輯分離,暫時不考慮;1-2研究了下安裝比3麻煩,所以最后采用3的方式來收集容器日志

2. 服務管理

  2.1. github地址

  https://github.com/gliderlabs/logspout

  2.1. docker部署

sudo docker run -d --name="logspout" --volume=/var/run/docker.sock:/var/run/docker.sock --volume=/etc/hostname:/etc/host_hostname:ro --publish=192.168.1.165:8000:80 -e LOGSPOUT=ignore  gliderlabs/logspout syslog+tcp://192.168.1.165:5001

  本身的日志是沒有意義的,所以這邊會禁止logspout, -e LOGSPOUT=ignore

  收集到的日志會轉發到logstash的5001端口:syslog+tcp://192.168.1.165:5001

  logspout支持查看所有收集到的日志,地址是:http://192.168.1.165:8000/logs

  查看容器:

b929e22ee74c   gliderlabs/logspout   "/bin/logspout syslo…"    2 days ago     Up 31 hours       192.168.1.165:8000->80/tcp          logspout

  查看容器日志:

 

 

3. logspout忽略設置

  只要安裝了logspout,那么這個主機上面的所有容器的日志都會被收集,如果想日志不被收集給容器設置環境變量LOGSPOUT=ignore

  3.1. docker部署

sudo docker run -d -e LOGSPOUT=ignore  xxxxxx

  

  3.2. docker-compose部署

  

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xms1g -Xmx3g"
      ELASTIC_PASSWORD: changeme
      LOGSPOUT: ignore
    networks:
      - elk

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM