其他分享
首页 > 其他分享> > ELK部署

ELK部署

作者:互联网

ELK不是一款软件,而是Elasticsearch、Logstash和Kibana三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用。ELK Stack已经成为目前最流行的集中式日志解决方案。

该部署以Centos7为例

#这里我只使用了一台设备(192.168.111.129)来进行实验

安装前提:需先配置好1.8+的JAVA环境,可参考JDK的安装配置(Windows、Linux)

Elasticsearch安装

官方介绍:Elasticsearch 是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。对于大数据查询来说,ES更加合适,solr会对于大数据查询会相对慢一些。

ES的主要应用分为两大类:

ElasticSearch下载地址: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D

1.关闭防火墙和SELinux

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0               

vi /etc/selinux/config

SELINUX=enforcing改为SELINUX=disabled 

2.解压安装包

tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /usr/local/

3.配置ES配置文件

cd /usr/local/elasticsearch-7.6.1/config/

vi elasticsearch.ym

#将以下注释去除并修改
#配置es的集群名称
cluster.name: my-es
#节点名称
node.name: node-1
#设置索引数据的存储路径
path.data: /usr/local/elasticsearch-7.6.1/data
#设置日志的存储路径
path.logs: /usr/local/elasticsearch-7.6.1/logs
#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#添加以下设置,设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点(集群内的所有ES IP及端口)
discovery.zen.ping.unicast.hosts: ["127.0.0.1","192.168.111.129:9200"]
Cluster.initial_master_nodes: ["node-1"]

4.创建ES相关配置文件  

mkdir -p /usr/local/elasticsearch-7.6.1/data
mkdir -p /usr/local/elasticsearch-7.6.1/logs

5.创建ES用户并授权

因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户

useradd es

echo "123" |passwd --stdin es

chown -R es:es /usr/local/elasticsearch-7.6.1/

6.配置资源使用

vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 65535 End of file

7.配置虚拟内存大小

vi /etc/sysctl.conf 

#添加下面配置
vm.max_map_count=655360

sysctl -p

8.启动ES

su - es

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

查看日志(因为是nohup启动的,bin下面也会有一个nohup.out记录日志)

cd /usr/local/elasticsearch-7.6.1/logs

tail -f my-es.log

9.访问ES web页面

访问IP:9200即可

Elasticsearch-head安装

elasticsearch-head将是一款专门针对于elasticsearch的客户端工具。elasticsearch-head是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。

由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。

nodejs下载地址:https://nodejs.org/en/download/

ElasticSearch-head下载地址:https://github.com/mobz/elasticsearch-head

1.解压nodejs安装包

tar -xf node-v14.18.0-linux-x64.tar.xz -C /usr/local/

2.配置nodejs的环境变量

vi /etc/profile

export NODE_HOME=/usr/local/node-v14.18.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin

source /etc/profile

node -v

v14.18.0

npm -v

6.14.15

3.建立软连接

ln -s /usr/local/node-v14.18.0-linux-x64/bin/npm  /usr/local/bin/

ln -s /usr/local/node-v14.18.0-linux-x64/bin/node  /usr/local/bin/

4.安装cnpm命令

npm install -g cnpm --registry=https://registry.npm.taobao.org

5.解压ElasticSearch-head安装包并授权

unzip elasticsearch-head-master.zip -d /usr/local/

cd /usr/local/elasticsearch-head-master/

cnpm install

chown -R es:es /usr/local/elasticsearch-head-master/

6.修改ElasticSearch-head配置文件

vim Gruntfile.js

#找到connect,然后在true后面加逗号,然后换行添加hostname: '*' (注意,冒号后面有空格)

vim _site/app.js

#可以通过/app.App = ui进行查找,将localhost修改为ES的IP地址

7.修改ElasticSearch配置文件

cd /usr/local/elasticsearch-7.6.1/config/

vim elasticsearch.yml

#添加如下参数,启用CORS,这里注意后面不允许出现空格
http.cors.enabled: true  
http.cors.allow-origin: "*"

8.重启ES并启动head

可以先通过Kill命令杀掉ES进程

su - es

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

cd /usr/local/elasticsearch-head-master/

nohup npm start &

查看日志

tail -f nohup.out

查看进程

ps -ef|grep grunt
es         4946   4934  0 4月05 pts/0   00:00:02 grunt

9.访问ElasticSearch-head web页面

访问IP:9100即可

可参考elasticsearch-head页面说明及使用继续了解

Kibana安装

可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。说直白点,对数据的所有增删改查操作都可以在kibana中进行。

Kibana下载地址:https://mirrors.huaweicloud.com/kibana/?C=N&O=D

1.解压安装包

tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz -C /usr/local/

2.配置Kibana配置文件

cd /usr/local/kibana-7.6.1-linux-x86_64/config/

vim kibana.yml

#server.port: 5601
#本机IP地址
server.host: "192.168.111.129"
#ES的端口及地址
elasticsearch.hosts: ["http://192.168.111.129:9200"]
elasticsearch.requestTimeout: 90000
#中文化
i18n.locale: "zh-CN"

3.授权及启动Kibana

chown -R es:es /usr/local/kibana-7.6.1-linux-x86_64/

su - es

cd /usr/local/kibana-7.6.1-linux-x86_64/bin/

nohup ./kibana &

查看日志

tail -f nohup.out

4.查看进程

Kibana的进程通过ps -ef|grep kibana是无法查看到的,所以我们可以通过端口来进行查看

netstat -tunlp|grep 5601
tcp        0      0 192.168.111.129:5601    0.0.0.0:*               LISTEN      3974/./../node/bin/ 

要想通过ps来查看的话可以通过ps -ef|grep node来进行查看,不过node查看的话,不一定会准确

ps -ef|grep node
es         3974   3816  1 4月05 pts/0   00:01:54 ./../node/bin/node ./../src/cli
root       5029   4983  0 00:01 pts/0    00:00:00 grep --color=auto node

5.访问Kibana web页面

访问IP:5601即可

6.测试连通性

elasticsearch-analysis-ik分词器插件安装

作用:如果直接使用Elasticsearch的分词器在处理中文内容的搜索时,ES会将中文词语分成一个一个的汉字。当用Kibana作图,按照term来分组的时候,也会将一个汉字单独分成一组。这对于我们的使用是及其不方便的,因此我们引入es之中文的分词器插件es-ik就能解决这个问题。

elasticsearch-analysis-ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

1.创建分词器目录

分词器安装在ES目录下即可,所有在ES目录下创建分词器目录

cd /usr/local/elasticsearch-7.6.1/plugins/

mkdir ik

2.解压安装包

unzip elasticsearch-analysis-ik-7.6.1.zip -d /usr/local/elasticsearch-7.6.1/plugins/ik/

3.重新对ES目录授权

chown -R es:es /usr/local/elasticsearch-7.6.1/

4.重启ES和Kibana

可以先通过Kill命令杀掉ES和Kibana进程

su - es

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

此时的ES日志是可以查看到是有加载分词器插件的

cd /usr/local/kibana-7.6.1-linux-x86_64/bin/

nohup ./kibana &

分词器安装完成后,我们就可以来了解Kibana的一些具体操作了,可参考Kibana使用说明

logstash安装

注:logstash同样依赖Java环境,所以如果要在其他设备上部署也要记得进行配置

logstash下载地址: https://mirrors.huaweicloud.com/logstash/?C=N&O=D

1.解压安装包

tar -zxvf logstash-7.6.1.tar.gz -C /usr/local/

2.创建日志采集配置文件并编辑

cd /usr/local/logstash-7.6.1/config/

因为这里采集的是Mysql的日志,所以需要事先安装好Mysql,可参考Mysql单机部署(二进制方式部署)

vim sunny_log.conf

input{
  #从文件读取日志信息,输送到控制台
  file {
    path => "/var/lib/mysql/logs/query_log.log"
    codec => "json"
    type => "elasticsearch"
    start_position => "beginning"
  }
}
output{
  stdout { codec => rubydebug }         #代表在控制台输出
  elasticsearch {
    hosts => ["192.168.111.129:9200"]   #代表输出至ES
    index => "es-mysql-%{+YYYY.MM.dd}"  #索引名称格式
  }
}

这里我采集的是Mysql的操作日志,可参考Mysql操作日志(general_log)详解

3.启动logstash

这里如果不使root启用,需注意配置文件权限,并且,logstash会对第一次采集的文件先进行一次全量采集

cd /usr/local/logstash-7.6.1/bin/

nohup ./logstash -f ../config/sunny_log.conf &

通过ps -ef | grep logstash即可查看到logstash进程

4.验证

稍等片刻后(这里可能需要等待一段时间,可通过日志观察),我们就可以通过elasticsearch-head界面查看到我们的Mysql操作日志采集索引

此时的日志采集当然也是实时的,可以自行登录mysql操作看看

 

标签:ES,ELK,部署,elasticsearch,usr,7.6,local,es
来源: https://www.cnblogs.com/cjzzz/p/15990389.html