ELK日志分析系统
一、概览
1、日志服务器
-
提高安全性
-
集中存放日志
-
缺陷----------对日志的分析困难
2、ELK日志分析系统
- Elasticsearch
- Logstash
- Kibana
3、日志处理步骤
-
3.1.将日志进行集中化管理
-
3.2.将日志格式化(Logstash) 并输出到Elasticsearch
-
3.3.对格式化后的数据进行索引和存储(Elasticsearch)
-
3.4.前端数据的展示(Kibana)
4、Elasticsearch的概述
提供了一个分布式多用户能力的全文搜索引擎
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
5、Elasticsearch核心概念
- 接近实时
- 集群
- 节点
- 索引---------索引(库)→类型(表)→文档(记录)
- 分片和副本
6、Logstash介绍
一款强大的数据处理工具
可实现数据传输、格式处理、格式化输出
数据输入、数据加工(如过滤,改写等)以及数据输出
7、LogStash主要组件
- Shipper
- Indexer
- Broker
- Search and Storage
- Web Interface
8、Kibana介绍
- 一个针对Elasticsearch的开源分析及可视化平台
- 搜索、查看存储在Elasticsearch索弓|中的数据
- 通过各种图表进行高级数据分析及展示
9、Kibana主要功能
- Elasticsearch无缝之集成
- 整合数据,复杂数据分析
- 让更多团队成员受益
- 接口灵活,分享更容易
- 配置简单,可视化多数据源
- 简单数据导出
10、Elasticsearch的基础核心概念
-
10.1、接近实时(NRT)
elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜素到有-个轻微的延迟(通常是1秒) -
10.2、集群(cluster)
一个集群就是由-一个或多个节点组织在- -起,它们共同持有你整个的数据,并-起提供索引和搜索功能。其中-个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,
集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。
一个集群可以只有一个节点。强烈建议在配置elasticsearch时, 配置成集群模式。 -
10.3、节点(node)
节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群-样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。
节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。 如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。
-
10.4、索引(index)
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的素引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的) , 并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,如果你想,可以定义任意多的索引。
●索引相对于关系型数据库的库。 -
10.5、类型(type)
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。
在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
●类型相对于关系型数据库的表
二、实验步骤
2.1、实验准备
node1:20.0.0.11
node2:20.0.0.22
apache:20.0.0.33
- 分别给三台主机设置别名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname apache
- 分别关闭防火墙这玩意
[root@apache ~]# systemctl stop firewalld.service
[root@apache ~]# setenforce 0
- node1名称解析节点一
[root@node1 ~]# vim /etc/hosts
加入下列
20.0.0.11 node1
20.0.0.22 node2
- 检测是否支持Java环境
[root@node1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
- 同样的操作给node2名称解析节点一
[root@node2 ~]# vim /etc/hosts
加入下列
20.0.0.11 node1
20.0.0.22 node2
- 检测是否支持Java环境
[root@node2 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
- node1 上传软件包
- 直接安装 rpm -ivh elasticsearch-5.5.0.rpm
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm
警告:elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
1:elasticsearch-0:5.5.0-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
- 重载进程 开机自启
[root@node1 opt]# systemctl daemon-reload
[root@node1 opt]# systemctl enable elasticsearch.service
- 备份主配置文件
[root@node1 opt]# cd /etc/elasticsearch/
[root@node1 elasticsearch]# ls
elasticsearch.yml jvm.options log4j2.properties scripts
[root@node1 elasticsearch]# cp elasticsearch.yml elasticsearch.yml.bak
- 编辑 vim elasticsearch.yml
cluster.name: my-elk-cluster
path.data: /data/elk_data
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
-
查看节点信息
- node2主机与node1主机操作相同 -
安装node工具软件(主机1和主机2)
上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群
#操作相同,只演示一个
[root@noed1 opt]# ls
elasticsearch-5.5.0.rpm node-v8.2.1.tar.gz rh
elasticsearch-head.tar.gz phantomjs-2.1.1-linux-x86_64.tar.bz2
'//安装编译工具'
[root@node1 opt]# yum -y install gcc gcc-c++ make
'//解压缩'
[root@node1 opt]# tar zxvf node-v8.2.1.tar.gz
'//执行脚本文件'
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure
'//编译及安装'
[root@node1 node-v8.2.1]# make -j3
[root@node1 node-v8.2.1]# make install
- 安装phantomjs前端框架
#上传安装包到/usr/local/src
[root@node1 opt]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
[root@noed1 opt]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/
'//复制文件便于系统所识别'
[root@noed1 bin]# cp phantomjs /usr/local/bin/
- 安装elasticsearch-head数据可视化管理工具
'//解压到/usr/local/src'
[root@node1 opt]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
[root@node1 opt]# cd /usr/local/src/
[root@node1 src]# cd elasticsearch-head/
'//安装'
[root@node1 elasticsearch-head]# npm install
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/karma/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression
up to date in 4.855s
- 修改elasticsearch主配置文件
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
'//末行插入'
#action.destructive_requires_name: true
http.cors.enabled: true #开启跨区域访问支持,默认为false
http.cors.allow-origin: "*" #跨域访问允许的域名地址
#重启服务
[root@node1 ~]# systemctl restart elasticsearch.service
- 启动elasticsearch-head
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start & //后台运行
[1] 4515
#启动服务
[root@node1 elasticsearch-head]# netstat -ntap | grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 4525/grunt
[root@node1 elasticsearch-head]# netstat -ntap | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 4398/java
- 在Elasticsearch后面的栏中输入http://20.0.0.11:9200/
- 然后点击连接会发现:群集健康值:greep(0 of 0)
****************************** 未完待续 *********************************