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的主要应用分为两大类:
- 搜索类(带上聚合),考虑事务性,频繁更新,与现有数据库进行同步,通过ES进行查询聚合。
- 日志类,包括日志收集,指标性收集,通过beats等工具收集到kafka等Q中,通过logstash进行转换,输送到ES中,然后通过Kibana进行展示
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