在群晖 DS218+ 的 Docker 环境上运行 ELK
- 安装Docker套件
- 下载ELK映像,此处我使用官方映像的 6.4.0 版本,在注册表中搜索,双击选择版本后下载。下载过程中先进行下列设置。
- 启用 admin 用户,若没有设置过密码请修改 admin 密码
- 启用 DSM 的 ssh 登录
- 通过 ssh 登录 DSM,登录用户为 admin,密码为你刚刚设置的密码。
- 登录到 admin 用户之后通过
sudo -i
命令切换到 root 用户,首次登录 root 用户会要求你设置初始密码。 - 切换到 root 用户之后,修改
/etc/sysctl.conf
,增加(或修改)vm.max_map_count=262144
一行,保存退出。之后 DSM 重启也不会恢复此设置。 - 此时该设置还未生效,索性再执行
sysctl -w vm.max_map_count=262144
命令直接修改配置。
ElasticSearch
- 等待ES映像下载完成后启动,会失败,查看日志应该能找到
java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
这样的报错提示这是需要我们手动修改 es 配置,加上这一行bootstrap.system_call_filter: false
- 再次启动刚刚失败退出的 es 容器,在容器还没报错退出之前,使用终端机,点击“新增”按钮创建一个 bash 端口,快速修改 /usr/share/elasticsearch/config/elasticsearch.yml 文件,加入
bootstrap.system_call_filter: false
这行配置,保存退出。 - 保存退出之后当次启动仍会失败,因为修改完之前配置已经被读取启动了。再次启动该容器,观察日志,看到以下日志内容基本就代表成功启动了
- 可以通过浏览器访问 es 容器对应的9200端口,我这里看到我 es 容器的 9200 端口对应的是 32867 端口因此访问 {NAS的IP}:32867 端口即可看到图中的返回代表 ES 配置完成。
Kibana
- 接下来启动 kibana 容器,启动时建议设置端口映射,因为经常需要通过本地浏览器访问 kibana,使用一个固定端口比较方便,此处我使用 kibana 原本的端口 5601
- 设置容器链接,左边容器名称选择你刚刚启动的 es 容器名称,右侧别名建议使用
elasticsearch
(如果你想要手动修改 kibana 配置文件的话,也可以自己设置为别的别名) - 然后启动即可,观察 kibana 容器的日志输出,如图代表启动完成可以使用浏览器访问 {NAS的IP}:5601 端口(根据刚刚第一步配置的端口映射中左边的本地端口),即可看到 kibana 的界面
Logstash
- 新建一个共享文件夹,专门存放用于导入 Logstash 的数据文件,创建时建议关闭回收站功能,可能会影响程序读写删除性能
- 使用 File Station 套件,右键刚刚创建的共享文件夹,进入属性界面
- 点击权限、新增,选择 Everyone 组后选择读取权限,并勾选左下角应用到文件夹、子文件夹及文件,保存
- 创建 Logstash 容器,创建时在高级设置中添加 es 容器的链接,同 kibana 部分的第二步。
- 在“卷”标签页中,增加挂载刚刚新建的数据目录,根据习惯填写装载路径
- 启动容器,新建一个 bash 终端,根据需求修改
/usr/share/logstash/pipeline/
中的配置文件。
后记
尝试在没有增加内存的 DS218+ 上搭建 ELK,虽然能够成功运行,但是内存使用率一直会保持在80 以上,并且还会让正常的索引任务失败,提示内存不足,建议还是增加内存之后再玩这个吧。
阅读量 -