docker:搭建ELK 开源日志分析系统

ELK 是由三部分组成的一套日志分析系统,

Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,

索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash:动态数据收集管道,Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

Kibana:可视化视图,将elasticsearh所收集的data通过视图展现。kibana 是一个开源和免费的工具,它可以为 Logstash 和
              ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

一、使用docker集成镜像
安装docker
elk集成镜像包 名字是 sebp/elk

1.安装 docke、启动

yum install docke

service docker start

2.下载 sebp/elk

docker pull sebp/elk

无法下载、报错 :
unauthorized: authentication required
这是国外网络的问题

解决1 用网易镜像
vim /etc/docker/daemon.json 这个json文件不存在的,不需要担心,直接编辑
把下面的贴进去,保存,重启即可

{
"registry-mirrors": [ "http://hub-mirror.c.163.com"]
}

# service docker restart

没效果,还是下不来

解决2 用阿里云镜像加速

注册一个阿里云账号,登陆
到这里复制自己的加速地址

然后
安装/升级你的Docker客户端
  • 推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
如何配置镜像加速器
  • 针对Docker客户端版本大于1.10.0的用户

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-‘EOF‘
    {
      "registry-mirrors": ["https://34sii7qf.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

下载:
# docker pull sebp/elk
……

617ab16bcfa1: Pull complete
Digest: sha256:b6b8dd20b1a9aaf47b11fe9c66395a462f5e65c50dcff725e9bf83576d4ed241
Status: Downloaded newer image for docker.io/sebp/elk:latest

查看镜像:
[[email protected] docker]# docker images
REPOSITORY            TAG                  IMAGEID            CREATED              SIZE
docker.io/sebp/elk    latest              4b52312ebe8d     12 days ago           1.15 GB

3.启动镜像

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

报错:

Couln‘t start Elasticsearch. Exiting.
Elasticsearch log follows below.

原因:

waiting for Elasticsearch to be up (xx/30) counter goes up to 30 and the container exits with Couln‘t start Elasticsearch. Exiting. and Elasticsearch‘s logs are dumped, then read the recommendations in the logs and consider that they must be applied.

In particular, in case (1) above, the message max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]means that the host‘s limits on mmap counts must be set to at least 262144.

Docker至少得分配3GB的内存;

Elasticsearch至少需要单独2G的内存;

vm.max_map_count至少需要262144,修改vm.max_map_count 参数

解决:

# vi /etc/sysctl.conf

末尾添加一行
      vm.max_map_count=262144

查看结果
        # sysctl -p

vm.max_map_count = 262144

重新启动:

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

/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/elk" is already in use by container ece053f704db663e03355a679e25ec732bd08668dae1a87a89567e0e7c950749. You have to remove (or rename) that container to be able to reuse that name..
See ‘/usr/bin/docker-current run --help‘.
[[email protected] ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk123 sebp/elk
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/elk123" is already in use by container caf492e3acff7506c5e70b896bd82a33d757816ca3f55911a2aa9aef4cd74670. You have to remove (or rename) that container to be able to reuse that name..
See ‘/usr/bin/docker-current run --help‘.
[[email protected] ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk1 sebp/elk
* Starting periodic command scheduler cron [ OK ]
* Starting Elasticsearch Server [ OK ]
waiting for Elasticsearch to be up (1/30)
waiting for Elasticsearch to be up (2/30)
waiting for Elasticsearch to be up (3/30)
waiting for Elasticsearch to be up (4/30)
waiting for Elasticsearch to be up (5/30)
waiting for Elasticsearch to be up (6/30)
waiting for Elasticsearch to be up (7/30)
waiting for Elasticsearch to be up (8/30)
waiting for Elasticsearch to be up (9/30)
waiting for Elasticsearch to be up (10/30)
Waiting for Elasticsearch cluster to respond (1/30)
logstash started.
* Starting Kibana5 [ OK ]
==> /var/log/elasticsearch/elasticsearch.log <==
[2018-04-03T06:58:14,192][INFO ][o.e.d.DiscoveryModule ] [JI2Uv6k] using discovery type [zen]
[2018-04-03T06:58:15,132][INFO ][o.e.n.Node ] initialized
[2018-04-03T06:58:15,132][INFO ][o.e.n.Node ] [JI2Uv6k] starting ...
[2018-04-03T06:58:15,358][INFO ][o.e.t.TransportService ] [JI2Uv6k] publish_address {172.17.0.2:9300}, bound_addresses {[::]:9300}
[2018-04-03T06:58:15,378][INFO ][o.e.b.BootstrapChecks ] [JI2Uv6k] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2018-04-03T06:58:18,517][INFO ][o.e.c.s.MasterService ] [JI2Uv6k] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300}
[2018-04-03T06:58:18,529][INFO ][o.e.c.s.ClusterApplierService] [JI2Uv6k] new_master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300}, reason: apply cluster state (from master [master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2018-04-03T06:58:18,563][INFO ][o.e.h.n.Netty4HttpServerTransport] [JI2Uv6k] publish_address {172.17.0.2:9200}, bound_addresses {[::]:9200}
[2018-04-03T06:58:18,563][INFO ][o.e.n.Node ] [JI2Uv6k] started
[2018-04-03T06:58:18,577][INFO ][o.e.g.GatewayService ] [JI2Uv6k] recovered [0] indices into cluster_state

==> /var/log/logstash/logstash-plain.log <==

==> /var/log/kibana/kibana5.log <==

4.验证、测试 

打开浏览器,输入:http://<your-host>:5601,看到如下界面说明安装成功

端口之间关系

5601 (Kibana web interface).              前台界面

9200 (Elasticsearch JSON interface)   搜索.

5044 (Logstash Beats interface, receives logs from Beats such as Filebea   日志传输

测试:
测试传递一条信息

1、使用命令:docker exec -it <container-name> /bin/bash 进入容器内

2、执行命令:/opt/logstash/bin/logstash -e ‘input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }‘

 报错如果看到这样的报错信息 Logstash could not be started because there is already another instance using the configured data directory. 
            If you wish to run multiple instances, you must change the "path.data" setting.

解决:请执行命令:service logstash stop 然后在执行就可以了。

再次执行:看到:Successfully started Logstash API endpoint {:port=>9600}  即可
 

3.输入测试信息 :this is a  test 

4、打开浏览器,输入:http://<your-host>:9200/_search?pretty 如图,就会看到我们刚刚输入的日志内容

ELK 是由三部分组成的一套日志分析系统,

Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,

索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash:动态数据收集管道,Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

Kibana:可视化视图,将elasticsearh所收集的data通过视图展现。kibana 是一个开源和免费的工具,它可以为 Logstash 和
              ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

一、使用docker集成镜像
安装docker
elk集成镜像包 名字是 sebp/elk

1.安装 docke、启动

yum install docke

service docker start

2.下载 sebp/elk

docker pull sebp/elk

无法下载、报错 :
unauthorized: authentication required
这是国外网络的问题

解决1 用网易镜像
vim /etc/docker/daemon.json 这个json文件不存在的,不需要担心,直接编辑
把下面的贴进去,保存,重启即可

{
"registry-mirrors": [ "http://hub-mirror.c.163.com"]
}

# service docker restart

没效果,还是下不来

解决2 用阿里云镜像加速

注册一个阿里云账号,登陆
到这里复制自己的加速地址

然后
安装/升级你的Docker客户端
  • 推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
如何配置镜像加速器
  • 针对Docker客户端版本大于1.10.0的用户

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-‘EOF‘
    {
      "registry-mirrors": ["https://34sii7qf.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

下载:
# docker pull sebp/elk
……

617ab16bcfa1: Pull complete
Digest: sha256:b6b8dd20b1a9aaf47b11fe9c66395a462f5e65c50dcff725e9bf83576d4ed241
Status: Downloaded newer image for docker.io/sebp/elk:latest

查看镜像:
[[email protected] docker]# docker images
REPOSITORY            TAG                  IMAGEID            CREATED              SIZE
docker.io/sebp/elk    latest              4b52312ebe8d     12 days ago           1.15 GB

3.启动镜像

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

报错:

Couln‘t start Elasticsearch. Exiting.
Elasticsearch log follows below.

原因:

waiting for Elasticsearch to be up (xx/30) counter goes up to 30 and the container exits with Couln‘t start Elasticsearch. Exiting. and Elasticsearch‘s logs are dumped, then read the recommendations in the logs and consider that they must be applied.

In particular, in case (1) above, the message max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]means that the host‘s limits on mmap counts must be set to at least 262144.

Docker至少得分配3GB的内存;

Elasticsearch至少需要单独2G的内存;

vm.max_map_count至少需要262144,修改vm.max_map_count 参数

解决:

# vi /etc/sysctl.conf

末尾添加一行
      vm.max_map_count=262144

查看结果
        # sysctl -p

vm.max_map_count = 262144

重新启动:

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

/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/elk" is already in use by container ece053f704db663e03355a679e25ec732bd08668dae1a87a89567e0e7c950749. You have to remove (or rename) that container to be able to reuse that name..
See ‘/usr/bin/docker-current run --help‘.
[[email protected] ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk123 sebp/elk
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/elk123" is already in use by container caf492e3acff7506c5e70b896bd82a33d757816ca3f55911a2aa9aef4cd74670. You have to remove (or rename) that container to be able to reuse that name..
See ‘/usr/bin/docker-current run --help‘.
[[email protected] ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk1 sebp/elk
* Starting periodic command scheduler cron [ OK ]
* Starting Elasticsearch Server [ OK ]
waiting for Elasticsearch to be up (1/30)
waiting for Elasticsearch to be up (2/30)
waiting for Elasticsearch to be up (3/30)
waiting for Elasticsearch to be up (4/30)
waiting for Elasticsearch to be up (5/30)
waiting for Elasticsearch to be up (6/30)
waiting for Elasticsearch to be up (7/30)
waiting for Elasticsearch to be up (8/30)
waiting for Elasticsearch to be up (9/30)
waiting for Elasticsearch to be up (10/30)
Waiting for Elasticsearch cluster to respond (1/30)
logstash started.
* Starting Kibana5 [ OK ]
==> /var/log/elasticsearch/elasticsearch.log <==
[2018-04-03T06:58:14,192][INFO ][o.e.d.DiscoveryModule ] [JI2Uv6k] using discovery type [zen]
[2018-04-03T06:58:15,132][INFO ][o.e.n.Node ] initialized
[2018-04-03T06:58:15,132][INFO ][o.e.n.Node ] [JI2Uv6k] starting ...
[2018-04-03T06:58:15,358][INFO ][o.e.t.TransportService ] [JI2Uv6k] publish_address {172.17.0.2:9300}, bound_addresses {[::]:9300}
[2018-04-03T06:58:15,378][INFO ][o.e.b.BootstrapChecks ] [JI2Uv6k] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2018-04-03T06:58:18,517][INFO ][o.e.c.s.MasterService ] [JI2Uv6k] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300}
[2018-04-03T06:58:18,529][INFO ][o.e.c.s.ClusterApplierService] [JI2Uv6k] new_master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300}, reason: apply cluster state (from master [master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[2018-04-03T06:58:18,563][INFO ][o.e.h.n.Netty4HttpServerTransport] [JI2Uv6k] publish_address {172.17.0.2:9200}, bound_addresses {[::]:9200}
[2018-04-03T06:58:18,563][INFO ][o.e.n.Node ] [JI2Uv6k] started
[2018-04-03T06:58:18,577][INFO ][o.e.g.GatewayService ] [JI2Uv6k] recovered [0] indices into cluster_state

==> /var/log/logstash/logstash-plain.log <==

==> /var/log/kibana/kibana5.log <==

4.验证、测试 

打开浏览器,输入:http://<your-host>:5601,看到如下界面说明安装成功

端口之间关系

5601 (Kibana web interface).              前台界面

9200 (Elasticsearch JSON interface)   搜索.

5044 (Logstash Beats interface, receives logs from Beats such as Filebea   日志传输

测试:
测试传递一条信息

1、使用命令:docker exec -it <container-name> /bin/bash 进入容器内

2、执行命令:/opt/logstash/bin/logstash -e ‘input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }‘

 报错如果看到这样的报错信息 Logstash could not be started because there is already another instance using the configured data directory. 
            If you wish to run multiple instances, you must change the "path.data" setting.

解决:请执行命令:service logstash stop 然后在执行就可以了。

再次执行:看到:Successfully started Logstash API endpoint {:port=>9600}  即可
 

3.输入测试信息 :this is a  test 

4、打开浏览器,输入:http://<your-host>:9200/_search?pretty 如图,就会看到我们刚刚输入的日志内容

原文地址:https://www.cnblogs.com/zafu/p/12134213.html

时间: 2024-08-26 07:43:30

docker:搭建ELK 开源日志分析系统的相关文章

开源日志分析系统ELK平台搭建部署

开源日志分析系统ELK平台搭建部署 一.前言 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理

ELK - 实用日志分析系统

目前日志分析系统用的越来越广泛,而且最主流的技术即ELK,下面和大家分享一下: --------------------------------------------------------------------------------------- 一:简 介  Elastic Stack 是 原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼,近两年飞速崛起,成为开源界机器数据分析和日志处理第一选择. 组成: kibana:开源工具,为 EL 提供友好的 Web 界

centos7搭建ELK Cluster日志分析平台(一)

应用场景:ELK实际上是三个工具的集合,ElasticSearch + Logstash + Kibana,这三个工具组合形成了一套实用.易用的监控架构, 很多公司利用它来搭建可视化的海量日志分析平台. 官网下载地址:https://www.elastic.co/downloads  Elasticsearch: 一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasticsearch是用Java开发的,并作为Apache许可条款

ELK+filebeat日志分析系统部署文档

环境说明 架构说明及架构图 filebeat部署在客户端用于收集日志并把收集到的日志发送到logstash.logstash把收集到的日志处理之后交给elasticsearch. kibana从elasticsearch中提取数据并进行展示.之所以使用filebeat进行日志收集是因为filebeat不会像logstash使用大量的资源,影响业务服务器. 环境需求 需要java环境和redis yum install java yum install redis 使用版本 java  1.8.0

elk+redis 日志分析系统

e:elasticsearch l:logstash k:kibana logstash快速入门:http://www.2cto.com/os/201411/352015.html elk中文指南 :http://kibana.logstash.es/content/logstash/index.html

Apache配置与应用——AWStats日志分析系统(实战!)

AWStats日志分析系统 Perl语言开发的一款开源日志分析系统 可用来分析Apache,Samba,Vsftpd,IIS等服务器的访问日志 信息结合crond等计划任务服务,可对日志内容定期进行分析 环境 一台Linux服务主机(192.168.13.132) 一台win7测试pc机 1,yum安装http和bind服务 [[email protected] ~]# yum install httpd bind -y 2,配置DNS配置文件 [[email protected] ~]# vi

Web服务之部署AWStats日志分析系统

AWStats是使用Perl语言开发的一款开源日志分析系统,不仅可以用来分析Apache网站日志,也可以用来分析Samba.Vsftpd.IIS等服务的日志信息.结合crond等任务计划服务,可以对不断增长的日志内容定期进行分析 部署AWStats分析系统 ? ? AWStats的软件包可以从官网上下载 1. 安装AWStats软件包 ? ? 安装非常简单,只需将软件包解压到httpd服务器的/usr/local/目录下即可 2. 为统计的站点建立配置文件 ? ? AWStats系统支持统计多个

部署Awstats日志分析系统

知识部分·什么是AWStats:AWStats分析系统是使用Perl语言开发的一款开源日志分析系统.可用于分析Apache.Samba.Vsftpd.IIS等服务的日志信息.也可以结合crond等计划任务,不断对增长的日志进行定期分析.操作步骤1.解压软件包,并将文件移动到/usr/local下2.为要统计的站点建立配置文件.首先切换到../awstats/tools下,授予awstats_configure.pl一个可执行的权限,然后执行该文件.3.在该位置添加apache的配置文件4.继续,

AWStats 强大的日志分析系统

需求 在日常web服务器的运行中,记录了大量的客户机访问的信息,而如何快捷地知道此刻web服务器的访问及运行情况,如每天的访问IP数量.点击量最大的页面.每日的访问高峰时间段等信息呢? 解决方案 将通过使用强大的日志分析系统AWStats对其进行自动化的日志分析与统计工作. AWStats介绍 AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache网站服务器的访问日志,也可以用来分析Samba.Vsftpd.IIS等服务的日志信息.结合crond等计划任务服务,