在Linux环境下配置ELK(elasticsearch+Kibana)-含网盘下载文件

  • 1.下载kibana和ES
  • 2.将需要的tar文件上传到Linux服务器
  • 3.安装ES和修改配置文件
  • 3.1 解压ES
  • 3.2 解压JDK
  • 3.3 配置JDK的环境变量
  • 3.4 使用文件立即生效
  • 3.5 测试
  • 3.6 修改ES配置文件
  • 3.7 启动ES
  • 3.8 ES在启动遇到的问题以及解决方案
  • 4.安装kibana
  • 4.1 解压kibana
  • 4.2 进入解压后的kibana中的config
  • 4.3 配置kibana的端口号
  • 4.4 配置kibana的IP地址
  • 4.5 配置ES的IP地址
  • 4.6 运行kibana
  • 4.7 测试
  • 4.8 kibana的三种状态


1.下载kibana和ES

jdk下载 提取码:saya
es下载 提取码:hqmy
kibana下载 提取码:g35b

2.将需要的tar文件上传到Linux服务器

在这里我使用的是xshell的Xftp,至于上传到linux服务器的那个文件夹,可以随意。我上传的是:

/usr/local/apps
  • 上传kibana和JDK
    PS:因为kibana和ES都是基于java开发的,所以二者都需要JDK环境
  • 上传ES和JDK同上

注意: 如果出现上传文件错误的情况时,说明你的目标文件夹也就是apps文件夹的权限不够,解决:

命令:chmod 777 目标文件夹

3.安装ES和修改配置文件

3.1 解压ES

tar -zxvf  elasticsearch-6.4.0.tar.gz

3.2 解压JDK

tar -zxvf  jdk-8u231-linux-x64.tar.gz

3.3 配置JDK的环境变量

vim /etc/profile

跳转到最后一行,添加以下内容:

export JAVA_HOME=JDK解压的全路径
export PATH=$PATH:$JAVA_HOME/bin

3.4 使用文件立即生效

source /etc/profile

3.5 测试

javac
-g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used

出现上述内容代表JDK配置成功!

3.6 修改ES配置文件

进入ES解压后的文件夹,进入config目录

vim elasticsearch.yml

修改以下配置:

  • 修改集群的名称,此处没有具体的限制
cluster.name: my-cluster
  • 修改ES的节点名称(节点就是在整个ES集群中某一台服务器)
node.name: node-1
  • 配置ES缓存库来存放数据的文件夹(推荐修改到ES的根目录下创建文件夹data)
path.data: /usr/local/apps/elasticsearch-6.4.0/data
  • 配置ES所存放的日志的目录(推荐放到ES根目录的logs目录)
path.logs:  /usr/local/apps/elasticsearch-6.4.0/logs
  • 因为ES中的数据是在内存中,并且内存和硬盘是需要进行交互的,所以ES非常消耗内存,有时候或造成内存跑满的情况,使用配置一个内存机制(内存锁)对计算机的内存进行保护,确保JVM内存不会被跑满。我们不需要这个机制,所以设置成false
bootstrap.memory_lock: false
  • 配置ES所绑定服务器的IP地址
network.host:主机IP
  • 配置ES的端口号,推荐默认9200端口号,如果想改也可以更改(如果配置的是伪集群,ES的端口必须更改)
http.port:9200
  • 配置集群节点
    此例子只配置一台ES
discovery.zen.ping.unicast.hosts: ["主机IP"]

如果是一个ES集群

discovery.zen.ping.unicast.hosts: ["主机01IP","主机02IP",....]

3.7 启动ES

启动ES的时候,不能使用root用户,因为root的用户的权限太大,ES防止root用户篡改ES配置文件。所以需要重新创建一个用户:例如:esuser(名字随便)

  • 添加用户
useradd 用户名
  • 设置密码
passwd 用户名
  • 给新用户授权
chown -R 用户名 /ES解压的目录
  • 切换到新用户来启动ES
    在ES的bin目录下启动
./elasticsearch

看到以下信息表示启动成功

[2020-03-20T09:22:39,716][INFO ][o.e.l.LicenseService     ] [node-1] license
[1b33a55a-6017-47e3-ab94-4f44e460f3bc] mode [basic] - valid
  • 验证
    打开浏览器输入:
主机IP:9200

es文档下载_es文档下载

显示上述图片中的内容代表启动成功!

3.8 ES在启动遇到的问题以及解决方案

问题一:

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: 
can not run elasticsearch as root

解决方案:同上,新创建一个用户

问题二:

java.lang.UnsupportedOperationException: seccomp unavailable:
 CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and 
 CONFIG_SECCOMP_FILTER are needed

在ES运行期间,需要去加载CONFIG_SECCOMP和CONFIG_SECCOMP_FILTER,去加载这些
配置的时候发现CentOs6.X默认没有。
解决方案:
不让ES去加载CONFIG_SECCOMP,此时我们需要修改elasticsearch.yml配置文件

在config文件夹中

vim elasticsearch.yml

在最后一行添加:

bootstrap.system_call_filter: false

问题三:

max file descriptors [4096] for elasticsearch process is too low,
 increase to at least [65536]

系统默认给所有程序配置文件描述器(java是一个解释性语言)默认给了4096,但是对ES来说 不够用,ES至少需要65536
解决方案:
去修改linux为文件所提供的最大线程数

vim /etc/security/limits.conf
* soft nproc 655350
* soft nofile 655350
* hard nproc 655350
* hard nofile 655350

问题四:

max number of threads [1024] for user [esuser] is too low, 
increase to at least [4096]

linux默认给所有用户所提供的,可操作最大线程数是1024,但是esuser这个用户是需要操作ES的对于ES来说就不够,ES最低需要4096
解决方案:

vim /etc/security/limits.d/90-nproc.conf
*          soft    nproc     4096
root       soft    nproc     unlimited

问题五:

max virtual memory areas vm.max_map_count [65530] is too low, 
increase to at least [262144]
 Linux系统所默认分配的虚拟内存是65530,ES不够用,至少要增加到262144

解决方案:

vim /etc/sysctl.conf

使用大写G跳转到文本的末尾,添加:

vm.max_map_count = 262144

让配置立即生效

sysctl -p

问题六:

.Exception in thread "main" java.nio.file.AccessDeniedException: 
/home/apps/elasticsearch-6.4.0/config/jvm.options

这个异常之所以会出现,是因为之前使用root运行过一次。ES就会在data目录中生 成节点的数据信息。

解决方案:

切换root用户将node中的信息删除。如果在之前没有使用过root用户启动ES,此问题不会出现。

4.安装kibana

4.1 解压kibana

tar -zxvf  kibana-6.4.0-linux-x86_64.tar.gz

4.2 进入解压后的kibana中的config

vim kibana.yml

4.3 配置kibana的端口号

**注意:**一定不要和ES的端口号一致,默认为5601

server.port:5601

4.4 配置kibana的IP地址

**注意:**必须要带上双引号,否则不生效

server.host: "主机IP"

4.5 配置ES的IP地址

**注意:**一定要带双引号和http://

elasticsearch.url: "http://ES主机IP:9200"

4.6 运行kibana

在bin目录下运行

./kibana

4.7 测试

在浏览器地址栏中输入:

主机IP:5601

es文档下载_elasticsearch_02

显示上述图片,代表启动成功!

4.8 kibana的三种状态

红色:报错状态,程序已经不能正常运行了
绿色:一切正常
黄色:有些配置违反了kibana的规定,可能会出现问题,但是目前不影响kibana的正常运行。