ELK是三个软件得组合:Elasticsearch,Logstash,Kibana

Elasticsearch:实时查询的全文搜索引擎。Elasticsearch的设计目的就是能够处理和搜索巨量的日志数据

Logstash:读取原始日志,并对其进行分析过滤,然后将其转发给其他组件,(比如elasticsearch)进行所以或存储,Logstash支持丰富的INPUT和Output类型,能够处理各种应用日志

Kibana:一个基于javascript的web图形界面程序,专门用于可视化elasticsearch的数据。kibana能够查询elasticsearch并通过丰富的图表展示结果,用户创建dashboard来监控系统日志。

日志处理流程,如盗图:

logstash负责从各个docker容器中提取日志,logstash将日志转发给elasticsearch进行索引和保存,kibana分析和可视化数据

进行部署:

1.安装ELk套件:

ELK的部署方案可以非常灵活,在规模较大的生产系统中,ELK有自己的集群,实现了高可用负载均衡。我们可以在容器中实现最小部署方案:

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk

我们使用的是sebp/elk这个现成的镜像,里面包含了整个ELK stack(这是我见过的层次最多的镜像)。容器启动后ELK各个组件将分别监听如下端口:

5601:kibana web接口

9200:elasticsearch JSON接口

5044:logstash 日志接受接口

在启动容器的时候出现以下错误:

[ERROR][o.e.b.Bootstrap ] [hrtgLaO] node validation exception
[1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决办法:

在/etc/sysctl.conf下添加

vm.max_map_count=655360
保存退出后,执行一下命令
sysctl -p

这个是内存报错,其他的CPU或文件数报错,也可以参考:http://blog.csdn.net/xiegh2014/article/details/53771086

容器正常运行后:

我们先来访问kibana http://ip:5601

当前kibana没有可显示的数据,因为elasticsearch还没有任何日志数据

访问一下elasticsearch的JSON接口:http://ip:9200/_search?pretty

可以看出,目前elasticsearch没有与日志相关的index

将日志导入ELK并进行图形化展示:

几乎所有的软件和应用都有自己的日志文件,容器也不例外,上面我们知道docker 会将容器日志记录到/var/lib/containers/<containers_id>/<container ID>-json.log,那我们只需要将此文件发送给ELK就可以实现日志管理

其实要实现这一步也不难,因为ELK提供了一个配套小工具Filebeat,他将指定路径下的日志文件转发给ELK。同时Filebeat很聪明,他将监控日志的文件,当日志更新时,Filebeat会将新的内容发送给ELK

安装filebeat

在docker host中安装配置filebeat,可根据官网:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html

由于我们使用的是centos的操作系统,这里选择使用YUM的安装方式参考:https://www.elastic.co/guide/en/beats/filebeat/current/setup-repositories.html

1.下载安装密钥: rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

2.建立源vim /etc/yum.repos.d/elastic.repo

[elastic-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

3.安装filebeat

yum install filebeat

4.设置开机自启动

systemctl enable filebeat

配置filebeat

filebeat的配置文件/etc/filebeat/filebeat.yml,我们需要告诉filebeat两件事:

1.监控哪些日志文件?

2.将日志文件发送到哪里?

首先第一个问题:

在paths中我们配置了两条路径:

1。/var/log/*.log是Host操作系统的日志

2./var/lib/docker/containers/*/*.log是所有容器的日志文件路径

接下来是告诉filebeat将这些日志文件发送到elk

filebeat可以将日志发送给elasticsearch进行索引和保存,也可以发送给logstash先进行分析和过滤,然后由logstash转发给elasticsearch进行分析和过滤

1.先将日志直接发给elasticsearch

vim /etc/filebeat/filebeat.yml

默认的设置,不需更改

当前的日志处理流程如下图:盗图

2.filebeat现将日志文件发送给logstash进行过滤分析,再转给elasticsearch

vim /etc/filebeat/filebeat.yml

修改好filebeat的配置文件后重启filebeat服务:systemctl restart filebeat

管理日志:

filebeat服务启动后,正常情况下会将监控日志发送给elasticsearch。刷新elasticsearch的JSON接口http://ip:9200/_search?pretty进行确认

这次我们能看到filebeat-*的index,以及filebeat监控的那两个路径下的日志

现在,elasticsearch已经创建了日志的索引并保存起来,接下来是在kibana中展示日志

首先需要配置一个index pattern,及告诉kibana查询和分析elasticsearch中那些日志

1.指定index pattern为filebeat-*,这与elasticsearch中的index一致

2.Time-files name 选择@timestamp

3.点击create创建index pattern

点击kibana左侧的discover菜单,便可看到容器和syslog日志信息

刷新kibana界面右上角的

就能看到新的日志

kibana也提供了强大的搜索功能,比如输入关键字busybox能搜索出所有匹配的日志条目

我们这里只是简单的将日志导入ELK并朴素的显示出来,我们用的是filebeat将收集来的信息直接转发给elasticsearch搜索,而不是转发给logstach进行分析过滤,。实际上ELK可以创建更炫酷的dashboard,可以挖掘的内容很多。

												

centos7下安装docker(18.2docker日志---ELK)的更多相关文章

  1. centos7下安装docker(18docker日志---docker logs)

    在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要,考虑到容器的短暂和不固定周期,当我们需要排查问题的时候容器可能不在了.因此,一套集中式的日志管理系统是生产环境中不 ...

  2. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  3. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  4. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  5. centos7 下安装docker报错:You could try using...

    搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...

  6. centos7下安装docker(18.1docker日志---logging driver)

    将容器的日志发送到STDOUT和STDERR是docker的默认日志行为.实际上,docker提供了多种日志机制帮助用户从容器中提取日志,这些机制被称为logging driver docker的默认 ...

  7. centos7下安装docker(19容器架构)

    What,Why,How What:什么是容器? 说起容器大家想到的是什么?      集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成co ...

  8. Centos7下安装Docker(详细的新手装逼教程)

    早就听说过Docker,一直不清楚是个啥,今天捣鼓了一下,这里做个记录. --------------------------------------------------------------- ...

  9. Centos7下安装Docker[z]

    [z]https://www.cnblogs.com/qgc1995/p/9553572.html https://yq.aliyun.com/articles/691610?spm=a2c4e.11 ...

  10. Linux(centos7)下安装Docker

    近期公司开始推Docker技术.这个系列的文章都是基于CentOS7系统下进行讲解的. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...

随机推荐

  1. PHP之单例模式

    之前记得有写过PHP的几种这模式.这几天看群里在问单列模式,觉得还是有必要再深入写清楚下..其实单例模式很好理解滴哦 单例模式顾名思义,就是只有一个实例,作为对象的创建模式,单例模式确保某一个类只有一 ...

  2. mysql配置优化浅谈(一)

    MySQL对于web架构性能的影响最大,也是关键的核心部分.MySQL的设置是否合理优化,直接影响到web的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识 ...

  3. junit单元测试注意的问题

    1.有返回值的方法不能直接测试 2.带参数的方法不能直接测试 3.访问权限在public一下的方法不能直接测试 4.static静态方法不能直接测试 5.不能给出现前四个条件中任意一个的方法添加@Te ...

  4. Python3 系列之 基础语法篇

    基础数据类型 整数 python 可以处理任意大小的整数 浮点数 python 可以处理任意大小的浮点数,但是需要注意的一点是:整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的 ...

  5. JS中的反柯里化( uncurrying)

    反柯里化 相反,反柯里化的作用在与扩大函数的适用性,使本来作为特定对象所拥有的功能的函数可以被任意对象所用.即把如下给定的函数签名, obj.func(arg1, arg2) 转化成一个函数形式,签名 ...

  6. 洛谷P5205 【模板】多项式开根(多项式sqrt)

    题意 题目链接 Sol 这个就很没意思了 求个ln,然后系数除以2,然后exp回去. #include<bits/stdc++.h> #define Pair pair<int, i ...

  7. 洛谷P4592 [TJOI2018]异或(可持久化01Trie)

    题意 题目链接 可持久化01Trie板子题 对于两个操作分别开就行了 #include<bits/stdc++.h> using namespace std; const int MAXN ...

  8. 【Wyn Enterprise BI知识库】 什么是商业智能 ZT

    商业智能(Business Intelligence,BI),又称商务智能,指用现代数据仓库技术.在线分析处理技术.数据挖掘和数据展现技术进行数据分析以实现商业价值. 图1:商业智能(BI)系统 商业 ...

  9. 25.Odoo产品分析 (三) – 人力资源板块(6) – 工资表(1)

    查看Odoo产品分析系列--目录 工资表不在"应用"中,在搜索该模块时需要将默认的"应用"过滤删除掉.  安装工资表后,出现工资单菜单:  1. 薪资规则类别 ...

  10. Android Studio--gradle:download 过慢甚至超时timeout报错

    问题描述 今天第一次学习安卓,配置环境花了不少时间其他都比较容易的解决了 gradle 因为会从外国的网站下载东西会非常的慢(具体原理我也不清楚),所以最好让下载地址变成国内的 解决方案(最后有升级方 ...