ELK日志分析系统

ELK日志分析系统

简介

ELK=elasticsearch+logstash+kibana
在这里插入图片描述

日志服务器

提高安全性
集中存放日志
缺陷:对日志分析困难

日志处理步骤

将日志进行集中化管理
将日志格式化(logstash)并输出到elasticsearch
对格式化后的数据进行索引和存储(elasticsearch)
前端数据展示(kibana)

elasticsearch

概述

提供了一个分布式多用户能力的全文搜索引擎

核心概念

接近实时

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

集群(cluster)

集群就是有一个或多个节点组织在一起,es具有集群机制,节点通过去集群名称加入集群,同时在集群中的节点会有一个自己的身份唯一标识

节点(node)

及单一的服务器,是集群的一部分

索引(index)

一个索引就是一个拥有积分相似的文档的集合
索引是相对于关系型数据库的库

类型(type)

在一个索引中,可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区。
类型是相对于关系型数据库的表

文档(document)

是一个可被索引的基础信息单元。
文档是相对于关系型数据库的列

副本和分片

在实际情况下,索引存储的数据可能超过单个节点的硬件限制,所以es提供了将索引分成多个分片的功能。在创建索引时,可定义想要的分片数量。每一个分片是一个独立的全功能索引,可位于集群中的任何节点上
分片的原因:水平分割扩展,增大存储量。分布式跨片操作,提高性能和吞吐量

由于网络等问题,为了健壮性,建议要有一个故障切换机制,无论何种故障以防止分片或节点不可用,为此es将索引分片复制成一份或多份,称之为分片副本或副本
副本的原因:高可用性,以应对分片或节点的故障,所以,副本要在不同的节点上。增大吞吐量,可以并行在所有副本上执行

logstash

介绍

一款强大的数据处理工具
可实现数据传输,格式处理,格式化输出
数据输入,数据加工(如过滤改写)以及数据输出

主要组件

shipper:日志收集。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来

indexer:日志存储。负责接收日志并写入到本地文件

broker:日志hub。负责连接多个shipper和多个indexer

search and storage:允许对事件进行搜索和存储

web interface:基于文本展示界面

logstash主机分类

理主机(agent):作为时间的传递者(shipper)将各种日志数据发送至中心主机

中心主机(center host):可运行包括中间转发器(broker),索引器(indexer),搜索和恶存储器(search 和storage),web界面端(web interface)在内的各个组件,以实现对日志数据的接收处理和存储

kibana

介绍

一个针对es的开源分析及可视化平台
搜索查看存储在es索引中的数据
通过各种图表进行高级数据分析及展示

主要功能

es无缝集成
整合数据,复杂数据分析
接口灵活,容易分享
配置简单,可视化多数据源
简单数据导出

elk配置

准备

命名
i

p20.0.0.10:hostnamectl set-hostname nd1
su
ip20.0.0.20:hostnamectl set-hostname nd2
su
ip20.0.0.30:hostnamectl set-hostname apache
su

全部节点上映射
在这里插入图片描述

elasticsearch

在nd1、2上安装elasticsearch-rpm包

rpm -ivh elasticsearch-5.5.0.rpm #将elasticsearch-rpm包复制到/opt下,安装
systemctl daemon-reload #重新加载
systemctl enable elasticsearch.service #开机自启

在这里插入图片描述

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak #做配置之前,做好备份
vim /etc/elasticsearch/elasticsearch.yml
17// cluster.name:mec #群集名称
23// node.name: nd1 #节点名称
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: ["nd1", "nd2"] #集群发现通过单播实现

mkdir -p /data/elk_data #创建数据存放目录
chown elasticsearch:elasticsearch /data/elk_data/ #授权
systemctl start elasticsearch.service #启动服务
netstat -antp | grep 9200 #查看服务开启状态,需等待较长时间

在这里插入图片描述
在客户机上访问节点1和节点2的信息
在这里插入图片描述
查看集群的健康状态http://20.0.0.10:9200/_cluster/health?pretty
在这里插入图片描述
查看集群状态http://20.0.0.10:9200/_cluster/state?pretty
在这里插入图片描述
安装elasticsearch-head插件
用来管理集群
在两台节点上

yum -y install gcc gcc-c++ make
tar zxvf /opt/node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install 

安装phyantomjs前端框架

tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cp /opt/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

安装可视化工具:

tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install

修改主配置文件

vim /etc/elasticsearch/elasticsearch.yml
http.cors.enable: ture #开启跨域访问支持,默认false
http.cors.allow-origin: "*" #允许的地址

systemctl restart elasticsearch.service #重启服务

cd /opt/elasticsearch-head/
npm run start & #切到后台运行

在这里插入图片描述

netstat -anpt | grep 9100

在这里插入图片描述
在客户机上http://20.0.0.10:9100/
在这里插入图片描述
新建索引index-demo
在这里插入图片描述
在这里插入图片描述

logstash

在apache上
安装logstash

yum -y install httpd
systemctl start httpd
查看日志位置

在这里插入图片描述

rpm -ivh logstash-5.5.1.rpm
rpm -qc logstash
systemctl start logstash.service
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

在这里插入图片描述
logstash(Apache)与elasticsearch (node)功能是否正常,做对接测试
logstash字段描述解释:
f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e:后面的字符串是logstash的配置(为“” 时,默认使用标准输入和输出)
-t:测试配置文件
测试logstash与elasticsearch功能是否正常标
准化输入输出测试

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=>["20.0.0.10:9200"] } }'
www.baidu.com
www.sina.com

在浏览器上查看
在这里插入图片描述
配置logstash配置文件

vim /etc/logstash/conf.d/system.conf
input {                    #logstash输入:从/var/log/messages输入,类型为system,起始位                     置为从头开始
        file {
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
        }
      }

output {                #logstash输出:输出给elasticsearch(以IP地址指定位置)
        elasticsearch {
        hosts => ["20.0.0.10:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }

chmod o+r /var/log/messages
systemctl restart logstash.service

在这里插入图片描述

kibana

nd1上

rpm -ivh kibana-5.5.1-x86_64.rpm
vi /etc/kibana/kibana.ymlserver.port: 5601 #kinaba端口号
server.host: "0.0.0.0" #监听所有网段
elasticsearch.url: "http://20.0.0.10:9200" #和es建立联系
kibana.index: ".kibana" #建立索引

systemctl start kibana.service 
systemctl enable kibana.service

在浏览器上访问20.0.0.10:5601
management–>输入system-*->create->discover
在这里插入图片描述
对接apache
在apache上

vi /etc/logstash/conf.d/system.conf
input {
       file{
         path => "/etc/httpd/logs/access_log"    # apache 的 access日志位置
         type => "access"                                     # 类型为 access,就是类似于索引,在kibana可以便于查看
         start_position => "beginning"                 # 从日志的开头开始
         }
       file{
         path => "/etc/httpd/logs/error_log"    # apache 的 error日志位置
         type => "error"
         start_position => "beginning"
         }
      }

output {
        if [type] == "access" {            # 做一个判断,对应上面的索引名。如果匹配为access,则把内容导向节点,然后名称为apache_access.%{+YYYY.MM.dd}格式
        elasticsearch {
          hosts => ["20.0.0.10:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
         }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["20.0.0.10:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
         }
        }
       }


logstash -f /etc/logstash/conf.d/system.conf

在这里插入图片描述
在kibana中创建索引
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值