zoukankan      html  css  js  c++  java
  • ELK日志分析系统。

    ELK日志分析系统
    一.环境概述
    ELK有  ElasticSearch 、Logstash 、KIbana三个开源软件组成。
    Elasticsearch是个开源分布式搜索引擎,特点是:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful分割接口,多数据源,自动搜索负载等。
    Logstash是个完全开源的工具,他可以对日志进行收集、过滤,并将其存储,供以后使用。
    Kibana也是个开源和免费的工具,为Logstash、Elasticsearch提供有好的日志分析Web界面。
     
    ELK工作原理展示图
     
    Logstash收集AppServer产生的log,并存放到Elasticsearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。
    1,将日志进行集中化管理(beats).
    2,将日志格式化(logstash).
    3,对格式化后的数据进行索引和存储(elasticsearch).
    4,前端数据的展示(kibana)
    二、Elastic search介绍。
    ES核心概念
    1.接近实时
    Elasticsearch是一个搜索速度接近实时的搜索平台,响应速度非常快。
    2.集群(cluster)
    一个集群就是由一个或多个节点组织在一起,在所有的节点上存放用户数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。每个集群都有一个唯一性标示的名称,默认是Elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。一个集群可以只有一个节点,为了具有更好的容错性。强烈建议在配置Elasticsearch时,配置成集群模式。11
    3.节点(node)
    节点就是一台单一的服务器,每个节点都存储数据并参与集群的索引和搜索功能。节点也通过名字来标识,可以通过指定集群名字来加入到集群中。
    4.索引(index)
    类似数据库中的“库”的概念。
    5.类型(type)
    在一个索引中,可以定义一种或多种类型。
     
    三、Logstash介绍。
    Logstash有JRuby语言编写,运行在java虚拟机上,是一款强大的数据处理工具。
    Logstash的理念:
    collect: 数据输入。
    enrich: 数据加工。
    transport: 数据输出。
    Logstash的主要组件。
    Shipper:日志收集者。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可。
    Indexer:日志存储者。负责接收日志并写入到本地文件。
    Broker:日志Hub,负责连接多个Shipper和多个Indexer.
    Search and Storage:允许对事件进行搜索和存储。
    Web Interface:基于Web的展示界面。

    四、Kibana介绍
    Kibana是一个针对Elasticsearch的开源分析及可视化平台,主要涉及用来和Elasticsearch一起工作。可以搜索、查看交互存储在Elasticsearch素引中的数据。并通过各种图表进行高级数据分析及展示。kibana可以让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。kibana使用非常简单,只需要添加索引就可以检测Elasticsearch索引数据。
     
    五、配置ELK日志分析系统。
      如图所示:配置和安装ELK日志分析系统,安装集群方式,2个elasticsearch节点分配4GB
    (>2GB)内存,并监控apache(1GB内存)服务器日志。
     
     
    Elasticsearch 端口9200.

    1.在2个ELK节点上配置名称解析,通过本地文件/etc/hosts文件实现
    hostname    elk-node1
    vim   /etc/hosts
    192.168.200.181 elk-node1
    192.168.200.181 elk-node2
    保存退出。
    bash
    节点二上相同操作,名称不同。
    2.配置2台elk-node 的Java环境
    java -version   //系统自带的环境也可以。
    3.安装Elasticsearch软件。
    elasticsearch 可以通过yum安装、源码安装都可以,这里通过rpm包进行安装,2个elk-node节点都要安装.
    rpm   -ivh    elasticsearch-5.5.0.rpm
    通过执行命令配置成系统服务并设置自动开机启动,2个节点都要做.
    systemctl   daemon-reload
    systemctl   enable  elasticsearch.service
    4.更改elastic search主配置文件,每台节点都要做。
    vim /etc/elasticsearch/elasticsearch.yml
     17 cluster.name: my-elk-cluster       #集群名字,名字相同才会分到相同集群
     23 node.name: elk-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          #提供服务绑定的IP地址,0.0.0.0代表所有
     59 http.port: 9200             #指定监听端口
     68 discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]  #集群中的实例名
    ##注意(此处添加的内容node1与node2此处不同,此处添加为主节点)
     http.cors.enabled: true         #开启跨区域传送
     http.cors.allow-origin: "*"        #跨区域访问允许的域名地址
    保存退出
    5.创建数据存放目录。每个节点都要做。
    mkdir -p /data/elk_data #此处与主配置文件内要符合。
    chown elasticsearch:elasticsearch /data/elk_data/
    6.启动服务。
    systemctl   start   elasticsearch.service
    #首次启动如果确认步骤未错的情况下但是没有端口,耐心等待一会儿。
    netstat   -lnpt | grep   9200
    7.访问测试。
    在浏览器访问服务器的9200端口
    192.168.200.181:9200
    查看集群健康情况 可以看到status为green绿色
    http://192.168.200.181:9200/_cluster/health?pretty
    8.安装elasticsearch-head插件
    直接访问效果不太直观,可以添加head插件,这个插件需要npm命令。
    tar xf node-v8.2.1-linux-x64.tar.gz -C /usr/local/
    ln -s /usr/local/node-v8.2.1-linux-x64/bin/node /usr/bin/node
    ln -s /usr/local/node-v8.2.1-linux-x64/bin/npm /usr/local/bin
    node -v #能够查看版本
    npm -v  #能够查看版本
    9.安装elasticsearch-head 作为独立节点并后台启动,这将启动运行在9100上的本地web服务器,该端口服务于elasticsearch-head
    tar xf elasticsearch-head.tar.gz -C /data/elk_data/   #在之前安装elasticsearch时修改配置文件的数据的位置
    cd /data/elk_data/
    chown -R elasticsearch:elasticsearch  elasticsearch-head/
    cd   /data/elk_data/elasticsearch-head/
    npm install
    #报错为正常现象,忽略即可
    cd _site/
    cp app.js{,.bak}
    vim app.js
    4329      this.base_uri=this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.67:9200";   ##更改为自身的ip
    保存退出
    npm run start &
    systemctl start elasticsearch.service
    netstat -anpt |grep 9100
    10.浏览器测试
    http://192.168.200.181:9100
    为浏览器测试页面插入一个测试索引,索引为index-demo,类型为test ,可以看到成功创建,在一台机器上创建即可,一般工作中不用我们来编写,开发会做成的
    curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type:application/json' -d '{ "user": "zhangsan","mesg":"hello world" }'
    刷新浏览器页面就可以看到了
    http://192.168.200.181:9100
    11.安装logstash
    Logstash一般部署在需要监控其日志的服务器中的。也需要java环境。和es一项需要java环境。
    rpm -ivh logstash-5.5.1rpm
    systemctl start logstash.service
    ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
    12.logstash命令使用。
    在logstash中,包括了三个阶段:输入input->处理filter(不是必须的)->输出output。
    输入input
    -f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash
    -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“”则默认使用 stdin作为输入,stdout作为输出)
    -t:测试配置文件是否正确,然后退出
    logstash -e 'input { stdin{} } output { stdout{} }'
    #标准输入和标准输出
    logstash -e 'input { stdin{} } output { student{ codec=>rubydebug} }'
    #使用rubydebug显示详细输出,codec为一种编xxx。
    logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.200.181:9200"]} }'
    #标准输入和输出到es集群中。

    配置文件的使用。
    logstash配置文件基本上由三部分组成,input、output以及用户需要才添加的filter,因此标准的配置文件格式如下:
    input{..}.
    filter{...}
    output{...}
    在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:
    input{
    file{path =>"/var/log/messages"type =>"syslog"}
    file{path =>"/var/log/apache/access.log"type =>"apache"}
    }
    案例:
    将system.conf放到/etc/logstash/conf.d/目录中,logstash启动时便会加载。
    cd /etc/logstash/conf.d
    vim system.conf
    input {
     file {
         path => "/var/log/messages"
              type => "system"
         start_position => "beginning"
      }
    }
    output {
     elasticsearch {
      hosts => ["192.168.200.67:9200"]
      index => "system-%{+YYYY.MM.dd}"
     }
    }
    保存退出
    systemctl restart logstash
    cd
    /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf     //加载文件

    13.安装kibana。
    rpm -ivh kibana-5.5.1-x86_64.rpm
    systemctl enable kibana.service
    vim /etc/kibana/kibana.yml
    2 server.port: 5601
    7 server.host: "0.0.0.0"
    21 elasticsearch.url: "http://192.168.200.67:9200"
    30 kibana.index: ".kibana"
    保存退出
    systemctl start kibana.service
    netstat -lnpt | grep 5601
     

    使用浏览器访问测试:
    192.168.200.181:5601
  • 相关阅读:
    2020春,不一样的学期不一样的软工实践
    尘埃落下,我抓住透明的阳光,温暖留在掌心
    敏捷软工
    《构建之法》& CI/CD调研
    2021年-软件工程-热身阅读作业
    从学生到科技工作者
    希望我能帮到你:给同学们软件开发的建议
    CC2020 分享信息
    【计算机教育】看《计算机科学导论》,发展计算思维能力
    【计算机教育】创新工程实践课程的反馈
  • 原文地址:https://www.cnblogs.com/flff/p/12511745.html
Copyright © 2011-2022 走看看