ELK搭建及基础使用(docker版)
ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求● ElasticSearch(日志存储和搜索):是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。Elasticsearch 是用 Java 开发的,可通过 RESTful Web
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服务端搭建
- 编写服务端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
- 编写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
- 编写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"
- 编写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密码
}
}
- 启动服务
docker-compose -f /data/elk/docker-compose.yml up -d
客户端logstash搭建
- 编写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"
- 编写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密码
}
}
- 启动服务
docker-compose -f /data/elk/docker-compose-logstash.yml up -d
ELK使用-创建索引
- 访问kibana控制台
http://192.168.0.161:15601
用户名:elastic 密码:Pwd@123 - 创建索引
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)