ELK日志分析系统

一,ELK日志分析系统介绍
1.日志服务器
优点
提高安全性
集中存放日志
缺点
对日志的分析困难
2.ELK日志分析系统组件
Elasticsearch(索引型数据库)
Logstash(输入、输出工具)
Kibana
3.ELK组件概述
ES(nosql非关数据库):存储功能和索引
Logstash(收集日志):到应用服务器上拿取log,并进行格式转换后输出到es中
通过input功能来收集/采集log
filter过滤器:格式化数据
output输出:日志输出到es数据库内
Kibana(展示工具):将es内的数据在浏览器展示出来,通过UI界面展示(可以根据自己的需求对日志进行处理,方便查阅读取)
4.日志处理步骤
将日志进行集中化管理
将日志格式化(Logstash)并输出到Elasticsearch
将格式化后的数据进行索引和存储(Elasticsearch)
前端数据的展示(Kibana)
在这里插入图片描述
二、Elasticsearch简介
1.lasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上
用 Java编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API
Elasticsearch 不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容,一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
2Elasticsearch的基础核心概念
cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river:代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway:代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen:代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport:代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)

三,Logstash简介
1.Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
2.logStash的主要组件
Shipper(日志收集者):负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可;
Indexer(日志存储者):负责接收日志并写入到本地文件。
Broker(日志Hub):负责连接多个Shipper和多个Indexer
Search and Storage(搜索和存储器):允许对事件进行搜索和存储;
Web Interface(web界面端):基于Web的展示界面
3… LogStash主机分类
代理主机(agent host) :作为事件的传递者(shipper),将各种日志数据发送至中心主机;只需运行Logstash代理( agent)
程序中心主机(central host) :可运行包括中间转发器(Broker) 、索引器(Indexer) 、搜索和存储器( Search and
Storage )、web界面端(web Interface)在内的各个组件,以实现对日志数据的接收、处理和存储

四, Kibana 介绍
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
Elasticsearch、Logstash和Kibana这三个技术就是我们常说的ELK技术栈,可以说这三个技术的组合是大数据领域中一个很巧妙的设计。一种很典型的MVC思想,模型持久层,视图层和控制层。Logstash担任控制层的角色,负责搜集和过滤数据。Elasticsearch担任数据持久层的角色,负责储存数据。而我们这章的主题Kibana担任视图层角色,拥有各种维度的查询和分析,并使用图形化的界面展示存放在Elasticsearch中的数据。

实验前夕

systemctl stop firewalld.service //关闭防火墙
systemctl status firewalld.service  //查看防火墙状态
setenforce 0 //  关闭安全系统 

一,安装部署
1.环境部署
node1 ; 192.168.189.14 Elasticsearch/Kibana
node2 ; 192.168.189.15 Elasticsearch
apache; 192.168.189.16 httpd / Logstash
客户机 win10
3.更改主机名
hostnamectl set-hostname +主机名
4.配置elasticsearch 环境
node1 nede2 配置

echo '192.168.189.14 node1' >> /etc/hosts
echo '192.168.189.15 node2' >> /etc/hosts     #添加IP和主机名的映射
cat  /etc/hosts   #查看 

在这里插入图片描述
在这里插入图片描述
5.安装elasticsearch软件
node1 node2

cd /opt    #安装目录到opt 下
rpm -ivh elasticsearch-5.5.0.rpm  #使用rpm安装

在这里插入图片描述
在这里插入图片描述
二,加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch.service

1.更改elasticsearch参数配置

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
2.vim /etc/elasticsearch/elasticsearch.yml
#17行;取消注释,修改;集群名字
cluster.name: my-elk-cluster
#23行;取消注释,修改;节点名字(node2修改成node2)
node.name: node1
#33行;取消注释,修改;数据存放路径
path.data: /data/elk_data
#37行;取消注释,修改;日志存放路径
path.logs: /var/log/elasticsearch
#43行;取消注释,修改;不在启动的时候锁定内存
bootstrap.memory_lock: false
#55行;取消注释,修改;提供服务绑定的IP地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
#59行;取消注释;侦听端口为9200(默认)
http.port: 9200
#68行;取消注释,修改;集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

在这里插入图片描述

在这里插入图片描述
3.检验配置

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

在这里插入图片描述
在这里插入图片描述
4.创建数据存放路径并授权

mkdir -p /data/elk_data  #创建数据存放目录
chown elasticsearch:elasticsearch /data/elk_data/  #修改存放数据目录的属主属组
5.启动一下
systemctl start elasticsearch
6.查看一下
netstat -antp | grep 9200

在这里插入图片描述
在这里插入图片描述
7.查看节点信息

http://192.168.189.14:9200
http://192.168.189.15:9200

在这里插入图片描述
8.检验集群健康状态

http://192.168.189.14:9200/_cluster/health?pretty
http://192.168.189.15:9200/_cluster/health?pretty

在这里插入图片描述
在这里插入图片描述
9.查看集群状态

http://192.168.189.14:9200/_cluster/state?pretty
http://192.168.189.15:9200/_cluster/state?pretty

在这里插入图片描述
在这里插入图片描述
三,安装elasticsearch-head插件

node1 node 2
1.编译安装node组件依赖包

yum -y install gcc gcc-c++ make
cd /opt    #上传软件包 node-v8.2.1.tar.gz 到/opt
tar xzvf node-v8.2.1.tar.gz  #解压
cd node-v8.2.1/
./configure && make && make install

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.安装安装phantomjs 前端框架
node1 node2

cd /opt     #上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt目录下  
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/   #将软件包解压到/usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin  
cp phantomjs /usr/local/bin

在这里插入图片描述
3.安装elasticsearch-head 数据可视化工具
node1 node2

cd /opt  #上传软件包 elasticsearch-head.tar.gz 到/opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install  #使用npm编译es-head编码并安装

在这里插入图片描述
4.修改主机配置文件
node1 node2

vim /etc/elasticsearch/elasticsearch.yml

#末尾添加以下内容
http.cors.enabled: true      #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"  #指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch.service  #重新启动一下

在这里插入图片描述

在这里插入图片描述
5.启动elasticsearch-head
node1 node2

在 elasticsearch-head 目录下启动服务
cd /usr/local/src/elasticsearch-head/
npm run start &
netstat -natp |grep 9100  

在这里插入图片描述
在这里插入图片描述
6.使用elasticsearch-head插件查看集群状态

http://192.168.189.14:9100
在Elasticsearch 后面的栏目中输入
http://192.168.189.15:9200

http://192.168.189.15:9100
在Elasticsearch 后面的栏目中输入
http://192.168.189.14:9200

在这里插入图片描述
在这里插入图片描述
7.创建索引
node1

创建索引为index-demo,类型为test
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pret

在这里插入图片描述
查看数据浏览–会发现在node1上创建的索引为index-demo,类型为test, 相关的信息
在这里插入图片描述
在这里插入图片描述
8…安装logstash
收集日志输出到elasticsearch中
安装Apahce服务(httpd)
apache

yum -y install httpd
systemctl start httpd

9.安装logstash
apache

cd /opt     #上传logstash-5.5.1.rpm到/opt目录下
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service     #开启服务并属组开机自启动
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/   #建立logstash软连接

在这里插入图片描述

10.测试logstash命令
apache

logstash -e 'input { stdin{ } } output { stdout { } }' 
使用rubydebug显示详细输出,codec为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug} }'
使用logstash将信息写入elasticsearch中,并查看
logstash -e 'input { stdin{} } output { elasticsearch { hosts=> ["192.168.35.40:9200"] } }'	##输入输出对接

在这里插入图片描述
在这里插入图片描述
11.使用平台收集日志

chmod o+r /var/log/messages		##给其他用户加一个可读权限
vim /etc/logstash/conf.d/system.conf		##配置文件(收集系统日志)
	input {
		file{
	  	  path => "/var/log/messages" #收集数据的路径
		 	  type => "system"         #类型
		    start_position => "beginning"    #从开头收集数据
		    }
		}
	output {
		elasticsearch {
		    hosts => ["192.168.189.14:9200"]    #输出到
		    index => "system-%{+YYYY.MM.dd}"  #索引
   		    }
		}
systemctl restart logstash.service		#重启服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四,安装kibana
node1

上传kibana-5.5.1-x86_64.rpm到/usr/local/src目录
cd /usr/local/src
rpm -ivh kibana-5.5.1-x86_64.rpm
cd /etc/kibana/
cp kibana.yml kibana.yml.bak
vim kibana.yml
	 2 server.port: 5601		##kibana打开的端口
	 7 server.host: "0.0.0.0“		##kibana侦听的地址
	21 elasticsearch.url: "http://192.168.189.14:9200"		##和elasticsearch建立联系
	30 kibana.index: ".kibana"		##在elasticsearch中添加. kibana索引
systemctl start kibana.service		##启动kibana服务
访问5601端口:http://192.168.189.14:5601/

在这里插入图片描述
在这里插入图片描述
2.对接apache的日志(访问的、错误)

apache
cd /etc/logstash/conf.d/
vim apache_log.conf
input {
	file{
	    path => "/etc/httpd/logs/access_log"
	    type => "access"
	    start_position => "beginning"
	    }
	file{
	    path => "/etc/httpd/logs/error_log"
	    type => "error"
	    start_position => "beginning"
	    }
	}
output {
	if [type] == "access" {
	elasticsearch {
            hosts => ["192.168.189.14:9200"]
	    index => "apache_access-%{+YYYY.MM.dd}"
   	    }
	}
	if [type] == "error" {
	elasticsearch {
            hosts => ["192.168.189.14:9200"]
	    index => "apache_error-%{+YYYY.MM.dd}"
   	    }
	}
	}

在这里插入图片描述
进入kibana进入创建Apache索引appche_acess和apache_error
首页Management–Index Patterns–Create Index Pattern–选择inde name or pattern
验证索引
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值