Docker安装ELK7.x

WenDangXia
• 阅读 2036

Docker安装ELK集成镜像

一、下载ELK镜像

搜索镜像
docker search sebp/elk

[root@www ~]# docker search sebp/elk
NAME        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
sebp/elk    Collect, search and visualise log data with …   1169                 [OK]
sebp/elkx   Collect, search and visualise log data with …   43                   [OK]

下载镜像
docker pull sebp/elk

[root@www ~]# docker pull sebp/elk
Using default tag: latest
latest: Pulling from sebp/elk
Digest: sha256:c5f1d0f845ab217ef509b8c6565d0c4a5dd8dea063a411b60dfb7c4508312aca
Status: Image is up to date for sebp/elk:latest
docker.io/sebp/elk:latest

二、修改系统配置

修改eleasticsearch用户权限

vim /etc/security/limits.conf

# 在最后面追加下面内容

elk hard nofile 65536
elk soft nofile 65536

可以解决ELK启动报: ERROR: Elasticsearch did not exit normally - check the logs at /var/log/elasticsearch/elasticsearch.log错的问题

更改系统vm.max_map_count设置值

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量
这个值需要调大一些
临时调整: sysctl -w vm.max_map_count=262144
永久调整: vim /etc/sysctl.conf

# 在末尾加上一行
vm.max_map_count=262144

更新配置
sysctl -p

查看更改后的值
sysctl -a | grep vm.max_map_count

# 查看
[root@localhost /]# sysctl -a | grep vm.max_map_count
vm.max_map_count = 262144

调大后可以消除elk启动时的错误: bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

三、拉取配置文件到宿主机

创建配置目录

Docker安装ELK7.x
为了方便修改, 将Docker容器中的配置映射到宿主机

# 创建elk配置文件目录
mkdir -p /data/elk/elasticsearch
mkdir -p /data/elk/logstash
mkdir -p /data/elk/kibana
mkdir -p /data/elk/elasticsearch/data
mkdir -p /data/elk/elasticsearch/config
# 创建elk日志文件目录(不成功)
# mkdir -p /data/elk/log/elasticsearch
# mkdir -p /data/elk/log/logstash
# mkdir -p /data/elk/log/kibana


# 创建文件(通过开启一个容器获取初始配置文件)
docker run -p 5601:5601 -p 9200:9200  -p 5044:5044 \
    -it \
    -e TZ="Asia/Shanghai" \
    -e ES_HEAP_SIZE="4g"  \
    -e ES_JAVA_OPTS="-Xms8g -Xmx8g" \
    -e "discovery.type=single-node" \
    -e LS_HEAP_SIZE="4g" --name elk sebp/elk

# 从容器中复制出ELK配置
docker cp elk:/etc/elasticsearch /data/elk/elasticsearch/data
docker cp elk:/opt/elasticsearch/config /data/elk/elasticsearch/config
docker cp elk:/opt/logstash/config /data/elk/logstash/config
docker cp elk:/etc/logstash/conf.d /data/elk/logstash/conf.d
docker cp elk:/opt/kibana/config /data/elk/kibana/config
docker cp elk:/opt/kibana/data /data/elk/kibana/data

# 复制完成后修改目录权限
cd /data/elk
chown -R 991:991 elasticsearch*
chown -R 992:992 logstash*
chown -R 993:993 kibana*
# 改日志目录权限
#cd /data/elk/log
#chown -R 991:991 elasticsearch*
#chown -R 992:992 logstash*
#chown -R 993:993 kibana*
#chmod 644 -R /data/elk/log

# 删除容器
docker stop elk
docker rm elk

四、创建容器

修改配置(可选)

本机是16G, 给eleasticsearch分一半
vim /data/elk/elasticsearch/config/jvm.options

# 找到
#-Xms4g
#-Xmx4g
# 改为
-Xms8g
-Xmx8g

启动一个新的ELK容器

docker run -p 5601:5601 -p 9200:9200  -p 5044:5044 \
    -v /data/elk/logstash/config:/opt/logstash/config \
    -v /data/elk/logstash/conf.d:/etc/logstash/conf.d \
    -v /data/elk/elasticsearch/config:/etc/elasticsearch   \
    -v /data/elk/elasticsearch/data:/var/lib/elasticsearch \
    -v /data/elk/kibana/config:/opt/kibana/config \
    -v /data/elk/kibana/data:/opt/kibana/data \
    -it \
    -e TZ="Asia/Shanghai" \
    -e ES_HEAP_SIZE="4g"  \
    -e ES_JAVA_OPTS="-Xms8g -Xmx8g" \
    -e "discovery.type=single-node" \
    -e LS_HEAP_SIZE="4g" --name elk sebp/elk
## 日志映射还有权限问题。。。 暂时不加
#    -v /data/elk/log/kibana:/var/log/kibana \
#    -v /data/elk/log/logstash:/var/log/logstash \
#    -v /data/elk/log/elasticsearch:/var/log/elasticsearch \

查看容器日志
docker logs -f -t --tail=100 elk
进入docker容器
docker exec -it elk /bin/bash

参考链接:启动ELK出错的一些解决方案
Logstash文档: https://www.elastic.co/guide/en/logstash/current/index.html
ElasticSearch文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
4年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
4年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
WenDangXia
WenDangXia
Lv1
仍怜故乡水,万里送行舟。
文章
4
粉丝
0
获赞
0