ELK日志分析系统技术试用

1.1.概述
1、日志,对于任何系统来说都是及其重要的组成部分。在计算机系统里面,更是如此。 但是由于现在的计算机系统大多比较复杂,很多系统都不是在一个地方,甚至都是跨国界的;即使是在一个地方的系统,也有不同的来源,比如,操作系统,应用服务,业务逻辑等等。他们都在不停产生各种各样的日志数据。
2、日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。
3、面对如此海量的数据,又是分布在各个不同地方,如果需要去查找一些重要的信息,就需要采用更便捷的方法。于是,有人就提出了建立一套集中式的方法,把不同来源的数据集中整合到一个地方。
4、一个完整的集中式日志系统,有以下几个主要特点:
(1)收集-能够采集多种来源的日志数据
(2)传输-能够稳定的把日志数据传输到中央系统
(3)存储-如何存储日志数据
(4)分析-可以支持 UI 分析
(5)警告-能够提供错误报告,监控机制

5、ELK日志系统介绍
ELK Stack是开源日志处理平台解决方案,背后的商业公司是elastic(https://www.elastic.co/)。它由日志采集解析工具Logstash、基于Lucene的全文搜索引擎Elasticsearch、分析可视化平台Kibana组成。
所以,ELK不是一款软件,是一套解决方案,是三个软件产品的首字母缩写, Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用, 而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈。

 Elasticsearch
Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
主要特点:
(1)实时分析 
(2)分布式实时文件存储,并将每一个字段都编入索引
(3)文档导向,所有的对象全部是文档  
(4)高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)。 (5)接口友好,支持 JSON
2、Logstash
Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。
主要特点 : 
(1)几乎可以访问任何数据 
(2)可以和多种外部应用结合 
(3)支持弹性扩展 
它由三个主要部分组成 :
(1)Shipper-发送日志数据 
(2)Broker-收集数据,缺省内置 Redis 
(3)Indexer-数据写入

Kibana
Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引 中查找,交互数据,并生成各种维度的表图。
注意:Kinaba需要Node.js环境并且安装grunt,es和logstash需要安装java8或者以上。

1.5.ELK整体架构

 

Elasticsearch:https://www.elastic.co/cn/elasticsearch/
Logstash:https://www.elastic.co/cn/logstash/
Kibana:https://www.elastic.co/cn/kibana

三个软件的大小版本必须一致。
注意:环境必须安装java8以上,node.js和grunt。

都为bin目录启动

1、logstash 就是一个具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网。
2、logstash管道需要两个必要的元素,输入和输出,以及一个可选元素过滤器。输入插件从数据源那里获取数据,过滤器插件根据你的期望修改数据,输出插件将数据写入目的地。
下图是logstash管道的流程
●Input,数据采集(常用插件: stdin、 file、 kafka、 beat.、http、 )
●Filter :数据解析/转换(r常用插件: grok、date、 geoip、 mutate、 useragent )
●Output :数据输出(常用插件: Elasticsearch、 )

 所以在启动时要指定配置文件,配置文件的内容就是输入和输出源的信息,有自己的编写规则,主要为input{}和output{}内容。

4、在logstash文件夹的bin目录里新建一个conf配置文件,这里名为logstash.conf。
设置数据源从本地数据库和控制台获取,输出到es和控制台。
input数据输入 常用插件: stdin、 file、 kafka、 beat、 http
Filter :数据解析/过滤 常用插件: grok、date、 geoip、 mutate、 useragent 
output :数据输出 常用插件: Elasticsearch

input {
    stdin {
    }
    jdbc {
      # 配置数据库信息
      jdbc_connection_string => "jdbc:mysql://localhost:3306/goods?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_user => "root"
      jdbc_password => "123456"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      jdbc_default_timezone => "Asia/Shanghai"
# mysql驱动所在位置
      jdbc_driver_library => "D:\maven\local_repository\mysql\mysql-connector-java\8.0.16\mysql-connector-java-8.0.16.jar"
      #sql执行语句
	  statement => "SELECT * FROM zy_goods"
      # 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 是否将 sql 中 column 名称转小写
      lowercase_column_names => false
    }
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "goods"
        #设置自增主键ID
        document_id => "%{id}"
        
    }
    stdout {
        codec => json_lines
    }

其中,input为输入源的配置信息内容所在位置,在input{}中,可以设置多种输入情况,在示例中就设置了stdin标准输入,即在控制台输入(命令窗口)和goods数据库输入。output为输出源设置,为输出到es和控制台。

5、打开命令窗口,在bin目录下输入指令:

logstash -f logstash.conf
#conf文件名字根据实际命名更改。

2.5.启动Kibana服务

Kibana 是用于在 Elasticsearch 中可视化数据的工具,可通过基于浏览器的界面轻松搜索,可视化和探索大量数据。一旦数据进入 Elasticsearch,就可以通过 Kibana 中进行探索、与之交互。

2、需要先修改config中kibana.yml配置文件
其中:server.port: 5601 服务端口
  server.host: "localhost" 服务地址  
  elasticsearch.hosts: ["http://localhost:9200"]  es服务地址端口
  i18n.locale: "zh-CN"  设置语言为中文
完成后点击bin目录下的kibana.bat文件,下图代表启动成功。

ES常用查询的API

GET /_cat/nodes?v
# 查询所有索引
GET /_cat/indices?v
GET /_cat/indices?v&h=health,status,index
# 创建索引
PUT /bamboo
# 删除索引
DELETE /bamboo
# 创建索引对应的mapping和setting
PUT /bamboo 
{
  "mappings": { 
      "properties": { 
        "title":    { "type": "text"  }, 
        "name":     { "type": "text"  }, 
        "age":      { "type": "integer" },  
        "created":  {
          "type":   "date", 
          "format": "strict_date_optional_time||epoch_millis"
        }
      }
    },
  "settings":{
    "index":{
    "number_of_shards": 5,
    "number_of_replicas": 1
    }
  }
}

#获取当前索引的setting信息
GET /bamboo/_settings
GET /bamboo/_mapping
# 获取所有的索引mapping信息
GET _all/_mapping

#添加一条数据
PUT /bamboo/_doc/1
{
  "name":"zs",
  "title":"张三",
  "age":18,
  "created":"2018-12-25"
}

# 修改一条数据的某个属性值
PUT /bamboo/_doc/1 
{
  "name":"lxs",
  "title":"李小四"
}

GET /bamboo/_doc/100

DELETE /bamboo/_doc/1

# 批量插入多个document,_id不指定则系统生成字符串
POST /bamboo/_doc/_bu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值