ELK搭建及基础使用(docker版)

ELK概述

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用,
完成更强大的用户对日志的查询、排序、统计需求

● ElasticSearch(日志存储和搜索):是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。 Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch通信。 Elasticsearch 是个分布式搜索和分析引擎,优点是能对大容量的数据进行接近实时的存储、搜索和分析操作。

● Logstash(日志收集):作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给Elasticsearch。 Logstash 由JRuby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。

● Kiabana(展示):是基于 Node.js 开发的展示工具,可以为 Logstash 和 ElasticSearch
提供图形化的日志分析 Web 界面展示,可以汇总、分析和搜索重要数据日志。

ELK搭建

初始化ELK环境

vim /etc/sysctl.conf

vm.max_map_count = 262144   #件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量
fs.file-max = 1645037        #系统创建最大文件数

解决报错:

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

elk服务端搭建

  1. 编写服务端YML文件
    vim /data/elk/docker-compose.yml
version: '2'
services:
  elasticsearch:
    image: elasticsearch:7.13.2
    container_name: ELK-E
    ports:
      - 19200:19200
      - 19300:9300
    environment:
#      TAKE_FILE_OWNERSHIP: "true"
      ES_JAVA_OPTS: "-Xmx512m -Xms512m"     #内存限制
      ELASTIC_PASSWORD: "Pwd@123"                # elastic密码(账户:elastic)
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elasticsearch/logs:/usr/share/elasticsearch/logs
      - ./elasticsearch/data:/usr/share/elasticsearch/data
    networks:
      - elk

  kibana:
    image: kibana:7.13.2
    container_name: ELK-K
    ports:
      - 15601:15601
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    depends_on:
      - elasticsearch
    networks:
      - elk

  logstash:
    image: logstash:7.13.2
    container_name: ELK-L
    ports:
      - 15044:5044
      - 19600:9600
    volumes:
      - /data/cc/logs:/161         #本地日志文件映射
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
      - ./logstash/pipeline/:/usr/share/logstash/pipeline/
    environment:
      LS_JAVA_OPTS: "-Xmx512m -Xms512m"     #内存限制
    depends_on:
      - elasticsearch
    networks:
      - elk
networks:
  elk:
    driver: bridge
  1. 编写elasticsearch配置文件
    vim /data/elk/elasticsearch/config/elasticsearch.yml
#集群名称
cluster.name: ELK001
#节点名称
node.name: NODE001
#数据路径
path.data: ./data
#日志路径
path.logs: ./logs
bootstrap.memory_lock: false
#监听地址
network.host: 0.0.0.0
#监听端口
http.port: 19200
discovery.seed_hosts: ["127.0.0.1:19200"]
#集群主节点名称
cluster.initial_master_nodes: ["NODE001"]
#开启monitor
xpack.monitoring.collection.enabled: true
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
  1. 编写kibana配置文件
    vim /data/elk/kibana/config/kibana.yml
#监听地址
server.host: 0.0.0.0
#监听端口
server.port: 15601
#elasticsearch地址
elasticsearch.hosts: ["http://elasticsearch:19200","http://192.168.0.161:19200"]
i18n.locale: "zh-CN"
kibana.index: ".kiabana"
#elasticsearch用户名密码(没有可不设置)
elasticsearch.username: "elastic"
elasticsearch.password: "Pwd@123"
  1. 编写logstash配置文件
  • 主配
    vim /data/elk/logstash/config/logstash.yml
#监听地址
http.host: "0.0.0.0"
#配置elasticsearch连接信息
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.0.161:19200","http://elasticsearch:19200" ]
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "Pwd@123"
  • 日志收集配置
    vim /data/elk/logstash/pipeline/logstash.conf
######################监听文件配置####################
input {
    file {
        path => "/161/log/log.log"  # 填写容器内部log文件路径
        start_position => "beginning"   # 从文件开始处开始读取
    }
}
output {
        elasticsearch {
            hosts => ["192.168.0.161:19200"]         #输出到elasticsearch 
            index => "obc-log-161-%{+YYYY.MM.dd}"   #索引名称
            user => "elastic"                       #elasticsearch用户名
            password => "Pwd@123"                #elasticsearch密码
        }
    }
###################监听端口配置####################
input {
    tcp {
        port => 15044                           #监听tcp端口
        codec => json                           #文件格式
    }
}
output {
        elasticsearch {
            hosts => ["192.168.0.161:19200"]         #输出到elasticsearch 
            index => "obc-log-161-%{+YYYY.MM.dd}"   #索引名称
            user => "elastic"                       #elasticsearch用户名
            password => "Pwd@123"                #elasticsearch密码
        }
    }
  1. 启动服务
docker-compose -f  /data/elk/docker-compose.yml up -d

客户端logstash搭建

  1. 编写yml文件
    vim docker-compose-logstash.yml
  logstash:
    image: logstash:7.13.2
    container_name: ELK-L
    ports:
      - 15044:5044
      - 19600:9600
    volumes:
      - /data/cc/logs:/158      #映射本地日志目录
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
      - ./logstash/pipeline/:/usr/share/logstash/pipeline/
    environment:
      LS_JAVA_OPTS: "-Xmx512m -Xms512m"
  1. 编写logstash配置文件
  • 主配
    vim /data/elk/logstash/config/logstash.yml
#监听地址
http.host: "0.0.0.0"
#配置elasticsearch连接信息
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.0.161:19200","http://elasticsearch:19200" ]
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "Pwd@123"
  • 日志收集配置
    vim /data/elk/logstash/pipeline/logstash.conf
######################监听文件配置####################
input {
    file {
        path => "/158/log/log.log"  # 填写容器内部log文件路径
        start_position => "beginning"   # 从文件开始处开始读取
    }
}
output {
        elasticsearch {
            hosts => ["192.168.0.161:19200"]         #输出到elasticsearch 
            index => "obc-log-158-%{+YYYY.MM.dd}"   #索引名称
            user => "elastic"                       #elasticsearch用户名
            password => "Pwd@123"                #elasticsearch密码
        }
    }
###################监听端口配置####################
input {
    tcp {
        port => 15044                           #监听tcp端口
        codec => json                           #文件格式
    }
}
output {
        elasticsearch {
            hosts => ["192.168.0.161:19200"]         #输出到elasticsearch 
            index => "obc-log-158-%{+YYYY.MM.dd}"   #索引名称
            user => "elastic"                       #elasticsearch用户名
            password => "Pwd@123"                #elasticsearch密码
        }
    }
  1. 启动服务
docker-compose -f  /data/elk/docker-compose-logstash.yml up -d

ELK使用-创建索引

  1. 访问kibana控制台
    http://192.168.0.161:15601
    用户名:elastic 密码:Pwd@123
  2. 创建索引
    在这里插入图片描述3. 根据logstic文件中定义的索引名创建索引
    在这里插入图片描述
    选择筛选条件为时间并创建索引
    在这里插入图片描述
    4.查看日志
    在这里插入图片描述

ELK索引清理

  • 获取索引
curl -u elastic:Pwd@123 -XGET 'http://192.168.0.161:19200/_cat/shards'
  • 删除索引
curl -u elastic:Pwd@123  -XDELETE  http://192.168.0.161:19200/$index_name
  • 自动清理脚本
#!/bin/bash
#Delete:The index 7 days ago
day=`date -d '7 day ago' +%Y.%m.%d`
indexname="obc|occ"
#获取索引
curl -u elastic:Pwd@123 -XGET 'http://192.168.0.161:19200/_cat/shards' | grep -E $indexname | awk '{print $1}' | grep $day | uniq > /tmp/index_name.tmp
#删除索引
for index_name in `cat /tmp/index_name.tmp` 
do
    curl -u elastic:Pwd@123  -XDELETE  http://192.168.0.161:19200/$index_name
    echo -e "[`date  +%F` `date  +%T `" $((10#$(date +%N)/1000000))ms] "${index_name} delete success" >> /tmp/del_elasticseatch_index.log
done
#需添加定时任务
# 0 3 * * * bash /home/scripts/del_elasticseatch_index.sh
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值