栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Elastic Stack

Java 更新时间:发布时间: 百科书网 趣学号
Elastic Stack 1、Elastic Stack简介

​ Elastic Stack早期名字叫ELK,是由三个开源软件组成得数据处理框架,后期由于有新的成员加入到ELK中,ELK更名为Elastic Stack以反映其组成成员得变化情况。

Elastic Stack主要组件如下:

Elasticsearch:用来数据检索和存储

Logstash:用来数据传输与清洗

Kibana:用于数据展示,数据可视化等领域

Beats:专门用于数据传送得轻量级组件,logstash是基于java语言开发,运行需要java环境,beats则不同,由go语言开发,更加轻量级,可以将网络、日志、指标、审计等各种数据从不同得数据源头发送到Logstash或者Elasticsearch

现在Elasticsearch、Logstash、Kibana、Beats作为一个整体,目的依然是要提供一套整体处理数据得解决方案,包括数据得收集、清洗、整理、传输、存储、检索、应用等各个方面

2、elasticsearch安装部署 2.1 安装准备

​ elasticsearch基于java语言开发,所以在安装elasticsearch之前,首先要安装jdk,elasticsearch7版本以上都要求jdk1.8以上版本,推荐版本为OracleJDK1.8.0_131,需要注意,elasticsearch默认是集群模式部署,会存在主分片和副本分片,且两个分片不会存在一个服务节点上,推荐部署elasticsearch部署两台以上的服务器

​ elk官方下载地址:https://www.elastic.co/cn/downloads/

2.2 创建普通用户及用户组
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
2.3 修改系统参数

修改最大连接数,/etc/security/limits.conf中添加两行

*	soft	nofile	65536
*	hard	nofile	65536
*	soft	nproc	32000
*	hard	nproc	32000
*	hard	memlock	unlimited
*	soft	memlock	unlimited
2.4 调整虚拟内存vm.max_map_count大小

修改/etc/sysctl.conf文件,添加下面一行内容,使其生效

vm.max_map_count=262144
sysctl -p
2.5 安装与配置
tar xf elasticsearch-7.12.1-linux-x86_64.tar.gz -C /app
mv elasticsearch-7.12.1 elasticsearch
chown -R elasticsearch.elasticsearch elasticsearch
2.6 切换用户修改elasticsearch.yml文件,具体配置如下:
cluster.name: my-application
#配置es得集群名称,默认是elasticsearch,es会自动发现同一网段下得es,如果在同一网段下有多个集群,就可以用这个属性来区分不同得集群
node.name: node-1
#节点名称,默认随机指定一个name列表中得名字
node.attr.rack: r1
#节点部落属性
node.master: true
#指定该节点是都有资格被选举为node,默认伟true,es是默认集群中得第一台机器为master,如果这个太机器挂了就会重新选举master
node.data: true
#指定该节点是否存储索引数据,默认为true,可以选择false,将数据和路由节点区分开
node.attr.box_type: hot
#节点做冷热分离
node.attr.gateway: true
bootstrap.memory_lock: true
#机制使用内存交换功能,防止性能瓶颈
path.data: /app/elasticsearch/data
#数据存储路径
path.logs: /app/elasticsearch/logs
#日志存储路径
network.host: 0.0.0.0
#设置节点绑定地址(IPv4 或者 IPv6)
http.port: 9200
#设置http访问端口
http.cors.enabled: true
http.cors.allow-credentials: true
http.cors.allow-origin: "*"
#以上三个配置在使用head等插件监控集群信息,需要打开
transport.port: 9300
#数据传输、节点连接端口
discovery.seed_hosts: ["host1", "host2"]
#集群发现
cluster.initial_master_nodes: ["node-1","node-2"]
#手动指定可以成为master得所有节点得name或者IP,这些配置将会在第一次选举中进行计算

​ 其他节点参考以上配置,仅需修改node.name与network.host两个配置参数

2.7 服务启动
su - elasticsearch
cd /app/elasticsearch/bin
./elasticsearch
./elasticsearch -d	#后台启动
2.8 服务验证

​ 浏览器访问IP+端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-poTTMT26-1632903166607)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210601142207678.png)]

3、elasticsearch-head安装 3.1 elasticsearch-head简介

​ elasticsearch只是后端提供各种api,无法直观使用它,elasticsearch-head将是一款专门针对于elasticsearch的客户端工具,它是一个基于node.js的前端工程,故在部署直线首先要安装node.js

3.2 安装node.js(Linux环境)
#安装包下载
wget  https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz
#解压
xz node-v8.11.1-linux-x64.tar.xz
tar -xvf node-v8.11.1-linux-x64.tar -C /app/
#环境变量配置
vim /etc/profile #添加以下两行
export NODE_HOME=/app/node-v8.11.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin

source /etc/profile
3.3 npm安装
cd /app/node-v8.11.1-linux-x64
npm install
  • 如果出现以下错误:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NVsri46g-1632903166610)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210601161213512.png)]

    解决方法如下

    find ./ -name package.json
    cp lib/node_modules/npm/package.json ./
    

    再重新执行npm install即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W47BI4z6-1632903166612)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210601161516664.png)]

​ grunt工具包安装

[root@es-01 node-v8.11.1-linux-x64]# npm install -g grunt-cli
/app/node-v8.11.1-linux-x64/bin/grunt -> /app/node-v8.11.1-linux-x64/lib/node_modules/grunt-cli/bin/grunt
+ grunt-cli@1.4.3
added 58 packages in 36.27s

​ 检查当前目录npm安装情况

npm list --depth=0
3.4 安装elasticsearch-head
unzip -d elasticsearch-head-master.zip
3.5 启动npm
cd elasticsearch-head/
npm run start

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oa0vgWdr-1632903166614)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210601162042606.png)]

3.6 浏览器验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YlogE6zA-1632903166615)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210602143046563.png)]

3.7 注意

elasticsearch-head在连接es集群时候,es集群需要添加一下参数配置:

http.cors.enabled: true
http.cors.allow-origin: "*"
4、Kibana安装部署 4.1 kibana概览

​ kibana在整个Elastic Stack中起到了数据可视化的作用,也就是通过图、表、统计等方式将复杂的数据以更加直观的形式展示出来,由于kibana运行于Elasticsearch基础之上,所以将kibana视为elasticsearch的用户图形界面

4.2 安装准备

​ 安装前需要先安装jdk(略)

4.3 创建安装用户
groupadd kibana
useradd -g kibana kibana
4.4 安装与配置

​ 安装目录/app

tar xf kibana-7.12.1-linux-x86_64.tar.gz -C /app/
mv kibana-7.12.1-linux-x86_64 kibana

​ 修改文件所属用户用户组

chown -R kibana.kibana kibana

​ 切换至kibana用户修改kibana.yml

su - kibana
cd /app/kibana/config
vim kibana.yml

​ 具体配置如下:

server.port: 5601
#kibana运行的端口
server.host: "0.0.0.0"
#kibana运行对外释放的服务IP
elasticsearch.hosts: ["http://192.168.53.21:9200"]
#kibana连接ES集群的地址,选择其中一个节点即可
kibana.index: ".kibana"
#kibana在ES集群存储数据的索引
i18n.locale: "zh-CN"
#kibana的界面汉化
4.5 服务启动
cd /app/kibana/bin
./kibana
4.6 服务验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pba8r4v3-1632903166616)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210601170844321.png)]

5、filebeat安装部署 5.1 filebeat概述

​ filebeat一般安装于宿主机,用于收集文本型日志数据

5.2 安装filebeat

​ 解压安装包

tar xf filebeat-7.12.1-linux-x86_64.tar.gz
mv filebeat-7.12.1-linux-x86_64 filebeat

​ 修改配置文件filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log

- type: filestream
  enabled: false
  paths:
    - /var/log/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1

setup.kibana:
  host: "192.168.53.23:5601"

output.elasticsearch:
  hosts: ["192.168.53.21:9200"]

processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

​ 需要修改的位置不多,这里没有注释或删掉原本没有注释得内容,修改需要收集得日志路径,kibana得地址以及es得地址,也可以先传送到logstash后再由logstash传送给elasticsearch

5.3 服务启动
cd /app/filebeat
./filebeat -e -c filebeat.yml

​ 后台启动filebeat,如果是离线安装得话需要手动编辑/usr/lib/systemd/system/filebeat.service文件,内容如下:

[Unit]
Description=filebeat server daemon
documentation=/app/filebeat/filebeat -help
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Environment="BEAT_CONFIG_OPTS=-c /app/filebeat/filebeat.yml"
ExecStart=/app/filebeat/filebeat $BEAT_CONFIG_OPTS
Restart=always

[Install]
WantedBy=multi-user.target
systemctl start filebeat.service
5.4 浏览器验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRuwqrfj-1632903166617)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210602144045529.png)]

在kibana中添加索引进行展示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BJBX7qNY-1632903166618)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210602150227412.png)]

6、Nginx日志收集 6.1 收集nginx日志并且自定义索引名称

​ 修改filebeat.yml文件如下:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log

- type: filestream
  enabled: false
  paths:
    - /var/log/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1

setup.kibana:
  host: "192.168.53.23:5601"

output.elasticsearch:
  hosts: ["192.168.53.21:9200"]
  index: "nginx-%{[agent.version]}-%{+yyyy.MM}"
  
setup.ilm.enabled: false
setup.template.eanbled: false
setup.template.name: "index"
setup.template.pattern: "index-*"
logging.level: info
logging.to_files: true
logging.file:
  path: /app/filebeat/logs/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0644

重新启动filebeat

6.2 浏览器验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9gepzfCk-1632903166619)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210602152257239.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDwJ5Wio-1632903166619)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210602152344377.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7bE9xdK1-1632903166620)(C:UsersG0321AppDataRoamingTyporatypora-user-imagesimage-20210602152440850.png)]

自定义索引名称完成,nginx日志也可定义成json格式进行收集,具体配置如下:

vim nginx.conf

log_format  json  '{ "time_local": "$time_local", '
					'"remote_addr": "$remote_addr", '
					'"remote_user": "$remote_user", '
					'"referer": "$http_referer", '
					'"request": "$request", '
					'"status": $status, '
					'"bytes": $body_bytes_sent, '
					'"agent": "$http_user_agent", '
					'"x_forwarded": "$http_x_forwarded_for", '
					'"up_addr": "$upstream_addr", '
					'"up_host": "$upstream_http_host", '
					'"upstream_time": "$upstream_response_time", '
					'"request_time": "$request_time"'
				'}';
	access_log /var/log/nginx/access.log	json;

修改filebeat配置文件
inputs中添加
json.keys_under_root: true
json.overwite_keys: true
示例:

filebeat.inputs:

- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwite_keys: true
###......

重新启动nginx和filebeat服务即可

添加可视化,仪表盘

6.3 收集java日志

filebeat.yml配置如下:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/elasticsearch/elasticsearch.log
	
  multiline.pattern: '^s'	 #正则表达式,匹配行
  multiline.negate: true
  multiline.match: after
  
output.elasticsearch:
  hosts: ["192.168.53.21:9200"]
  index: "es-%{[agent.version]}-%{+yyyy.MM}"
  
setup.ilm.enabled: false
setup.template.enabled: false

###…

重新启动nginx和filebeat服务即可

添加可视化,仪表盘

### 6.3 收集java日志

filebeat.yml配置如下:

```yaml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/elasticsearch/elasticsearch.log
	
  multiline.pattern: '^s'	 #正则表达式,匹配行
  multiline.negate: true
  multiline.match: after
  
output.elasticsearch:
  hosts: ["192.168.53.21:9200"]
  index: "es-%{[agent.version]}-%{+yyyy.MM}"
  
setup.ilm.enabled: false
setup.template.enabled: false
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/276118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号