ELK日志分析系统

一、ELK日志分析系统简介

ELK日志分析系统是Logstash、Elasticsearch、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示

1.1 ELK日志分析系统组成

  • elasticsearch(es):通过搭建群集;存储日志数据,索引日志数据
  • logstash :收集日志,收集到了后给es存储
  • kibana :视图形式展现日志信息,更加人性化

1.2 日志处理步骤

  1. 将日志进行集中化管理
  2. 将日志格式化(Logstash)并输出到Elasticsearch
  3. 对格式化后的数据进行索引和存储(Elasticsearch)
  4. 前端数据的展示(Kibana)

在这里插入图片描述

二、ELk组件的介绍

2.1 Elasticsearch介绍

2.1.1 ElsaticSearch概述

Elasticsearch(简称ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

2.2.2 Elasticsearch的基本核心概念

  • 接近实时:索引文档时有轻微的延迟
    lasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟 (通常是1秒)

  • 集群:es具有集群机制,节点通过集群名称加入集群中,节点具有唯一标识
    一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索弓|和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。
    一个集群可以只有一个节点。强烈建议在配置elasticsearch时, 配置成集群模式。
    es具有就集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识(自己的名称)

  • 节点:存储数据并参与集群的索引和搜索功能
    节点就是一台单一的服务器, 是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。
    节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。

  • 索引:相当于关系型数据库的库,是相似文档的集合
    一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中, 如果你想,可以定义任意多的索引。
    索引相对于关系型数据库的库。

  • 分片和副本:
    (1)分片机制:提升索引效率,提高存储量
    (2)副本:高可用性(解决单点故障),增大吞吐量
    在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上, 或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。
    分片的两个最主要原因:
    a. 水平分割扩展,增大存储量
    b.分布式并行跨分片操作,提高性能和吞吐量
    优点:
    1.分担es数据库存储(读取,处理)压力,压力分层,分离
    2.索引性能提高(搜索速度提高)

2.2 Logstash介绍

●一款强大的数据处理工具
●可实现数据传输、格式处理、格式化输出
●数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch群集)
●Logstash的主要组件

shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
indexer:日志存储者,负责接收日志并写入到本地文件
broker:日志hub,负责连接多个shipper和多个indexer
search and storage:允许对事件进行搜索和存储
web interface:基于Web的展示界面

2.3 Kibana介绍

●一个针对Elasticsearch的开源分析及可视化平台
●搜索、查看存储在Elasticsearch索引中的数据
●通过各种图表进行高级数据分析及展示
●主要功能
Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员收益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出

三、ELK日志分析系统部署

3.1实验环境及准备

主机名IP地址
node1192.168.10.11
node3192.168.10.12
apache192.168.10.13

3.2 实验步骤

3.2.1 ES的安装

ES网页的安装
## 关闭防火墙核心防护
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

## java环境的安装
tar zxvf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java
vi /etc/profile
export JAVA_HOME=/usr/local/java
export JAVA_JRE=/usr/local/java/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib
source /etc/profile
echo $PATH
java -version

## ES的安装
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable elasticsearch.service
vi /etc/elasticsearch/elasticsearch.yml
:17 cluster.name: my-elk-cluster
:23 node.name: node1
:33 path.data: /data/elk_data
:37 path.logs: /var/log/elasticsearch
:43 bootstrap.memory_lock: false
:55 network.host: 0.0.0.0
:59 http.port: 9200
:68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data
systemctl start elasticsearch.service
netstat -anpt | grep 9200	
tcp6       0      0 :::9200                 :::*                    LISTEN      61588/java

节点的验证
通过浏览器访问两台node节点的9200端口:

在这里插入图片描述

ES可视化的安装
yum -y install gcc gcc-c++ make
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j3
make install

## 安装phantomjs前段框架
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs 	/usr/local/bin/

## 安装elasticsearch-head数据可视化
tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install
npm run start &

## 修改主配置文件
vi /etc/elasticsearch//elasticsearch.yml	# 在最后面加上以下内容
http:
  cors:
  enabled : true
  allow-origin : "*"
systemctl restart elasticsearch.service
netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      61588/java
netstat -anpt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      59085/grunt 
  • 网页中可以通过192.168.10.11:9100来访问到可视化网页

  • 通过连接192.168.10.11:9200 可以连接到群集

  • 通过索引可以根据自己的要求来新建索引,在概览中可以查看

  • 在虚拟机中通过curl可以新建索引

      curl -XPUT 'localhost:9200/index_demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
    

此时便可以通过访问节点的9100端口来可视化查看ES的索引信息
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.2.2 logstash的安装

在数据收集的主机上及apache节点上

## java环境的布置
yum -y install httpd java
systemctl start httpd
systemctl status httpd
java -version

## logstash软件的安装
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日志格式输出的三种形式,最后一种为与ES的对接
logstash -e 'input { stdin{} } output { stdout{} }'	# 直接输出在屏幕上以最简形式
logstash -e 'input { stdin{} } output { stdout{codec=>rubydebug} }'	# 以特殊格式输出在屏幕上
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.11:9200"] } }'	logstash与es的对接

3.2.3 在node1主机安装kibana

## kibana的安装
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
:7  server.host: "0.0.0.0"
:21 elasticsearch.url: "http://192.168.10.11:9200"
:30 kibana.index: ".kibana"

## 开启kibana
systemctl start kibana.service
systemctl enable kibana.service
netstat -anpt | grep 5610
tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      62699/node

通过访问安装kibana的node节点的5601端口可以进入kibana网页。
在这里插入图片描述在这里插入图片描述

3.2.4 logstash与ES的对接

logstash通过脚本与es对接日志信息

chmod o+r /var/log/messages	
cd /etc/logstash/conf.d/
cd /etc/logstash/conf.d/
vim system.conf		# 需要在/etc/logstash/conf.d目录下
input {
    file{
    path => "/var/log/messages"
    type => "system"
    start_position => "beginning"
    }
  }
output {
    elasticsearch {
    hosts => ["192.168.10.11:9200"]
    index => "system-%{+YYYY.MM.dd}"
}
}

systemctl restart logstash.service

3.2.5 apache上面与kibana对接

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.10.11:9200"]
    index => "apache_access-%{+YYYY.MM.dd}"
    }
    }
    if [type] == "error" {
    elasticsearch {
    hosts => ["192.168.10.11:9200"]
    index => "apache_error-%{+YYYY.MM.dd}"
    }
    }
    }

logstash -f apache_log.conf

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

四、小结

ELK日志分析系统是一款非常强大的日志分析工具,能够帮助运维工程师更快更准确的定位到想要的日志,特别是kibana可视化工具,功能强大,使用起来非常人性化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值