精华内容
下载资源
问答
  • 日志分析系统

    2015-11-24 20:13:45
    日志处理系统; 1)application部署logagent,作为消息系统的生产者; 2)消息系统(kafka,scribe)处理推送到下游订阅者; 3)下游做分布式运算。 盗图:(转载:http://www.aboutyun.com/thread-6855-1-1.html...


    日志处理系统;

    1)application部署logagent,作为消息系统的生产者;

    2)消息系统(kafka,scribe)处理推送到下游订阅者;

    3)下游做分布式运算。


    盗图:(转载:http://www.aboutyun.com/thread-6855-1-1.html)


    展开全文
  • ELK-日志分析系统

    万次阅读 2020-09-23 17:14:47
    为什么要建立日志分析系统: 当我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、...

    微信搜索:“二十同学” 公众号,欢迎关注一条不一样的成长之路

    为什么要建立日志分析系统:

    当我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。

    解决办法是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

    一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

    一个完整的集中式日志系统,需要包含以下几个主要特点:

    • 收集-能够采集多种来源的日志数据
    • 传输-能够稳定的把日志数据传输到中央系统
    • 存储-如何存储日志数据
    • 分析-可以支持 UI 分析
    • 警告-能够提供错误报告,监控机制

    ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

    ELK简介:

    ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

    Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

    Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

    Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

    Kibana示例图

    Filebeat隶属于Beats。目前Beats包含四种工具:

    1. Packetbeat(搜集网络流量数据)
    2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
    3. Filebeat(搜集文件数据)
    4. Winlogbeat(搜集 Windows 事件日志数据)

    ELK用途:

    传统意义上,ELK是作为替代Splunk的一个开源解决方案。Splunk 是日志分析领域的领导者。日志分析并不仅仅包括系统产生的错误日志,异常,也包括业务逻辑,或者任何文本类的分析。而基于日志的分析,能够在其上产生非常多的解决方案,譬如:

    1.问题排查。我们常说,运维和开发这一辈子无非就是和问题在战斗,所以这个说起来很朴实的四个字,其实是沉甸甸的。很多公司其实不缺钱,就要稳定,而要稳定,就要运维和开发能够快速的定位问题,甚至防微杜渐,把问题杀死在摇篮里。日志分析技术显然问题排查的基石。基于日志做问题排查,还有一个很帅的技术,叫全链路追踪,比如阿里的eagleeye 或者Google的dapper,也算是日志分析技术里的一种。
    2.监控和预警。 日志,监控,预警是相辅相成的。基于日志的监控,预警使得运维有自己的机械战队,大大节省人力以及延长运维的寿命。
    3.关联事件。多个数据源产生的日志进行联动分析,通过某种分析算法,就能够解决生活中各个问题。比如金融里的风险欺诈等。这个可以可以应用到无数领域了,取决于你的想象力。
    4.数据分析。 这个对于数据分析师,还有算法工程师都是有所裨益的。

    官方文档:

    Filebeat:

    https://www.elastic.co/cn/products/beats/filebeat
    https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html

    Logstash:
    https://www.elastic.co/cn/products/logstash
    https://www.elastic.co/guide/en/logstash/5.6/index.html

    Kibana:

    https://www.elastic.co/cn/products/kibana

    https://www.elastic.co/guide/en/kibana/5.5/index.html

    Elasticsearch:
    https://www.elastic.co/cn/products/elasticsearch
    https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html

    elasticsearch中文社区:
    https://elasticsearch.cn/

    ELK架构图:

    架构图一:

    这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。

    此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

    架构图二:

    此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

    架构图三:

    此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

    Filebeat工作原理:

    Filebeat由两个主要组件组成:prospectors 和 harvesters。这两个组件协同工作将文件变动发送到指定的输出中。

    Harvester(收割机):负责读取单个文件内容。每个文件会启动一个Harvester,每个Harvester会逐行读取各个文件,并将文件内容发送到制定输出中。Harvester负责打开和关闭文件,意味在Harvester运行的时候,文件描述符处于打开状态,如果文件在收集中被重命名或者被删除,Filebeat会继续读取此文件。所以在Harvester关闭之前,磁盘不会被释放。默认情况filebeat会保持文件打开的状态,直到达到close_inactive(如果此选项开启,filebeat会在指定时间内将不再更新的文件句柄关闭,时间从harvester读取最后一行的时间开始计时。若文件句柄被关闭后,文件发生变化,则会启动一个新的harvester。关闭文件句柄的时间不取决于文件的修改时间,若此参数配置不当,则可能发生日志不实时的情况,由scan_frequency参数决定,默认10s。Harvester使用内部时间戳来记录文件最后被收集的时间。例如:设置5m,则在Harvester读取文件的最后一行之后,开始倒计时5分钟,若5分钟内文件无变化,则关闭文件句柄。默认5m)。

    Prospector(勘测者):负责管理Harvester并找到所有读取源。

    filebeat.prospectors:
    
    - input_type: log
    
      paths:
    
        - /apps/logs/*/info.log

    Prospector会找到/apps/logs/*目录下的所有info.log文件,并为每个文件启动一个Harvester。Prospector会检查每个文件,看Harvester是否已经启动,是否需要启动,或者文件是否可以忽略。若Harvester关闭,只有在文件大小发生变化的时候Prospector才会执行检查。只能检测本地的文件。

    Filebeat如何记录文件状态:

    将文件状态记录在文件中(默认在/var/lib/filebeat/registry)。此状态可以记住Harvester收集文件的偏移量。若连接不上输出设备,如ES等,filebeat会记录发送前的最后一行,并再可以连接的时候继续发送。Filebeat在运行的时候,Prospector状态会被记录在内存中。Filebeat重启的时候,利用registry记录的状态来进行重建,用来还原到重启之前的状态。每个Prospector会为每个找到的文件记录一个状态,对于每个文件,Filebeat存储唯一标识符以检测文件是否先前被收集。

    Filebeat如何保证事件至少被输出一次:

    Filebeat之所以能保证事件至少被传递到配置的输出一次,没有数据丢失,是因为filebeat将每个事件的传递状态保存在文件中。在未得到输出方确认时,filebeat会尝试一直发送,直到得到回应。若filebeat在传输过程中被关闭,则不会再关闭之前确认所有时事件。任何在filebeat关闭之前为确认的时间,都会在filebeat重启之后重新发送。这可确保至少发送一次,但有可能会重复。可通过设置shutdown_timeout参数来设置关闭之前的等待事件回应的时间(默认禁用)。

     

    Logstash工作原理:

    Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。

     

    Input:输入数据到logstash。

    一些常用的输入为:

    file:从文件系统的文件中读取,类似于tail -f命令

    syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析

    redis:从redis service中读取

    beats:从filebeat中读取

    Filters:数据中间处理,对数据进行操作。

    一些常用的过滤器为:

    grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。内置120多个解析语法。

    官方提供的grok表达式:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
    grok在线调试:https://grokdebug.herokuapp.com/

    mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。

    drop:丢弃一部分events不进行处理。

    clone:拷贝 event,这个过程中也可以添加或移除字段。

    geoip:添加地理信息(为前台kibana图形化展示使用)

    Outputs:outputs是logstash处理管道的最末端组件。一个event可以在处理过程中经过多重输出,但是一旦所有的outputs都执行结束,这个event也就完成生命周期。

    一些常见的outputs为:

    elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。

    file:将event数据保存到文件中。

    graphite:将event数据发送到图形化组件中,一个很流行的开源存储图形化展示的组件。

    Codecs:codecs 是基于数据流的过滤器,它可以作为input,output的一部分配置。Codecs可以帮助你轻松的分割发送过来已经被序列化的数据。

    一些常见的codecs:

    json:使用json格式对数据进行编码/解码。

    multiline:将汇多个事件中数据汇总为一个单一的行。比如:java异常信息和堆栈信息。

    展开全文
  • ELK日志分析系统

    2020-09-21 18:42:16
    ELK日志分析系统一、ELK日志分析系统简介二、Elasticsearch介绍三、Logstash介绍四、Kibana介绍五、部署elk日志分析系统 一、ELK日志分析系统简介 日志服务器 提高安全性 集中存放日志 缺陷 对日志的分析困难 ELK...

    一、ELK日志分析系统简介

    日志服务器
    提高安全性
    集中存放日志
    缺陷
    对日志的分析困难
    ELK日志分析系统
    Elasticsearch
    Logstash
    Kibana
    日志处理步骤
    将日志进行集中化管理
    将日志格式化(Logstash)并输出到Elasticsearch
    对格式化后的数据进行索引和存储(Elasticsearch)
    前端数据的展示(Kibana)

    二、Elasticsearch介绍

    Elasticsearch的概述
    提供了一个分布式多用户能力的全文搜索引擎
    Elasticsearch核心概念
    接近实时
    集群
    节点
    索引
    索引(库)—>类型(表)—>文档(记录)
    分片和副本

    三、Logstash介绍

    Logstash介绍
    一款强大的数据处理工具
    可实现数据传输、格式处理、格式化输出
    数据输入、数据加工(如过滤,改写等)以及数据输出
    Logstash主要组件
    Shipper
    Indexer
    Broker
    Search and Storage
    Web Interface

    四、Kibana介绍

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

    五、部署elk日志分析系统

    项目需求分析:
    需要两台服务器分别作为elasticsearch服务端和elasticsearch负载端【这台上面要部署logstash服务】
    服务端IP地址是:192.168.60.80
    负载端IP地址是:192.168.60.90
    在部署这个项目的时候会用到主机名,容易忽略

    【1】elasticsearch部署
    (1)修改服务端和负载端的主机名
    hostnamectl set-hostname node1
    hostnamectl set-hostname node2
    (2)添加本地解析并关闭防火防护【//以下配置服务端和负载端配置一样】
    vim /etc/hosts     
    192.168.60.80 node1
    192.168.60.90 node2
    
    systemctl stop firewalld
    setenforce 0
    (3)安装elasticsearch-5.5.0软件【这个需要上传软件包】并加载
    rpm -ivh elasticsearch-5.5.0.rpm
    systemctl daemon-reload
    systemctl enable elasticsearch
    (4)修改elasticsearch配置文件
    cp /etc/elasticsearch/elasticsearch.yml  /etc/elasticsearch/elasticsearch.yml.bak 
    vim /etc/elasticsearch/elasticsearch.yml
    17:cluster.name: my-elk-cluster
    23:node.name: node1 | node2【在负载端中使用的主机名是node2】
    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"]    【集群通过单播发现】
    (5)创建数据存放路径、修改属主属组和启动
    mkdir -p /data/elk_data
    chown elasticsearch:elasticsearch /data/elk_data
    systemctl start elasticsearch【多启动几次】
    netstat -natp | grep 9200
    (6)编译安装node软件包
    tar zxvf node-v8.2.1.tar.gz
    cd node-v8.2.1
    yum install -y gcc gcc-c++
    ./configure
    make -j3  【时间较长】
    make install
    (7)安装phantomjs
    yum install -y bzip2【最小化没由bzip2】
    tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
    cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
    (8)安装elasticsearch_head
    tar zxvf elasticsearch-head.tar.gz -C /usr/local/src
    cd /usr/local/src/elasticsearch-head/
    npm install
    vim /etc/elasticsearch/elasticsearch.yml
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    npm run start &【注意启动时候的路径是/usr/local/src/elasticsearch-head/,因为启动时候需要package.json】
    netstat -natp | grep 9100
    systemctl restart elasticsearch【等待一会时间】
    netstat -natp | grep 9200
    (9)在浏览器上面访问192.168.60.80:9100就会出现node节点界面
    (10)添加数据
    先在索引界面中添加新索引index-demon
    curl -XPUT '192.168.60.80:9200/index-demon/test/1?pretty&pretty' -H 'content-Type:application/json' -d '{"user":"zhangsan"}'
    再次刷新查看
    【2】logstash部署
    systemctl stop firewalld
    setenforce 0
    yum install -y httpd
    systemctl start httpd
    yum install -y java
    java -version
    rpm -ivh logstash-5.5.1.rpm
    ln -s /usr/share/logstash/bin/logstash /usr/local/bin
    /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd【最小化没有自动加载安装systemd管理程序】
    /bin/systemctl start logstash.service
    cd /etc/logstash/conf.d
    vim apache-log.conf
    input {
      file{
        path => "/var/log/httpd/access_log"
        type => "access"
        start_position => "beginning"
      }
      file{
        path => "/var/log/httpd/error_log"
        type => "error"
        start_position => "beginning"
      }
    }
    
    output {
     if [type] == "access" {
      elasticsearch{
        hosts => ["192.168.60.80:9200"]
        index => "apache_access-%{+YYYY.MM.dd}"
      }
     }
     if [type] == "error" {
      elasticsearch{
        hosts => ["192.168.60.80:9200"]
        index => "apache_error-%{+YYYY.MM.dd}"
      }
     }
    
    }
     logstash -f apache-log.conf   加载配置文件
    
    【3】kibana部署
    systemctl stop firewalld
    setenforce 0
    rpm -ivh kibana-5.5.1-x86_64.rpm
    cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
    vim /etc/kibana/kibana.yml
    2:server.port: 5601
    7:server.host: "0.0.0.0"
    21:elasticsearch.url: "http://192.168.60.80:9200"
    30:kibana.index: ".kibana"
    
    systemctl start kibana.service 
    netstat -natp | grep 5601
    
    【4】在浏览器上面访问192.168.60.80:9100会出现负载均衡节点界面和Apache日志索引
    访问192.168.60.60:5601会出现kibana日志分析展示界面
    
    【5】补充知识
    (1)logstash命令的使用
    -f      通过这个选项可以指定logstash的配置文件
    -e     后面跟着字符串,该字符串可以被当做logstash的配置【默认使用stdin作为输入,stdout作为输出】
    -t     测试配置文件是否正确,然后退出
    (2)标准的输入输出
    logstash -e 'input { stdin{} } output { stdout{} }'
    ####连接成功会出现successfully,下面就要直接输入#######
    www.baidu.com   
    (3)使用rubydebug显示详细输出,codec是一种解码器
    logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
    ####连接成功会出现successfully,下面就要直接输入#######
    www.baidu.com   
    ######唯一的区别是展示出现的结构不同#########
    (4)使用logstash将信息写入elasticsearch中
    logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.60.80:9200"] } }'
    ####连接成功会出现successfully,下面就要直接输入#######
    www.baidu.com
    www.kgc.com
    www.tast.com   
    ########在浏览器上面输入192.168.60.80:9100查看索引信息#######
    
    展开全文
  • 实验手册——搜狗搜索日志分析系统,压缩包里面是pdf格式和word格式的。 实验手册——搜狗搜索日志分析系统,可以练习使用hadoop离线分析。练手的吧。
  • 超详细 ELK 日志分析系统

    千次阅读 2021-01-07 10:53:45
    文章目录一、ELK日志分析系统简介1:ELK日志分析系统组成2:日志处理步骤二:三款软件简介1:Elasticsearch(1)Elasticsearch的概述(2)Elasticsearch核心概念2:Logstash(1)Logstash介绍(2)Logstash的主要...

    文章目录

    一、ELK日志分析系统简介

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

    1:ELK日志分析系统组成

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

    2:日志处理步骤

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

    二:三款软件简介

    1:Elasticsearch

    (1)Elasticsearch的概述

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

    (2)Elasticsearch核心概念

    (1)接近实时(NRT)

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

    (2)集群(cluster)

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

    (3)节点(node)

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

    (4)索引 (type)

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

    • 类型相对于关系型数据库的表 ——》索引(库)-》类型(表)-》文档(记录)

    (6)文档(document)

    • 一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以SON
      (Javascript Object Notation))格式来表示,而JSON是一个到处存在的互联网数据交互格式。
    • 在一个index/type里面,只要你想,你可以存储任意多的文档。注意,虽然一个文档在物理上位于一个索引中,实际上一个文档必须在一个索引内被索引和分配一个类型。
    • 文档相对于关系型数据库的列。

    (7)分片和副本(shards & replicas)

    • 在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。

    分片的两个最主要原因

    • a.水平分割扩展,增大存储量

    • b.分布式并行跨分片操作,提高性能和吞吐量

    分布式分片的机制和搜索请求的文档如何汇总完全是有elasticsearch控制的,这些对用户而言是透明的。

    网络问题等等其它问题可以在任何时候不期而至,为了健壮性,强烈建议要有一个故障切换机制,无论何种故障以防止分片或者节点不可用。为此,elasticsearch让我们将索引分片复制一份或多份,称之为分片副本或副本。

    副本也有两个最主要原因

    • a.高可用性,以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。

    • b.×××能,增大吞吐量,搜索可以并行在所有副本上执行。

    2:Logstash

    (1)Logstash介绍

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

    (2)Logstash的主要组件

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

    3:Kibana

    (1)Kibana介绍

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

    (2)Kibana主要功能

    • Elasticsearch无缝之集成
    • 整合数据,复杂数据分析
    • 让更多团队成员受益
    • 接口灵活,分享更容易
    • 配置简单,可视化多数据源
    • 简单数据导出

    三:ELK日志分析系统部署

    1:拓扑图

    在这里插入图片描述

    2:实验环境

    3:部署步骤

    node1 节点配置

    3.1、3台服务器关闭防火墙

    [root@apache ~]# systemctl stop firewalld
    [root@apache ~]# setenforce 0

    3.2、3台服务器域名映射

    [root@apache ~]# vi /etc/hosts
    20.0.0.10   apache
    20.0.0.11   node1
    20.0.0.12   node2

    3.3、部署elasticsearch软件

    (1)安装elasticsearch-rpm包

    [root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm 

    (2)加载系统服务

    [root@node1 ~]# systemctl daemon-reload                            # 守护进程重载,重新识别
    [root@node1 ~]# systemctl enable elasticsearch.service             # 开机自启动 

    3.4、更改elasticsearch主配置文件

    (1)拷贝文件备份

    [root@node1 ~]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

    (2)修改配置文件

    [root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml
    cluster.name: my-elk-cluster                          # 17 集群名字
    node.name: node1                                      # 23 节点名字
    path.data: /data/elk_data                             # 33 数据存放路径,退出后需要单独创建
    path.logs: /var/log/elasticsearch                     # 37 日志存放路径
    bootstrap.memory_lock: false                          # 43 不在启动的时候锁定内存
    network.host: 0.0.0.0                                 # 55 提供服务绑定的IP地址,0.0.0.0代表所有地址
    http.port: 9200                                       # 59 侦听端口为9200
    discovery.zen.ping.unicast.hosts: ["node1", "node2"]  # 68 集群发现通过单播实现

    (3)过滤查看修改的配置

    [root@node1 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
    cluster.name: my-elk-cluster
    node.name: node1
    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"]

    3.5、创建数据存放路径并授权

    [root@node1 ~]# mkdir -p /data/elk_data
    [root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/ 

    3.6、启动elasticsearch是否成功开启

    [root@node1 ~]# systemctl start elasticsearch.service     # 启动慢
    [root@node1 ~]# netstat -anpt | grep 9200
    tcp6       0      0 :::9200                 :::*                    LISTEN      54502/java     

    3.7、查看节点信息,用谷歌浏览器查看

    在这里插入图片描述

    node2 节点配置

    1:与 node1 节点操作相同,只需更改 elasticsearch主配置文件的节点名字为 node2

    2:过滤查看修改的配置

    [root@node2 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
    cluster.name: my-elk-cluster
    node.name: node2
    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"]

    3:查看节点信息,用谷歌浏览器查看
    在这里插入图片描述

    3.7、集群检查健康和状态

    (1)检查群集健康情况

    在这里插入图片描述
    (2)检查群集状态信息

    在这里插入图片描述

    3.8、安装elasticsearch-head插件

    上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群

    node1 节点与 node2 节点操作相同

    3.8.1、编译安装 node
    • 解压缩
    [root@node1 ~]# tar zxvf node-v8.2.1.tar.gz
    • 配置编译安装
    [root@node1 node-v8.2.1]# ./configure
    [root@node1 node-v8.2.1]# make && make install
    3.8.2、安装phantomjs 前端框架
    • 解压缩
    [root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
    • 拷贝文件
    [root@node1 ~]# cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
    3.8.3、安装 elasticsearch-head 数据可视化工具
    • 解压缩
    [root@node1 ~]# tar zxvf elasticsearch-head.tar.gz
    • 安装
    [root@node1 ~]# cd elasticsearch-head/
    [root@node1 elasticsearch-head]# npm install

    3.9、修改 elasticsearch 主配置文件

    [root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml            # 配置文件末尾添加
    http.cors.enabled: true                                # 开启跨域访问支持,默认为false
    http.cors.allow-origin: "*"                            # 跨域访问允许的域名地址    
    3.9.1、重新启动服务
    [root@node1 ~]# systemctl restart elasticsearch.service

    4.0、启动 elasticsearch-head 服务

    4.0.1、启动服务
    [root@node1 ~]# cd elasticsearch-head/
    [root@node1 elasticsearch-head]# npm run start &        # 切换到后台启动
    [1] 101339
    [root@node1 elasticsearch-head]# 
    > elasticsearch-head@0.0.0 start /root/elasticsearch-head
    > grunt server
    
    Running "connect:server" (connect) task
    Waiting forever...
    Started connect web server on http://localhost:9100
    4.0.2、查看状态
    [root@node1 ~]# netstat -anpt | grep 9100
    tcp        0      0 0.0.0.0:9100            0.0.0.0:*            LISTEN      101349/grunt        
    [root@node1 ~]# netstat -anpt | grep 9200
    tcp6       0      0 :::9200                 :::*                 LISTEN      101608/java

    4.1、谷歌浏览器登录查看

    4.1.1、登录前端框架

    在这里插入图片描述

    4.2、新建索引

    4.2.1、谷歌浏览器新建索引

    在这里插入图片描述

    4.2.2、node1 节点创建索引
    • 创建
    [root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"lisi","mesg":"hello world"}'
    • 完成
    {
      "_index" : "index-demo",             # 索引名称
      "_type" : "test",                    # 索引类型
      "_id" : "1",
      "_version" : 1,
      "result" : "created",                # 创建
      "_shards" : {
        "total" : 2,                       # 总量
        "successful" : 2,
        "failed" : 0
      },
      "created" : true
    }
    4.2.3、进入谷歌浏览器刷新

    在这里插入图片描述

    4.3、apache 服务器配置

    4.3.1、安装 apache 服务
    [root@apache ~]# yum -y install httpd
    4.3.2、开启 apache 服务
    [root@apache ~]# systemctl start httpd

    4.4、检查 java 环境

    [root@apache ~]# 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)

    4.5、安装 logstash

    4.5.4、解压缩
    [root@apache ~]# rpm -ivh logstash-5.5.1.rpm 
    4.5.2、启动服务
    [root@apache ~]# systemctl start logstash.service 
    [root@apache ~]# systemctl enable logstash.service 
    4.5.3、建立 logstash 软连接
    [root@apache ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

    4.6、输入采用标准输入,输出采用标准输出

    [root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }' 
                      省略
    09:02:20.499 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    
    www.baidu.com           # 输入
    2021-01-07T01:04:14.008Z apache www.baidu.com      # 输出

    4.7、使用rubydebug显示详细输出

    [root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
              省略
    The stdin plugin is now waiting for input:
    09:10:19.822 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    
    www.baidu.com                                     # 输入
    {
        "@timestamp" => 2021-01-07T01:11:16.829Z,     # 详细输出
          "@version" => "1",
              "host" => "apache",
           "message" => "www.baidu.com"
    }          

    4.8、使用logstash将信息写入elasticsearch中

    4.8.1、写入
    [root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["20.0.0.11:9200"] } }'
                省略
    The stdin plugin is now waiting for input:
    09:15:23.436 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}            
    4.8.2、输入
    www.baidu.com
    www.sina.com
    www.google.com
    4.8.3、谷歌浏览器对接查看

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

    4.9、apache 服务器收集系统日志

    4.9.1、对日志文件授权

    (1)查看日志文件

    [root@apache ~]# ll /var/log | grep messages
    -rw-------  1 root         root   218981 17 09:33 messages

    (2)授权

    [root@apache ~]# chmod o+r /var/log/messages
    [root@apache ~]# ll /var/log | grep messages
    -rw----r--  1 root         root   241485 17 09:37 messages

    4.9.2、创建配置文件,系统日志收集

    4.9.1、创建配置文件
    [root@apache ~]# vi /etc/logstash/conf.d/system.conf
    input {
           file{
           path => "/var/log/messages"
           type => "system"
           start_position => "beginning"
           }
         }
    output {
           elasticsearch {
           hosts => ["20.0.0.11:9200"]
           index => "system-%{+YYYY.MM.dd}"
           }
         }
    4.9.2、重启服务
    [root@apache ~]# systemctl restart logstash.service 
    4.9.3、谷歌浏览器查看索引

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

    5.0、在node1 节点安装 kibana

    5.0.1、安装并修改配置文件
    [root@node1 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm 
    [root@node1 ~]# vi /etc/kibana/kibana.yml 
    server.port: 5601                                # 2 kibana 打开的端口
    server.host: "0.0.0.0"                           # 7 kibana 侦听的地址
    elasticsearch.url: "http://20.0.0.11:9200"       # 21 和elasticsearch 建立联系
    kibana.index: ".kibana"                          # 30 在elasticsearch中添加.kibana索引 
    5.0.2、开启 kibana 服务
    [root@node1 ~]# systemctl start kibana.service 
    [root@node1 ~]# systemctl enable kibana.service

    5.1、谷歌浏览器登录 kibana 展示页面

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

    5.2、在 apache 服务器创建 apache 日志配置

    [root@apache ~]# cd /etc/logstash/conf.d/
    [root@apache conf.d]# vi 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 => ["20.0.0.11:9200"]
           index => "apache_access-%{+YYYY.MM.dd}"
           }
         }
         if [type] == "error" {
         elasticsearch {
         hosts => ["20.0.0.11:9200"]
         index => "apache_error-%{+YYYY.MM.dd}"
          }
         }
    }
    5.2.1、指定 apache_log.conf 配置文件收集日志
    [root@apache conf.d]# logstash -f apache_log.conf
          省略
    10:22:49.702 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
    10:22:49.744 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9601}      
    5.2.2、查看日志
    [root@apache ~]# ls /etc/httpd/logs/
    access_log  error_log
    5.2.3、谷歌浏览器查看

    在这里插入图片描述

    5.3、创建 apache 的 access 和 error 日志索引

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

    总结

    工作原理

    在需要收集日志的所有服务上部署logstash,其中logstash agent ( logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到 logstash indexer ,logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch ,可以用Elasticsearch进行自定义搜索,通过Kibana来结合自定义搜索进行页面展示。

    展开全文
  • 基于Python网络日志分析系统研究与实现 基于Python网络日志分析系统研究与实现
  • 超详细的ELK日志分析系统一、ELK日志分析系统简介1.1 、ELK日志分析系统简介1.2 、Elasticsearch介绍1.3、Logstash介绍1.4、Kibana介绍二、ELK日志分析系统部署2.1 实验环境2.2实验流程2.2.1、elk-1和elk-2中部署...
  • 理论+实验:ELK日志分析系统

    千次阅读 2020-10-28 16:28:48
    目录一、ELK日志分析系统简介1.1 ELK日志分析系统简介-11.2 ELK日志分析系统简介-2二、Elasticesarch介绍三、Logstash介绍四、Kibana介绍五、部署ELK日志分析系统 一、ELK日志分析系统简介 1.1 ELK日志分析系统简介-...
  • 目录一、ELK日志分析系统简介1.1ELK日志分析系统组成1.2日志处理步骤二、3款软件各自概念2.1Elasticsearch介绍2.2Logstash介绍2.3Kibana介绍三、ELK日志分析系统部署3.1实验环境及准备3.2实验步骤3.2.1node1和node2...
  • ELK 日志分析系统部署

    千次阅读 2019-08-08 11:09:40
    ELK 日志分析系统 组件简介 0、beats :日志收集客户端 1、Logstash:日志收集服务端 2、Elasticsearch :日志搜索引擎持久化 3、Kinaba :数据分析工具 Beats可以直接(或者通过Logstash)将数据发送到Elastic...
  • 用户日志分析系统实战(一)

    千次阅读 2017-11-14 22:21:11
    用户日志分析系统实战(一)接下来的博客是一个连续的部分,主要分为: 1. 用户日志分析系统实战(一),讲解背景及架构设计 2. 用户日志分析系统实战(二),日志收集与文件存储及其优化 3. 用户日志分析系统...
  • 文章目录ELK日志分析日志一:ELK日志分析系统简介1.1 一般的日志服务器1.2 ELK日志分析系统1.3 日志处理步骤二:Elasticsearch介绍2.1 Elasticsearch概述2.2 Elasticsearch的概念2.3 分片的两个最主要原因:2.4 开启...
  • hadoop日志分析系统

    千次阅读 2016-11-28 20:51:44
    环境:centos7+hadoop...注意:hadoop日志分析系统网上资料很多,但是大多都有写小问题,无法顺利运行,但本文中都是经过亲自验证的,可以一气呵成。另外还包括可能遇到的异常的详细解释及相关解决方案。 1) 日志格
  • 一、ELK日志分析系统详解 日志分析是运维工程师解决系统故障、发现问题的主要手段。日志包含多种类型,包括程序日志、系统日志以及安全日志等。通过对日志的分析,既可以做到未雨绸缪、预防故障的发生,又可以在故障...
  • ELK日志分析系统详细讲解&&实验部署

    千次阅读 2020-10-29 15:59:50
    ELK日志分析系统简介ELK日志分析系统的组成部分:日志处理步骤Elasticsearch介绍Elastcsearch概述Elasticsearch的核心概念Logstash介绍概述相关组件LogStash主机分类:Kibana介绍概述Kibana的主要功能部署ELK日志分析...
  • 大数据日志分析系统背景及架构

    千次阅读 2019-03-27 09:14:44
    大数据日志分析系统背景及架构
  • 2019年新录制的ELK日志分析系统课程,采用elasticSearch+Logstash+Kibana;6.2新版本, 阿里云服务器上安装部署,讲解性能优化等知识点; ElasticSearch, Kibana, Logstash基础到项目实战 项目实战讲解ELK采集业务应用...
  • 基于Hbase的网站日志分析系统(附带web展示页面) 基于Hbase的网站日志分析系统(附带web展示页面)基于Hbase的网站日志分析系统(附带web展示页面)
  • 大数据平台网站日志分析系统 1:大数据平台网站日志分析系统,项目技术架构图: 2:大数据平台网站日志分析系统,流程图解析,整体流程如下:  ETL即hive查询的sql;  但是,由于本案例的...
  • ELK+FileBeat日志分析系统

    千次阅读 2018-02-26 22:07:44
    日志分析系统重新构建了一下,选定的技术方案是ELK,也就是ElasticSearch, LogStash,Kibana。另外加了Filebeat和Kafka 2017.06.28 这两天稍微清闲一些,就趁机重新构建了日志分析系统。没有写代码,全部使用...
  • 秒懂!ELK日志分析系统

    千次阅读 2020-10-29 20:15:27
    ELK日志分析系统简介 **Elasticsearch 是一个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索...
  • 文章目录一、ELK 日志分析系统简介1.1、ELK 日志分析系统概述1.2、日志处理步骤1.3、ElasticSearch 介绍1.4、Logstash 介绍1.5、Kiabana 介绍二、实验系统搭建2.1、实验环境2.2、配置Elasticsearch 环境2.3、node1 ...
  • ELK 日志分析系统

    2020-09-15 16:12:52
    文章目录ELK 概述...日志分析是运维工程师解决系统故障,发现问题的主要手段。日志主要包括系统日志、应用程序日志和安全日志。 系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配
  • 大数据日志分析系统-介绍

    千次阅读 2018-02-24 16:42:36
    刚从公司离职-需要求职新公司 对做过的项目做一...经过了CDN公司日志分析实战日志日志分析系统:1.原始日志量: 每小时高的是否达到了 45303452条日志(四千五百多万条原始日志) ,某天日志量(这个随便选的)42211...
  • ELK 日志分析系统+redis+log4j

    千次阅读 2017-07-19 19:52:49
    ELK 日志分析系统
  • SpringBoot配置ELK日志分析系统搭建

    千次阅读 2018-12-12 13:38:52
    SpringBoot配置ELK日志分析系统ELK介绍环境配置准备工作配置Elasticsearch配置Kibana配置Logstash准备微服务运行测试 ELK介绍 引用网上别人的介绍: Logstash:日志收集工具,可以从本地磁盘,网络服务(自己监听...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,321
精华内容 7,328
关键字:

日志分析系统