zoukankan      html  css  js  c++  java
  • ELK

    ELK定义

    Elasticsearch:负责日志检索和储存

    Logstash:负责日志的收集和分析、处理

    Kibana:负责日志的可视化

    这三款软件都是开源软件,通常是配合使用,而且又先后归于Elastic.co公司名下,故被简称为ELK

    使用场景

    ELK组件在海量日志系统的运维中,可用于解决:

    – 分布式日志数据集中式查询和管理

    – 系统监控,包含系统硬件和应用各个组件的监控

    – 故障排查

    – 安全信息和事件管理

    – 报表功能

    Elasticsearch

    Elastic官方文档

    Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上,用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

    主要特点:

    – 实时分析

    – 分布式实时文件存储,并将每一个字段都编入索引

    – 文档导向,所有的对象全部是文档

    – 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)

    – 接口友好,支持JSON

    – Elasticsearch没有典型意义的事务

    – Elasticsearch是一种面向文档的数据库

    – Elasticsearch没有提供授权和认证特性

    ES集群

    1.相关概念名词:

    – Node: 装有一个ES服务器的节点

    – Cluster: 有多个Node组成的集群

    – Document: 一个可被搜索的基础信息单元

    – Index: 拥有相似特征的文档的集合

    – Type: 一个索引中可以定义一种或多种类型

    – Filed: 是ES的最小单位,相当于数据的某一列

    – Shards: 索引的分片,每一个分片就是一个Shard

    – Replicas: 索引的拷贝

    2.ES为什么要实现集群

    ES集群搭建

    在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。

    我们可以采用ES集群,将单个索引的分片到多个不同分布式物理机器上存储,从而可以实现高可用、容错性等。

    ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。

    3.ES常用插件

    head插件

    它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作

    它提供一组针对集群的查询API,并将结果以json和表格形式返回

    它提供一些快捷菜单,用以展现集群的各种状态

    kopf插件

    是一个ElasticSearch的管理工具,它提供了对ES集群操作的API

    bigdesk插件

    是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等

    map 映射

    mapping:映射

    – 创建索引的时候,可以预先定义字段的类型及相关属性

    – 作用:这样会让索引建立得更加的细致和完善

     分类:静态映射和动态映射

    – 动态映射:自动根据数据进行相应的映射

    – 静态映射:自定义字段映射数据类型

     Kibana安装与配置

    kibana用户手册

    kibana是什么

    – 数据可视化平台工具

    特点:

    – 灵活的分析和可视化平台

    – 实时总结流量和数据的图表

    – 为不同的用户显示直观的界面

    – 即时分享和嵌入的仪表板

     安装

    安装和配置参考用户手册

    kibana.yml的配置

    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.url: "http://192.168.1.51:9200"    
    kibana.index: ".kibana"                //默认索引的名称
    kibana.defaultAppId: "discover"            //默认页面
    elasticsearch.pingTimeout: 1500
    elasticsearch.requestTimeout: 30000
    elasticsearch.startupTimeout: 5000

    除elasticsearch.url需要配置为我们ES集群的地址之外,其他保持默认值

     web访问kibana    ---      http://192.168.1.56:5601/

    kibana 管理界面使用教程

    Logstash是什么

    是一个数据采集、加工处理以及传输的工具

    – 所有类型的数据集中处理

    – 不同模式和格式数据的正常化

    – 自定义日志格式的迅速扩展

    – 为自定义数据源轻松添加插件

    安装

     logstash官方文档

    Logstash依赖Java环境,需要安装java-1.8.0-openjdk

    Logstash没有默认的配置文件,需要手动配置

    Logstash工作结构:
    { 数据源 } ==>
        input { } ==>             //获取数据
            filter { } ==>            //处理数据
                output { } ==>            //存储,输出数据
                        { ES }

    Logstash类型及条件判断

    Logstash里面的类型

    – 布尔值类型: ssl_enable => true

    – 字节类型:bytes => "1MiB"

    – 字符串类型: name => "xkops"

    – 数值类型: port => 22

    – 数组: match => ["datetime","UNIX"]

    – 哈希: options => {k => "v",k2 => "v2"}

    – 编码解码: codec => "json"

    – 路径: file_path => "/tmp/filename"

    – 注释: #

    Logstash条件判断

    等于: ==
    不等于: !=
    小于: <
    大于: >
    小于等于: <=
    大于等于: >=
    匹配正则: =~
    不匹配正则: !~
    包含: in
    不包含: not in
    与: and
    或: or
    非与: nand
    非或: xor
    复合表达式: ()
    取反符合:!()

    Logstash的第一个配置文件:/etc/logstash/logstash.conf

    input{
    stdin{}    //标准输入
    }
    filter{ }
    output{
    stdout{}    //标准输出
    }
    # logstash -f logstash.conf   //启动并验证

    Logstash插件

    上页的配置文件使用了logstash-input-stdin和logstash-output-stdout两个插件, Logstash还有filter和codec类插件,查看插件的方式是

    # /opt/logstash/bin/logstash-plugin list
    插件地址

    codec类插件

    – 常用的插件:plain、json、json_lines、rubydebug、multiline等

    – 使用刚刚的例子,这次输入json数据

    – 设置输入源的codec是json,在输入的时候选择rubydebug

    input{
        stdin{ codec => "json" }
    }
    filter{     }
    output{
        stdout{ codec => "rubydebug" }
    }

    input file插件

    file{
    path => [“/tmp/a.log”, “/tmp/b.log”]            //要读取数据的文件,可以同时监控多个文件
    sincedb_path => "/var/lib/logstash/sincedb-access"   //指针文件,记录读取文件的位置
    start_position => "beginning"               //指定默认行为,配置第一次读取文件从什么地方开始              
    type => 'filelog'                    //打标签
    }

    filter grok插件

    – 解析各种非结构化的日志数据插件

    – grok使用正则表达式把飞结构化的数据结构化

    – 在分组匹配,正则表达式需要根据具体数据结构编写

    – 虽然编写困难,但适用性极广

    grok{
    match => ["message", "%{IP:ip}, (?<key>reg) " ]
    }

    正则宏表达式模板:/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/grok-patterns

    output ES插件

    if [type] == "filelog"{
    elasticsearch {
    hosts => ["192.168.1.51:9200", "192.168.1.52:9200"]     //主机地址
    index => "weblog"           //索引名称
    flush_size => 2000        //达到一定大小写入数据库
    idle_flush_time => 10        //达到一定时间写入数据库
    }}

    调试成功后,把数据写入ES集群

    input filebeats插件

    这个插件主要用来接收beats类软件发送过来的数据,由于logstash依赖JAVA环境,而且占用资源非常大,因此会使用更轻量的filebeat替代

    beats {
    port => 5044
    }

    filebeat安装配置(web服务器)

    filebeat安装与配置

    使用rpm安装filebeat  # yum –y install filebeat
    修改配置文件/etc/filebeat/filebeat.yml
    设置开机运行# systemctl enable filebeat
    开启服务 systemctl start filebeat

    修改配置文件/etc/filebeat/filebeat.yml

    paths:
    
    - /root/logs.jsonl
      document_type: weblog
      ... ...
      paths:
    - /root/accounts.json
      document_type: account
      output:
      logstash:
      hosts: ["192.168.1.57:5044"]



     
    
    
  • 相关阅读:
    [C]%p和%02x含义
    [python]特殊输入格式(输入中包含空格逗号等)
    《python编程从入门到实践》用户输入和while循环
    [ C ]根据年月日判断周几(基姆拉尔森计算公式)
    《python编程从入门到实践》字典
    《python编程从入门到实践》if语句
    记一次页面乱码问题的解决
    apache配置健康检查
    nginx 配置代理对象的host
    nginx配置http负载均衡
  • 原文地址:https://www.cnblogs.com/xujint/p/13322088.html
Copyright © 2011-2022 走看看