ELK单机环境搭建

前言

最近在linux下搭建了一套ELK环境,ELK简单来说,ElasticSearch 作为搜索引擎存储数据,Logstash 负责收集数据并输出给ElasticSearch ,Kibana 可以理解为elasticsearch的显示面板。

本文搭建的ELK环境,主要用来收集应用系统的日志,是单机版;如果想升级成集群版,可以将ElasticSearch 部署成集群,哪个服务器需要采集数据就安装Logstash, 显示面板Kibana可以只安装在一个服务器节点即可。

准备工作

1.安装jdk

由于ElasticSearch 需要 JDK 环境,所以要提前安装好 JDK 。另外,可能jdk的安装路径各有不同,所以可以提前给jdk建立一个软连接 (否则elasticSearch启动时会报错)。

which java

在这里插入图片描述
如果结果不是上图显示,可以执行一下命令

ln -s  执行which java所显示的路径  /usr/bin/java

2.创建ES用户

通常 ElasticSearch 及kibana 都是不用root去启动的,所以这里创建一个新用户 ES。

useradd es
passwd es

创建完用户之后,要对其进行授权。下面的 elk安装 ,我专门建了一个 文件夹,然后将该文件夹授权给ES用户,如果操作过程中不小心忘了赋权限,执行不了启动命令,就再授权一下。

[root@ELK-slave home]# cd /usr/local/
[root@ELK-slave local]# mkdir elk
[root@ELK-slave local]# chown -R es:es /usr/local/elk

下面进行安装 ,注意一点,3个软件这里都是通过安装包进行部署的,要注意版本的一致性。下面安装时,可切换到 es用户。

ElasticSearch

在 /usr/local/elk/ 下建立 es文件夹,下载安装包,并解压

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz

在这里插入图片描述
解压完成后,修改配置文件。配置中要指定数据和日志路径,所以我提前建好文件夹。
ELK单机环境搭建_第1张图片
修改config目录下的elasticsearch.yml文件,加入以下内容(单机配置)

cluster.name: es
node.name: node-1
path.data: /usr/local/elk/es/data
path.logs: /usr/local/elk/es/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.179.129"]
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"

配置完成后,执行启动命令

 nohup ./elasticsearch > /usr/local/elk/es/run.log 2>&1 &

在这里插入图片描述
查看运行日志,并访问对应的链接,http://192.168.179.129:9200/
ELK单机环境搭建_第2张图片
到这里,就启动成功了。

其实在启动时,可能会报虚拟内存不足、最大文件数太小等问题,所以如果启动失败,可以进行以下配置
1.切换root用户 ,编辑 limits.conf (vi /etc/security/limits.conf),末尾加入以下内容

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

2.切换root用户,修改 sysctl.conf (vi /etc/sysctl.conf),加入如下配置

vm.max_map_count=655360

并执行以下命令,使配置生效。

sysctl -p

完成上述配置后,切换到es用户,重新启动。

Logstash

在 /usr/local/elk/ 下建立 logstash文件夹,下载安装包,并解压

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.6.2.tar.gz

在这里插入图片描述
logstash通过 input采集数据,output 输出数据,并且支持过滤功能。输入、输出都支持多种插件,如标准输入、文件输入、kafka 等,输出包括 elasticsearch 、文件,kafka等等。
为方便,先使用 标准输入输出查看下效果,进入bin目录,执行以下命令

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

ELK单机环境搭建_第3张图片
我们的目的是输出到 elasticsearch ,所以使用 标准输入,并输出到 elasticsearch 再测试一下

./logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.179.129:9200"] } }'

输入字符,然后查看对应的elasticsearch中是否存在
ELK单机环境搭建_第4张图片
ELK单机环境搭建_第5张图片
至此,说明logstash输出到 elasticsearch没有问题,这时可以进行正式配置了。logstash启动时,输入、输出的配置都通过配置文件来定义,进入config 目录,创建 springboot-logstash.conf文件。
在这里插入图片描述
这里要采集系统应用的日志,输入采用 文件方式,修改 springboot-logstash.conf 配置

input {
       file {
          path => "/usr/local/activity/info.log"
          type => "activity"
          start_position => "beginning"
        }

	file {
          path => "/usr/local/activityapi/info.log"
          type => "activityapi"
          start_position => "beginning"
        }
}

output {
       
       if [type] == "activity" {
		elasticsearch {
			hosts => ["192.168.179.129"]
			index => "activity-%{+YYYY.MM.dd}"
		}
       } else if [type] == "activityapi" {
		elasticsearch {
			hosts => ["192.168.179.129"]
			index => "activityapi-%{+YYYY.MM.dd}"
		}
       }		
}

执行启动命令

nohup ./logstash -f ../config/springboot-logstash.conf --config.reload.automatic 2>&1 &

不同的应用(activity、activityapi),建立了不同的索引,并以日为单位做分割,可以查看elasticsearch的索引情况
ELK单机环境搭建_第6张图片
此时,logstash启动成功

Kibana

在 /usr/local/elk/ 下建立 kibana文件夹,下载安装包,并解压

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz

修改配置文件
ELK单机环境搭建_第7张图片

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.179.129:9200"]

ELK单机环境搭建_第8张图片
然后启动即可,注意,不能使用root用户启动,切换到es用户

nohup ./kibana &

在这里插入图片描述
启动之后,访问 链接 http://192.168.179.129:5601/
ELK单机环境搭建_第9张图片

简单使用

kibana安装之后,做一下配置就可以使用了,先找到管理页面,点击 Index Patterns
ELK单机环境搭建_第10张图片
第一步,定义的 index pattern ,其实和 elasticsearch 对应的 index有关,比如上文中 activity 的日志,都是以 activity- 为前缀,我定义 activity-* ,就可以匹配对应的所有日期下的日志
ELK单机环境搭建_第11张图片
第二步,点击保存
ELK单机环境搭建_第12张图片
同理,我对 activityapi 也配置对应的 index pattern,activityapi* 。

然后点击discover版块,可以看到对应的数据
ELK单机环境搭建_第13张图片
我们可以通过切换对应 的index pattern ,来查看相关的日志
ELK单机环境搭建_第14张图片
这就相当于,有了一个实时可视化的tail -f 日志工具,并且支持内容搜索。
ELK单机环境搭建_第15张图片
至此,单机版的ELK环境就搭建完成了。

你可能感兴趣的:(elk,elasticsearch)