ELK日志收集(一)

一:ELK简介

ELK=Elasticsearch+Logstash+kibana

Elasticsearch简称ES,是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索搜索、支持分布式可实现高可用、提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。

 

二:ELK单节点部署

1.时间同步

[root@node_01 ~]# ntpdate time1.aliyun.com          

2. 准备java环境

[root@node_01 ~]# java-version         #验证jiava环境是否准备好

3.ES官网下载ES软件包,顺带将filebeat,kibana的rpm包一并下载

友情提示:ES,filebeat,kibana三者在下载时注意版本保持一致。

4.单节点部署

[root@node_01 ~]# rpm -ivh elasticsearch-6.8.13.rpm

[root@node_01 ~]# systemctl daemon-reload

[root@node_01 ~]# systemctl enable elasticsearch.service          # 加入开机自启

[root@node_01 ~]# systemctl start elasticsearch.service             #启动服务

[root@node_01 ~]# netstat -lntp |grep java                               #注意,服务启动后养成习惯查看是否启动成功

[root@node_01]# curl 127.0.0.1:9200                                        #出现一下内容证明安装成功
{
"name" : "wUdyBOT",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "okeoXx9-QWefW6jCVhU1Xw",
"version" : {
"number" : "6.8.13",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

5.配置文件

#查看ES相关配置文件

[root@node_01 ~]#  rpm -qc elasticsearch
/etc/elasticsearch/elasticsearch.yml            #主配置文件
/etc/elasticsearch/jvm.options                    #虚拟内存设置文件
/etc/elasticsearch/log4j2.properties            #日志配置
/etc/elasticsearch/role_mapping.yml           #索引的规则文件
/etc/elasticsearch/roles.yml                       #规则文件
/etc/init.d/elasticsearch                            #启动脚本
/etc/sysconfig/elasticsearch                      #es的系统配置
/usr/lib/sysctl.d/elasticsearch.conf             #库文件的配置
/usr/lib/systemd/system/elasticsearch.service      #systemd管理启动程序

 

6.修改虚拟内存设置文件

[root@es01 ~]# vim /etc/elasticsearch/jvm.options
······
-Xms1g      
-Xmx1g

注意,这里的内存设置一般是机器内存的一半,但是最大不要超过32G。

 

7.修改.yml配置文件

[root@es01 ~]# vim /etc/elasticsearch/elasticsearch.yml

#cluster.name: my-application     #集群名称【单节点不需要配置】

node.name: es-1                        #节点名字

path.data: /data/es/data            #数据存放目录

path.logs: /data/es/log              #日志存放路径

bootstrap.memory_lock: true       ##开启内存锁(在CentOS7中支持内存锁并且要修改启动脚本)

network.host: 10.0.0.71  172.16.1.71    #ES监听地址

http.port: 9200                               #ES监听端口

注意:为什么要开启内存锁?
在elasticsearch配置文件中,如果没有修改bootstrap.memory_lock 参数的话,默认为false,会导致elasticsearch缓存的文件频繁的被交换出去,从而导致在查询过程中频繁的读取磁盘,磁盘IO很高。
所以,我们需要手动将bootstrap.memory_lock: true。

##最终配置:
[root@es01 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
node.name: es-1
path.data: /data/es/data
path.logs: /data/es/log
bootstrap.memory_lock: true
network.host: 10.0.0.71  172.16.1.71
http.port: 9200

8.根据修改后的配置文件创建数据目录和日志目录

[root@es01 ~]# mkdir  /data/es/{data,log} -p

#授权
[root@es01 ~]# chown -R elasticsearch.elasticsearch /data/

 

9.重启服务

此时,我们重启服务发现启动失败。查看日志确定报错原因

[root@es01 ~]# less /data/es/log/elasticsearch.log
[2020-11-30T16:36:12,351][ERROR][o.e.b.Bootstrap ] [es-1] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked
##报错说内存没有锁定

 

10.解决报错

##修改启动脚本
[root@es01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
... ...
[Service]
... ...
#修改内存限制
LimitMEMLOCK=infinity

#重新加载启动脚本
[root@es01 ~]# systemctl daemon-reload

[root@es01 ~]# systemctl restart elasticsearch

启动后检查,服务启动成功。

 

三.与ES进行交互

##1.使用curl命令与ES进行交互

特点:

1. 使用不方便,容易出错,命令复杂
2.不需要安装任何服务和插件,只需要curl命令

使用方式:

###1>创建索引(建库)

[root@es01 ~]# curl -XPUT '10.0.0.71:9200/student?pretty'
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "student"
}
```

###2>插入数据

[root@es01 ~]# curl -XPUT '10.0.0.71:9200/student/user/1?pretty' -H 'Content-Type: application/json' -d '{"name": "lhd","sex":"man","age":"18","about":"good good study","interests":["chinese","english"]}'
{
"_index" : "student",
"_type" : "user",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}

### 3>查看数据

[root@es01 ~]# curl -GET '10.0.0.71:9200/student/user/1?pretty'
{
"_index" : "student",
"_type" : "user",
"_id" : "1",
"_version" : 3,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "lhd",
"sex" : "man",
"age" : "18",
"about" : "good good study",
"interests" : [
"chinese",
"english"
]
}
}

##2.使用插件的方式进行交互

  插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发爱好者提供的插件,可以实现对elasticsearch集群的状态监控与管理配置等功能,我们现在要安装的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。

安装Elasticsearch的head插件时,要安装npm,npm的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。

在Elasticsearch 5.x版本以后不再支持直接安装head插件,而是需要通过启动一个服务方式。
Github地址:https://github.com/mobz/elasticsearch-head

特点

1.查看数据简单,操作简单

2.需要安装nodejs,安装复杂费时

安装插件方式一:

#安装npm(只需要在一个节点安装即可,如果前端还有nginx做反向代理可以每个节点都装)
[root@elkstack01 ~]# yum install -y npm
#进入下载head插件代码目录
[root@elkstack01 src]# cd /usr/local/
#从GitHub上克隆代码到本地
[root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
#克隆完成后,进入elasticsearch插件目录
[root@elkstack01 local]# cd elasticsearch-head/
#清除缓存
[root@elkstack01 elasticsearch-head]# npm cache clean -f
#使用npm安装n模块(不同的项目js脚本所需的node版本可能不同,所以就需要node版本管理工具)
[root@elkstack01 elasticsearch-head]# npm install -g n
#安装最新版本n模块
[root@elkstack01 elasticsearch-head]# n stable
#生成grunt
[root@elkstack01 elasticsearch-head]# npm install grunt -save
#确认生成grunt文件
[root@elkstack01 elasticsearch-head]# ll node_modules/grunt
#执行安装grunt
[root@elkstack01 elasticsearch-head]# npm install
#后台启动head插件(切记,必须在插件目录下执行启动命令)
[root@elkstack01 elasticsearch-head]# npm run start &
#验证端口是否启动成功
[root@elkstack01 elasticsearch-head]# netstat -lntup
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 11293/grunt
#启动成功后,修改elasticsearch配置文件
[root@elkstack01 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
#添加如下两行,开启跨域访问支持(添加在配置文件最后即可)
http.cors.enabled: true
http.cors.allow-origin: "*"
#重启elasticsearch
[root@elkstack01 elasticsearch-head]# /etc/init.d/elasticsearch restart

插件安装方式二

1.windows下创建一个目录
2.将插件解压到目录下
3.谷歌浏览器,右上角三个点或者是哪个竖线或者箭头
4.更多工具 -> 扩展程序
5.打开开发者模式
6.加载已解压的扩展程序,选中解压包的目录
7.使用时,直接点击搜索框后面的放大镜

 方式三使用kibana进行交互

1.安装kibana

1).上传包
[root@es01 ~]# rz kibana-6.6.0-x86_64.rpm
[root@es01 ~]# ll
-rw-r--r-- 1 root root 185123116 Jan 29 2019 kibana-6.6.0-x86_64.rpm

2).安装
[root@es01 ~]# rpm -ivh kibana-6.6.0-x86_64.rpm

3)配置

[root@es01 ~]# grep '^[a-z]' /etc/kibana/kibana.yml
server.port: 5601
server.host: "10.0.0.71"
elasticsearch.hosts: ["http://172.16.1.71:9200"]

4)启动

[root@es01 ~]# systemctl start kibana

#验证
[root@es01 ~]# netstat -lntp
tcp 0 0 10.0.0.71:5601

5)访问测试

http://10.0.0.71:5601

 

posted @ 2021-04-12 17:37  芒果~~  阅读(355)  评论(0编辑  收藏  举报