ELK在Linux上部署教程

Docker Compose搭建ELK

Elasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存

shell 复制代码
sysctl -w vm.max_map_count=262144

创建Elasticsearch数据挂载路径

shell 复制代码
mkdir -p /echola/elasticsearch/data

对该路径授予777权限

shell 复制代码
chmod 777 /echola/elasticsearch/data

创建Elasticsearch插件挂载路径

shell 复制代码
mkdir -p /echola/elasticsearch/plugins

创建Logstash配置文件存储路径

shell 复制代码
mkdir -p /echola/logstash

在该路径下创建logstash-echola.conf配置文件(没有vim命令,可以使用yum install vim命令安装)

shell 复制代码
vi /echola/logstash/logstash-echola.conf

内容如下

shell 复制代码
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => "es:9200"
    index => "echola-logstash-%{+YYYY.MM.dd}"
  }
}

创建ELK Docker Compose文件存储路径:

shell 复制代码
mkdir -p /echola/elk

在ellk目录下创建docker-compose.yml文件

shell 复制代码
vi /echola/elk/docker-compose.yml

内容如下:

yml 复制代码
version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.4.1
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #集群名称为elasticsearch
      - "discovery.type=single-node" #单节点启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #jvm内存分配为512MB
    volumes:
      - /echola/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /echola/elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
  kibana:
    image: kibana:6.4.1
    container_name: kibana
    links:
      - elasticsearch:es #配置elasticsearch域名为es
    depends_on:
      - elasticsearch
    environment:
      - "elasticsearch.hosts=http://es:9200" #因为上面配置了域名,所以这里可以简写为http://es:9200
    ports:
      - 5601:5601
  logstash:
    image: logstash:6.4.1
    container_name: logstash
    volumes:
      - /echola/logstash/logstash-echola.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch
    links:
      - elasticsearch:es
    ports:
      - 4560:4560

切换到 /echola/elk ,启动docker-compose

shell 复制代码
docker-compose up -d

可能会出现权限不够:-bash: /usr/local/bin/docker-compose: 权限不够

shell 复制代码
chmod +x /usr/local/bin/docker-compose

ElasticSerach启动报错:

java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes

以为是 /usr/share/elasticsearch/data/nodes目录权限不够,其实是宿主机上的/echola/elasticsearch/data目录权限不足造成

shell 复制代码
chmod 777 /echola/elasticsearch/data

Failed to clear cache for realms [[]]

清除区域缓存失败,刷新一下网页即可

补充:

访问Kibana,显示:Cannot connect to the Elasticsearch cluster currently configured for Kibana

重启Docker

shell 复制代码
systemctl restart docker

Logstash中安装json_lines插件

使用如下命令进入到Logstash容器中

shell 复制代码
docker exec -it logstash /bin/bash

切换到/bin目录,安装json_lines插件,然后退出

shell 复制代码
cd /bin/
logstash-plugin install logstash-codec-json_lines

可能会出现以下错误:内存不够,先关掉ES和Kibana

然后访问IP地址:http://192.168.2.203:5601/

可能存在防火墙,导致网站访问不了

查看防火墙状态

shell 复制代码
systemctl status firewalld

停止防火墙

shell 复制代码
systemctl stop firewalld

禁止防火墙开机启动

shell 复制代码
systemctl disable firewalld

或者指定开放端口

shell' 复制代码
systemctl start firewalld

开放端口

shell 复制代码
firewall-cmd --zone=public --add-port=5601/tcp --permanent

重新加载

shell 复制代码
firewall-cmd --reload

Kibana图示:

相关推荐
xcs1940511 分钟前
集运维 麒麟桌面版v10 sp1 2403 aarch64 离线java开发环境自动化安装
运维·自动化
BAOYUCompany14 分钟前
暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
运维·服务器
超龄超能程序猿1 小时前
Bitvisse SSH Client 安装配置文档
运维·ssh·github
奈斯ing1 小时前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构
鳄鱼皮坡2 小时前
仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器
运维·服务器
即将头秃的程序媛2 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
小Mie不吃饭2 小时前
FastAPI 小白教程:从入门级到实战(源码教程)
运维·服务器
真实的菜3 小时前
Jenkins 插件深度应用:让你的CI/CD流水线如虎添翼 [特殊字符]
servlet·ci/cd·jenkins
fo安方3 小时前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
超喜欢下雨天4 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2