使用docker搭建ELK日志分析系统(基于elasticsearch5.6.14)

使用docker搭建ELK日志分析系统

  • ELK日志分析系统介绍
    • 原理
    • 搭建简单的elk
      • elasticsearch
        • 介绍
        • 安装
      • logstash
        • 介绍
        • 安装
      • kibana
        • 介绍
        • 安装
    • 参考链接

ELK日志分析系统介绍

在小规模项目中,当我们需要查看运行日志时,通常只需查看日志文件就可以了;但是在规模较大的场景中,假设你要管理这里的多台服务器,当出现问题时,如果你再一个一个的查看日志文件那就太影响效率了,那么有什么方案可以替我们简化工作呢?

ELK(elasticsearch+logstash+kibana)就为我们提供了一整套的解决方案,也是目前一种主流的日志分析系统。

原理

使用docker搭建ELK日志分析系统(基于elasticsearch5.6.14)_第1张图片
一般架构中,是使用logstash-agent先对日志文件进行筛选分类,然后输出到消息队列如kafka等来对消息进行缓存;logstash再从消息队列中拿去日志消息再进行过滤、分类并输出给elasticsearch进行存储;最后由Kibana将日志和数据呈现给用户。

搭建简单的elk

elasticsearch

介绍

是个开源分布式搜索引擎,提供搜集分析存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等:

安装

下载dokcer镜像

docker pull elasticsearch:5.6.14

修改虚拟内存映射数(不修改启动会报错)
切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf 

添加下面配置

vm.max_map_count=655300 

执行命令

sysctl -p 

查看vm.max_map_count是否设置成功:

cat /proc/sys/vm/max_map_count

挂载外部配置文件

cd /mnt
mkdir data
touch es.yml
vim es.yml

添加如下配置

#集群名
cluster.name: escluster
#节点名
node.name: node-111
#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
#指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0
#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,
#值必须是个真实的ip地址
network.publish_host: x.x.x.x
#设置对外服务的http端口,默认为9200
http.port: 9200
#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#是否允许跨域REST请求
http.cors.enabled: true
#允许 REST 请求来自何处
http.cors.allow-origin: “*”
#节点角色设置
node.master: true
#是否保存数据
node.data: true
#有成为主节点资格的节点列表
discovery.zen.ping.unicast.hosts: [“x.x.x.x:9300”]
#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1)

启动es

docker run --name es -d 
>-e ES_JAVA_OPTS="-Xms512m -Xmx512m" 
>-p 9200:9200 -p 9300:9300 
>-v /mnt/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
>-v /mnt/es/data/:/usr/share/elasticsearch/data 
>elasticsearch:5.6.14

解释下这几个命令

  • -e 修改es占用内存,默认2G
  • -p 映射虚拟机端口:容器内端口
  • -v 挂载本地配置文件:容器内部配置文件
  • -v 挂载本地数据文件夹:容器内部数据文件夹

访问ip:9200
使用docker搭建ELK日志分析系统(基于elasticsearch5.6.14)_第2张图片

logstash

介绍

主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去

安装

下载docker镜像

docker pull logstash:5.6.14

启动logstash

docker run -d --name logstash -it --rm logstash:5.6.14 
>-e 'input { stdin { } } output { elasticsearch {  hosts => ["x.x.x.x:9200"] } }'

启动成功后进入logstash容器内

docker attach logstash

随便输入一串字符串按回车
使用docker搭建ELK日志分析系统(基于elasticsearch5.6.14)_第3张图片
出现如上输出,即代表已经将输入字符串存入到es中

kibana

介绍

一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

安装

下载docker镜像

docker pull kibana:5.6.14

启动容器

docker run --name kibana -d
>-e ELASTICSEARCH_URL=http://x.x.x.x:9200 
>-p 5601:5601  
>kibana:5.6.14

访问ip:5601 点击management->index pattern
使用docker搭建ELK日志分析系统(基于elasticsearch5.6.14)_第4张图片
直接点击create
点击左侧导航devtool出现查询页面
使用docker搭建ELK日志分析系统(基于elasticsearch5.6.14)_第5张图片
这样就看到了你刚刚在logstash中输入的字符串了。

参考链接

ELK原理与介绍
使用Docker搭建ElasticSearch+Logstash+Kibana环境
Docker ELK实践之Logstash
记一次Docker下安装Logstash+Elasticsearch+Kibana经历

你可能感兴趣的:(elasticsearch)