天天看点

日志收集分析利器-ELK加FileBeat

前言

依旧是上次的朋友, 项目搭建完后又想搞一手日志分析玩玩, 其实他的日志已经统一输出到一个文件里面了, 接elk属实没啥必要, 不过玩一玩还是可以的

日志收集分析利器-ELK加FileBeat

下面就是具体的操作步骤了

安装docker-compose

pip install --upgrade pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U docker-compose
           

编写配置文件

别忘了把127.0.0.1 替换成自己的ip地址

创建挂载目录

mkdir -p /data/elk/es /data/elk/filebeat
cd /data/elk
           

小技巧

linux vim下粘贴文件可能会存在格式文件, 在粘贴前进入paste模式

然后在插入模式下进行粘贴就好了

编写 filebeat配置

vim filebeat.yml

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /data/docker/logs/*/*.log   # 你的日志路径

#============================= Filebeat modules ===============================

filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml
  # Set to true to enable config reloading
  reload.enabled: true

output.logstash:
  # The Logstash hosts
  hosts: ["127.0.0.1:5044"]  # logstash 配置

           

编写 logstash 配置

vim logstash.conf

input {
    beats {
        port => 5044   # 端口配置
        host => "0.0.0.0"
    }
}

output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]  # es地址
    }
    stdout {
        codec => rubydebug
    }
}
           

vim logstash.yml

xpack.monitoring.elasticsearch.hosts: ["http://127.0.0.1:9100"]
#xpack.monitoring.elasticsearch.username: "" 
#xpack.monitoring.elasticsearch.password: ""
           

编写docker-compose

vim docker-compose.yml

version: "3.2"
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
    container_name: es
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - 9200:9200
    networks:        # 保证同网络
      - "elk-net"
  filebeat:
    image: docker.elastic.co/beats/filebeat:7.4.2
    container_name: filebeat
    volumes:
      - type: bind
        source: "/data/elk/filebeat"
        target: "/data"
      - type: bind
        source: "/data/elk/filebeat.yml"
        target: "/usr/share/filebeat/filebeat.yml"
      - type: bind
        source: "/data/docker/logs"   # 替换成自己的docker日志路径/服务日志路径
        target: "/data/docker/logs"
      - type: bind
        source: "/etc/localtime"      # 同步时区
        target: "/etc/localtime"
    networks:
      - "elk-net"
    depends_on:      # 定义依赖关系
      - "logstash"
  logstash:
    image: docker.elastic.co/logstash/logstash:7.4.2
    container_name: logstash
    ports:
      - 5044:5044
    volumes:
      - type: bind
        source: "/data/elk/logstash.conf"
        target: "/usr/share/logstash/pipeline/logstash.conf"
      - type: bind
        source: "/data/elk/logstash.yml"
        target: "/usr/share/logstash/config/logstash.yml"
      - type: bind
        source: "/etc/localtime"
        target: "/etc/localtime"
    networks:
      - "elk-net"
  kibana:
    image: docker.elastic.co/kibana/kibana:7.4.2
    container_name: kibana
    ports:
      - 5601:5601
    networks:
      - "elk-net"
networks:
  elk-net:
           

服务启动

这样基础的配置文件就写完了, 生产环境上我们还需要考虑到es的高可用, 部署集群, 自定义 logstash 对日志数据的处理, 同步到es的索引库以及创建对应的mapping模板等等. 更多玩法敬请自行摸索

启动命令

docker-compose up --build -d
           

查看logstash日志

docker logs -f --tail=20 logstash
           

就能看到logstash采集的日志了

kibana配置discover

根据你的索引名配置规则

日志收集分析利器-ELK加FileBeat

然后选择以时间为维度

日志收集分析利器-ELK加FileBeat

这样你就能看见日志的采集情况了

日志收集分析利器-ELK加FileBeat

容器删除

继续阅读