日志分析-ELK

一、概述

一、组成

1、ES(Elasticsearch):对格式化的数据存储和索引。
2、Logstash(收集日志):到应用服务器上拿取log,并进行格式转换后输出到ES中。通过input功能来收集/采集log;filter过滤器:格式化数据;output输出:日志输出到ES数据库内。
3、Kibana(展示工具):将ES内的数据在浏览器展示出来,通过UI界面展示(可以根据自己的需求对日志进行处理,方便查阅读取)。

二、步骤

在这里插入图片描述
如图所示:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从Es集群中查询数据生成图表,再返回给Browser。
日志处理分析步骤:
1、将日志进行集中化管理( beats):
①Packetbeat (搜集网络流量数据)
②Topbeat(搜集系统、进程和文件系统级别的CPU和内存使用情况等数据)
③Filebeat(搜集文件数据),轻量级的工具(相较于logstash)。
④winlogbeat (搜集windows事件日志数据)
2、将日志格式化(logstash)
3、对格式化后的数据进行索引和存储(elasticsearch)
4、前端数据的展示( kibana)

三、ES

一、接近实时(NRT)

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

二、集群(cluster)

es具有集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识(自己的名称)

三、节点(node)

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

四、索引(index)

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

五、类型(type)

在一个索引中,你可以定义一种或多种类型。I一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

六、文档(document)

1、一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSoN (Javascript Object Notation)格式来表示,而JSON (yam和json)是一个到处存在的互联网数据交互格式。
2、一个文档必须在一个索引内被索引和分配一个类型。

七、分片和副本(shards & replicas)

分片主要原因:
①水平分割扩展,增大存储量
②分布式并行跨分片操作,提高性能和吞吐量
副本主要原因:
①高可用性,以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。
②QPS能,增大吞吐量,搜索可以并行在所有副本上执行。

四、logstash

一、作用

1、collect:数据输入
2、Enrich:数据加工,如过滤,改写等
3、Transport:数据输出(被其他模块进行调用)

二、组件(独立部署的原因)

1、shipper:日志收集者。负责监控本地日志文件,及时手机日志文件最新内容。
2、Indexer:日志存储者。负责接收日志并写入到本地文件。3、Broker:日志Hub。负责连接多个shipper和多个Indexer。
4、search and storage:允许对事件进行搜索和存储。
5、web Interface:基于web的展示界面。

三、主机分类

1、理主机(agent host):作为事件的传递者(shipper),将各种日志数据发送至中心主机;只需运行Loqstash代理(agent)程序。
2、中心主机(central host):可运行包括中间转发器(Broker)、索引器(Indexer)、搜索和存储器(Search andstorage)、web界面端(web Interface)在内的各个组件,以实现对日志数据的接收、处理和存储。

五、Kibana功能

1、es无缝之集成。Kibana架构为es定制,可以将任何结构化和非结构化数据加入es索引。
2、整合你的数据。Kibana能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图。
3、复杂数据分析。Kibana提升了es分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切利分块。
4、让更多团队成员受益。强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
5、接口灵活,分享更容易。使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
6、配置简单。Kibana的配置和启用非常简单,用户体验非常友好。Kibana自带web服务器,可以快速启动运行。
7、7、可视化多数据源。Kibana可以非常方便地把来自Logstash、ES-Hladoop、Beats或第三方技术的数据整合到es,支持的第三方技术包括Apache Flume、Fluentd(作为一套收集容器日志的采集器)等。
8、简单数据导出。Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。

二、部署

实验环境
node1:192.168.238.150 Elasticsearch kibana
node2:192.168.238.100 Elasticsearch
web:192.168.238.99 Apache logstash

一、node1、node2

修改主机名、同步阿里时钟服务器

[root@node1 ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@node1 ~]# cd /usr/local/
[root@node1 local]# vim /etc/profile

在这里插入图片描述

[root@node1 local]# source /etc/profile
[root@node1 local]# java -version

在这里插入图片描述

[root@node1 local]# vim /etc/hosts

在这里插入图片描述

[root@node1 local]# cd /opt
[root@node1 local]# rz #上传elasticsearch软件包
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm #解包
[root@node1 opt]# systemctl daemon-reload #重启守护进程
[root@node1 opt]# systemctl enable elasticsearch.service #设置服务开机自启
[root@node1 opt]# cd /etc/elasticsearch/
[root@node1 elasticsearch]# cp -a elasticsearch.yml elasticsearch.yml.bak #备份配置文件
[root@node1 elasticsearch]# vim 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 #锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致Ios变高(性能测试:每秒的读写次数)。
第55行 network.host: 0.0.0.0 #提供服务绑定的IP地址,0.0.0.0代表所有地址
第59行 http.port: 9200 #侦听端口为920068行 discoveryp zen.ping.unicast.hosts:["node1", "node2"] #集群发现通过单播实现单播

在这里插入图片描述

[root@node1 elasticsearch]# mkdir -p /data/elk_data #创建数据文件目录
[root@node1 elasticsearch]# chown elasticsearch:elasticsearch /data/elk_data/ #修改目录属主属组
[root@node1 elasticsearch]# systemctl start elasticsearch.service

在这里插入图片描述
查看节点信息
在这里插入图片描述
查看集群健康状态
在这里插入图片描述
安装node组件

[root@node1 elasticsearch]# cd /opt
[root@node1 opt]# yum install gcc gcc-c++ make -y #安装依赖环境
[root@node1 opt]# rz #上传node软件包
[root@node1 opt]# tar xzvf node-v8.2.1.tar.gz #解包
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure && make -j3 && make install

安装phantomjs前端框架

[root@node1 node-v8.2.1]# cd ..
[root@node1 opt]# rz #上传phantomjs软件包
[root@node1 opt]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/ #解包
[root@node1 opt]# cd /usr/local/src/bin/phantomjs-2.1.1-linux-x86_64/bin/
[root@node1 bin]# cp phantomjs /usr/local/bin/

安装elasticsearch-head图形化界面

[root@node1 bin]# cd /opt
[root@node1 opt]# rz #上传elasticsearch-head软件包
[root@node1 opt]# tar xzvf elasticsearch-head.tar.gz -C /usr/local/src
[root@node1 opt]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm install

在这里插入图片描述

[root@node1 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
在最后插入
http.cors.enabled: true #开启跨域访问支持
http.cors.allow-origin: "*" #跨域方位允许的域名地址

在这里插入图片描述

[root@node1 elasticsearch-head]# npm run start & #后台启动

在这里插入图片描述

二、创建索引(node1)

[root@node1 elasticsearch-head]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty' -H 'content-Type:application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

宿主机访问192.168.238.150:9100查看创建索引
在这里插入图片描述

三、web

[root@web ~]# yum -y install httpd
[root@web ~]# systemctl start httpd
[root@web ~]# cd /opt
[root@web opt]# rz #上传logstash软件包
[root@web opt]# rpm -ivh logstash-5.5.1.rpm #安装
[root@web opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
[root@web opt]# systemctl start logstash.service
[root@web opt]# systemctl enable logstash.service
[root@web opt]# logstash -e 'input { stdin{} } output { stdout{} }' #对接测试,测试logstash和es功能是否正常

在这里插入图片描述

[root@web opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug} }' #codec编解码器,rubydebug详细输出

在这里插入图片描述

[root@web opt]# logstash -e 'input { stdin{} } output {  elasticsearch { hosts=>["192.168.238.150:9200"]} }' #输出对接信息

在这里插入图片描述
宿主机访问192.168.238.150:9100查看创建索引
在这里插入图片描述
在这里插入图片描述

四、对接配置

[root@web opt]# chmod o+r /var/log/messages
[root@web opt]# ll /var/log/messages

在这里插入图片描述

[root@web opt]# vim /etc/logstash/conf.d/system.conf

在这里插入图片描述

[root@web opt]# systemctl restart logstash.service

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

五、node1安装kibana

[root@node1 elasticsearch-head]# cd /usr/local/src/
[root@node1 src]# rz #上传kibana软件包
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm #安装
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vim kibana.yml
第2行 server.port: 5601 #取消注释,监控端口
第7行 server.host: "0.0.0.0" #监听地址
第21行 elasticsearch.url: "http://192.168.238.150:9200" #与elasticsearch建立联系
第30行 kibana.index: ".kibana" 在elasticsearch中添加kibana索引

[root@node1 kibana]# systemctl start kibana.service
[root@node1 kibana]# systemctl enable kibana.service

访问192.168.238.150:5601
在这里插入图片描述
在这里插入图片描述

六、对接Apache

[root@web opt]# cd /etc/logstash/conf.d/
[root@web conf.d]# ls
system.conf
[root@web 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.238.150:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.238.100:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }
[root@web conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf #指定配置文件,查看索引

访问192.168.238.99,访问Apache
然后访问192.168.238.150.9100
在这里插入图片描述
访问192.168.238.150:5601创建索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值