ELK-Linux部署(单台es,版本7.9.1)

Linux环境安装

架构设计以及ELK关键配置
https://blog.csdn.net/W_98_B/article/details/109359039

JDK1.8以上(必须有)

主要参考网站 https://www.cnblogs.com/fswhq/p/10713429.html#autoid-1-0-0

推荐步骤如下(其他方式可能出现不兼容):

下载jdk-8u251-linux-x64.tar.gz 安装包(注意是.gz,而且后面所有的操作都是按照自己下的版本来)

使用Xftp把安装包传入虚拟机下的任意位置(建议在home里)

解压命令

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

建议把jdk安装在usr/java当中,建立文件

mkdir /usr/java

再把解压后的jdk文件夹剪切到usr/java中

mv /home/jdk1.8.0_251 /usr/java

修改环境变量

vim /etc/profile

修改内容:

export JAVA_HOME=/usr/java/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

通过命令让内容生效

source /etc/profile

通过命令javac和java -version测试安装是否成功

elasticsearch安装

主要参考网站:

https://www.cnblogs.com/socketqiang/p/11363024.html

https://blog.csdn.net/qq_17625317/article/details/93143669

https://blog.51cto.com/jonyisme/1919075.

https://blog.csdn.net/qq_38636133/article/details/105621876

https://jingyan.baidu.com/article/7908e85c9fc626af491ad263.html

https://www.cnblogs.com/sloveling/p/elasticsearch.html

推荐下载.gz安装包,通过xftp的方式传入Linux中

压缩包下载地址:https://www.elastic.co/cn/downloads/

!!!注意版本号要一致

解压缩:(版本写为自己下载的版本)

tar -xzvf elasticsearch-7.9.1.tar.gz

将文件夹移到 /user/local目录下(推荐)

mv elasticsearch-7.9.1/usr/local

修改es配置文件

cd /usr/local/elasticsearch-7.9.1/config

vim elasticsearch.yml

修改内容:

#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es
#设置索引数据的存储路径
path.data: /usr/local/elasticsearch-7.9.1/data
#设置日志的存储路径
path.logs: /usr/local/elasticsearch-7.9.1/logs

(上面两个位置自己选,因为es不能用root账号启动,必须用其他账号启动,选后的位置要给权限,如果设置的路径没有文件夹,还要在设置的路径上建立文件夹)

新建用户,并赋予权限,例:

创建账号

useradd testuser

输入密码

passwd testuser

给新建用户赋予es的权限

chown -R testuser:testuser /usr/local/elasticsearch-7.9.1

(这里我偷了个懒,把data和logs放入了解压文件夹中,这么做有危害,如果重新安装es,可能会覆盖里面的内容,或者删除es时,一起被删除。建议放在其他位置例如:/opt/product/data,同时修改对应内容)

继续修改elasticsearch.yml配置文件

#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.seed_hosts: ["172.29.12.35", "[::9200]"]
cluster.initial_master_nodes: ["node-1"]

启动方式为,用非root账户进入elasticsearch-7.9.1文件夹里,输入下面代码

bin/elasticsearch

配置内容就此结束,可以不用再更改,下面是会出现的报错现象以及解决方法:(3,4很重要)

​ 1. 使用root用户启动

`报错信息为java.lang.RuntimeException:can not run elasticsearch as root`

解决方法为:

报错内容为root用户启动问题,用赋予了es文件夹权限的用户进入,并启动

2. 使用testuser启动
报错权限不够

解决方法为:

赋权限,testuser是用户名

chown -R testuser:testuser /usr/local/elasticsearch

然后使用es用户启动 :su testuser

cd /usr/local/elasticsearch

再启动

​ 3. 启动后报错

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解决方法为:

使用root账号,修改文件夹

vim /etc/security/limits.conf

往尾部添加配置(不用加#号)

* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* hard memlock unlimited
* soft memlock unlimited

(这里很可能存在一个limits.conf 修改不生效的问题)

解决方法:

使用root账号,修改limits.conf文件

vim /etc/security/limits.conf

需要设置内容:

UsePAM yes
UseLogin yes

同时,还要修改另外三个文件

vim /etc/pam.d/login
vim /etc/pam.d/system-auth
vim /etc/pam.d/sshd

这三个文件内必须要有一行配置,没有就添加

session required pam_limits.so

4. 启动后报错
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解决方法:

使用root账号,修改文件夹

vi /etc/sysctl.conf 

往尾部添加配置(不用加#号)

fs.nr_open = 10000000
vm.max_map_count=65536
vm.max_map_count=262144

并执行重启命令

sysctl -p

可能还存在两个小问题和一个端口占用问题,并不会太麻烦,只需要把错误信息百度即可,上面的3和4两个错误,是我花费大量时间才解决的,网上的解决方案并不直观。

注意事项:

如果需要在其他服务器访问Linux系统下的es

  1. 关掉Linux的防火墙
  2. 开放设置的端口,一般为9200
  3. 关掉windos的防火墙

通过ping测试,是否能连接

通过Linux本机curl http://172.29.12.35:9200测试,服务是否启动

版本7.9.1启动成功的结果展示:

[2020-09-22T04:06:43,125][INFO ][o.e.n.Node               ] [node-1] started
[2020-09-22T04:06:43,364][INFO ][o.e.l.LicenseService     ] [node-1] license [20e698fa-b150-462a-8945-afb4d9ac1b94] mode [basic] - valid
[2020-09-22T04:06:43,366][INFO ][o.e.x.s.s.SecurityStatusChangeListener] [node-1] Active license is now [BASIC]; Security is disabled
[2020-09-22T04:06:43,378][INFO ][o.e.g.GatewayService     ] [node-1] recovered [0] indices into cluster_state

Logstash安装

相比较而言,logstash的安装较为简单

参考网站:

https://blog.csdn.net/qq_33257527/article/details/83180815

https://www.houjit.com/index.php/bbs/show-113.html

https://blog.csdn.net/qq_17625317/article/details/93143669

https://www.cnblogs.com/wzxmt/p/11031110.html

https://blog.csdn.net/u010739163/article/details/82022327

这里依旧推荐的是下载安装包

官方地址:https://www.elastic.co/cn/downloads/

!!!注意版本号要一致

安装步骤如下:

解压下载的安装包,我使用的版本为:7.9.1

tar -xzvf logstash-7.9.1.tar.gz

接下来还是把文件夹移到usr下的local中

mv logstash-7.9.1 /usr/local

安装就此结束,使用方式有两种,一种是命令执行,另一种是自定义配置文件

  1. 命令执行运行一个简单的logstash:进入解压后的文件夹输入下方命令

bin/logstash -e 'input { stdin { } } output { stdout {} }'

在控制台输入数据

显示结果如下:

[2020-09-22T22:45:41,317][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
wangbiao
{
    "@timestamp" => 2020-09-23T02:46:04.732Z,
      "@version" => "1",
          "host" => "wangibao",
       "message" => "wangbiao"
}
  1. 定义配置文件方式启动

因为是解压文件的方式安装,配置文件都在解压文件夹的config下,其中logstash-simple是文件夹自带的,有做整合es,需要先启动es,不然会报错

这里写一个简单的自己的配置文件启动,在config文件夹下

vim logstash-my.conf
里面添加内容如下:
input {
      stdin { }
}
output {
       stdout {
              codec => rubydebug {}
       }
}

最基本的配置文件定义,必须包含input和output,还有一个可选的filter,input就是读取数据源,而output则是输出,将事件发送到特定目标

这样一来最简单的配置文件就配置好了,后期可以继续添加其余内容

启动方式为:

cd /usr/local/logstash-7.9.1
进入解压文件夹后输入命令
bin/logstash -f config/logstash-my.conf
也可以在任意位置输入命令
/usr/local/logstash-7.9.1/bin/logstash -f /usr/local/logstash-7.9.1/config/logstash-my.conf

以上完成就说明logstash配置完成了,测试往控制台随意输入内容,如果控制台有输出说明成功。

  1. 整合配置logstash和es

如果要做整合,主要关注的就是logstash-my.conf定义的配置文件。

input {
 stdin { }
}
output {
 elasticsearch {
 hosts => "192.168.42.128:9200"
 index => "logstash-test"
 }
 stdout {
 codec => rubydebug {}
 }
}

内容和刚才差不多,只是添加了一个es的内容,这只是一个测试,如果想要添加其他内容都可以,事件源可以是从stdin屏幕输入读取,可以从file指定的文件,也可以从es,filebeat,kafka,redis等读取。stdin就是键盘控制台输入,stdout就是控制台输出,elasticsearch中的hosts是配置的es的ip和端口,index是访问的名字。

在开启了es和logstash时,在windows打开浏览器,访问地址:192.168.42.128:9200/logstash-test/_search

控制台输入的内容,会在浏览器中显示,输入后,刷新就会出,如果想配置其他内容,可以看参考网站中的配置详解和介绍。

kibana安装

安装过程非常简单,依旧是在官网上下载的gz压缩包,注意版本号要一致

通过XFTP把压缩包传入Linux中,解压压缩包

tar -zxvf gz压缩包的名字

再把解压后的文件夹移动到usr下的local中集中管理

mv 文件夹名称 /usr/local

打开文件夹下config中的kibana.yml文件

设置 server.host : "0.0.0.0" 可以让所有人访问

设置 server.name : kibana-test ,给服务起个名字

设置 elasticsearch.hosts : ["http://172.29.12.35:9200"] ,ip和端口填入你的es启动的ip和端口

配置内容就此结束,启动kibana,需要其他人也访问,可以开放端口号,关闭防火墙

cd /usr/local/kibana-7.9.1

bin/kibana

root用户启动:bin/kibana --allow-root

Filebate安装

推荐参考网站:

https://www.cnblogs.com/zsql/p/13137833.html

安装过程非常非常简单,依旧是在官网上下载的gz压缩包,注意版本号要一致

通过XFTP把压缩包传入Linux中,解压压缩包

tar -zxvf gz压缩包的名字

再把解压后的文件夹移动到usr下的local中集中管理

mv 文件夹名称 /usr/local

打开文件夹下config中的filebate.yml文件,修改input和output

#=========================== Filebeat inputs =============================

filebeat.inputs:

- type: log
  enabled: true #启动该配置
  paths:  #配置多个日志路径
    - /var/logs/es_aaa_index_search_slowlog.log
    - /var/logs/es_bbb_index_search_slowlog.log
    - /var/logs/es_ccc_index_search_slowlog.log
    - /var/logs/es_ddd_index_search_slowlog.log
    - /var/logs/*.log

#================================ Outputs =====================================

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts #配多个logstash使用负载均衡机制
  hosts: ["192.168.110.130:5044","192.168.110.131:5044","192.168.110.132:5044","192.168.110.133:5044"]  
  loadbalance: true  #使用了负载均衡

配置结束后,启动使用

./filebeat -e -c filebeat.yml 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值