ELK就是一套完整的日志分析系统

ELK=Logstash+Elasticsearch+Kibana

统一官网https://www.elastic.co/products

ELK模块说明

Logstash

作用:用于处理传入的日志,负责收集、过滤和写出日志

Logstash分为三个组件input,filter,output

输入input

常用file,redis,kafka

示例:

input

file {

path => ['/var/log/neutron/dhcp-agent.log']   //日志路径

tags => ['openstack','oslofmt', 'neutron', 'neutron-dhcp-agent']

start_position => "beginning"

type => "neutron"

codec => multiline {  //合并行

pattern => "^%{OPENSTACK_TRACE_BLOCK}"  //自定义变量

what => "previous"  //上一行合并,next下一行合并

}

}

input {

kafka {

zk_connect => "server:2181"

topic_id => "nova"

codec =>json

reset_beginning => false

consumer_threads => 2

decorate_events =>true

}

}

过滤filter

常用Date时间处理、Grok正则捕获、GeoIP地址查询

示例:

Fileter{

grok {

match => { "message" => "%{OPENSTACK_NORMAL}%{GREEDYDATA:message}"}

overwrite => ["message"]  //重写message

}

}

}

Grok内置变量

可以自定义变量

1.自定义变量路径

/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.2/patterns

2. 自定义变量存放在 /opt/logstash/patterns

在配置中添加

filter {

grok {

patterns_dir => ["/opt/logstash/patterns "]

match => { "message" => "%{OPENSTACK_NORMAL}%{GREEDYDATA:message}"}}

}

}

OPENSTACK_NORMAL ^%{TIMESTAMP_ISO8601:logdate} %{NUMBER:pid} %{LOGLEVEL:loglevel} %{NOTSPACE:module}%{SPACE}

2016-04-27 15:19:14.455 4392 DEBUG nova.api.openstack.wsgi [req-fde66cf0-6d28-4b0d-8671-bce33bb48665 0f288a5b5f19437db670ef94269bfd36 629fb63dd82e46fa937accc99d417059 - - -] Action: 'create', calling method: <bound methodServersController.createof<nova.api.openstack.compute.servers.ServersController object at 0x7c61d10>>, body: {"server": {"name": "test11", "imageRef": "c9620d95-fc3a-4090-b9e8-6c3909cc556e", "flavorRef": "100000000", "max_count": 1, "min_count": 1, "networks": [{"uuid": "e18f583f-c8cf-433a-8095-315712525ecd"}]}} _process_stack /usr/lib/python2.7/site-packages/nova/api/openstack/wsgi.py:789

output

常用Elasticserch、保存为文件、输出到HDFS、标准输出

示例:

output {

elasticsearch {

hosts=>["server:9200"]   //老版本为 host 新版本 hosts

document_type =>"%{type}"

workers => 2

index => "logstash-%{type}-%{+YYYY.MM.dd}"  //索引名称

}

}

output {

kafka {

bootstrap_servers => "server:9092"

topic_id => "nova"

compression_type => "snappy"

}

}

 

 

 

 

 

 

elasticsearch

用于将导入数据建立动态倒排索引,建立磁盘缓存,提供磁盘同步控制,达到准实时检索

DB 和 elasticsearch对比

Index索引

索引相当于数据库的一个库

Type

类型相当于数据库的一个表

Document

文档相当于数据库的一行数据

Filed

属性相当于数据库的一个字段

Mapping

映射理解为一种方案

查询方式

1. query-string

curl -XGET server:9200/logstash-nova-2016.04.27/nova/_search?q=pid.raw:1524'

2.DSL (常用)

curl -XGET server:9200/logstash-nova-2016.04.27/nova/_search -d '{

"query" : {

"term" : { "pid.raw " : "1524" }

}

}

GET  查询

POST 更新

PUT  创建

DELETE删除

HEAD获取基础信息

集群(Cluster)

ES集群是一个或多个节点的集合,它们共同存储了整个数据集,并提供了联合索引以及可跨所有节点的搜索能力。

ES集群需要修改配置文件

config/elasticsearch.yml

每台es机器的配置文件中 cluster.name相同,node.name不一致

ES集群内部实现HA,避免单点故障

集群内部自动选择一个主节点,监听node节点状态,如果发生故障提取节点副本分片,均衡分发给其他节点。

节点(Node)

运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。

分片(shard)

分片存储索引,一个索引可能会存在多个分片上。

Shard有两种类型:primary和replica,即主shard及副本shard。

Primary shard创建完成,其Primary shard的数量将不可更改,默认是5

Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能,默认是1。

说明:

Elasticsearch优化方案

  1. 使用SSD 在elasticsearch.yml配置数据存放位置

path.data: /mnt/data/elasticsearch  #数据存在挂载硬盘 进行配置

  1. 根据索引数量,调整分片数量
  2. 根据实际情况调整内存
  3. Elasticsearch mapping调整,有些默认设置可以禁用

Index中默认会有_all的域,这个会给查询带来方便,但是会增加索引时间和索引尺寸

"_all" : {"enabled" : false}

执行语句

PUT my_index

{

"mappings": {

"my_type": {

"_all": {

"enabled": false

}

}

}

}

Elasticsearch API说明

文档API: 提供对文档的增删改查操作

搜索API: 提供对文档进行某个字段的查询

索引API: 提供对索引进行操作

查看API: 按照更直观的形式返回数据,更适用于控制台请求展示

集群API: 对集群进行查看和操作的API

查询语法可以参考官网进行学习:

https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

安装elasticsearch head插件管理es

Kibana

用于获得elasticsearch的数据进行展示

应用

创建虚拟机的日志收集

Logstash   配置文件

input {

file {

path => ['/var/log/nova/nova-api.log']

tags => ['openstack','oslofmt', 'oslofmt', 'nova', 'nova-api']

start_position => "beginning"

type => "nova"

}

file {

path => ['/var/log/nova/nova-conductor.log']

tags => ['openstack', 'oslofmt', 'nova', 'nova-conductor']

start_position => "beginning"

type => "nova"

}

file {

path => ['/var/log/nova/nova-scheduler.log']

tags => ['openstack', 'oslofmt',  'nova', 'nova-scheduler']

start_position => "beginning"

type => "nova"

}

file {

path => ['/var/log/nova/nova-compute.log']

tags => ['openstack', 'oslofmt', 'nova', 'nova-compute']

start_position => "beginning"

type => "nova"

}

file {

path => ['/var/log/neutron/server.log']

tags => ['openstack','oslofmt', 'neutron', 'neutron-server']

start_position => "beginning"

type => "neutron"

}

}

filter {

mutate {

gsub => ['path', "/.+/", ""]

}

if "oslofmt" in [tags] {

grok {

match => { "message" => "%{OPENSTACK_NORMAL}%{GREEDYDATA:message}"}

overwrite => ["message"]

}

}

if "Traceback" in [message] or "File" in [message] or "RuntimeERROR" in [message] or "Command" in [message] or "Exit" in [message] or "Stdin" in [message]{

multiline {

pattern => "^%{GREEDYDATA}"

what => "previous"

}

}

date {

match => ["logdate", "yyyy-MM-dd HH:mm:ss.SSS",

"EEE MMM dd HH:mm:ss.SSSSSS yyyy",

"dd/MMM/yyyy:HH:mm:ss",

"dd-MMM-yyyy::HH:mm:ss",

"MMM dd HH:mm:ss",

"MMM  dd HH:mm:ss",

"yyyy-MM-dd HH:mm:ss.SSS"  ]

}

if [loglevel] in ["WARNING","WARN","TRACE", "ERROR"] {

mutate {

add_tag => ["something_wrong"]

}

}

}

output {

stdout { codec => rubydebug }

elasticsearch

{hosts=>["server:9200"]

document_type =>"%{type}"

workers => 16

index => "logstash-%{type}-%{+YYYY.MM.dd}"

}

}

Elasticsearch

按照模块query DSL 语句

nova-api

Curl-XGET"http://192.168.44.128:9200/logstash-nova-2016.04.27/nova/_search?pretty=true" -d

'{"query":

{"bool":

{"must":

[{"term":{"path.raw":"nova-api.log"}},{"query_string": {"default_field": "_all","query": "fde66cf0 783b26ba"}},

{"range": {"logdate.raw": {"gt": "2016-04-27 15:19:14.455","lt": "2016-04-27 15:19:21.999"}

}}]

}

}

}'

nova-scheduler

curl-XGET"http://192.168.44.128:9200/logstash-nova-2016.04.27/nova/_search?pretty=true" -d

'{"query":

{"bool":

{"must":

[{"term":

{"path.raw":"nova-scheduler.log"}},{"query_string": {"default_field": "_all","query": "fde66cf0"}}],

"must_not": [ ],"should": [ ]

}

}

}'

nova-conductor

curl-XGET"http://192.168.44.128:9200/logstash-nova-2016.04.27/nova/_search?pretty=true"  -d

'{"query":

{"bool":

{"must":

[{"term":

{"path.raw":"nova.conductor.log"}},

{"query_string":{"default_field":"_all","query":"fde66cf0"}}],

"must_not": [ ],

"should": [ ]

}

}

}'

nova-compute

curl-XGET"http://192.168.44.128:9200/logstash-nova-2016.04.27/nova/_search?pretty=true"  -d

'{"query":

{"bool":

{"must":

[{"term":

{"path.raw":"nova-compute.log"}},

{"query_string":

{"default_field":"_all","query":"fde66cf0"}},

{"range":

{"logdate.raw":{"gt":"2016-04-2715:19:10.000","lt": "2016-04-2715:25:07.981"}}}],

"must_not":

[{"term":{"module.raw":"oslo_service.periodic_task"}},

{"term":{"module.raw":"oslo_concurrency.lockutils"}},

{"term": {"module.raw": "keystoneclient.session"}}],

"should": [ ]

}

}

}'

server.log

curl-XGET"http://192.168.44.128:9200/logstash-neutron-2016.04.27/neutron/_search?pretty=true"  -d

'{"query":

{"bool":

{"must":

[{"term": {"path.raw": "server.log"}},

{"query_string":{"default_field":"_all","query":"783b26ba ed1db9be"}},

{"range":{"logdate.raw":{"gt":"2016-04-2715:19:10.000","lt": "2016-04-27 15:21:00.000"}

}

}]

}

}

}'

ELK---日志分析系统的更多相关文章

  1. ELK日志分析系统简单部署

    1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...

  2. Rsyslog+ELK日志分析系统

    转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...

  3. 十分钟搭建和使用ELK日志分析系统

    前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为“十分钟搭建和使用ELK日志分析系统”听 ...

  4. ELK日志分析系统-Logstack

    ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...

  5. elk 日志分析系统Logstash+ElasticSearch+Kibana4

    elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示clie ...

  6. 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步

    第十章-实战:ELK日志分析系统 ElasticSearch.Logstash.Kibana简称ELK系统,主要用于日志的收集与分析. 一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系 ...

  7. Docker笔记(十):使用Docker来搭建一套ELK日志分析系统

    一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...

  8. ELK 日志分析系统的部署

    一.ELK简介 ElasticSearch介绍Elasticsearch是一个基于Lucene的搜索服务器. 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasti ...

  9. Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)

    因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...

  10. ELK日志分析系统搭建

    之前一段时间由于版本迭代任务紧,组内代码质量不尽如人意.接二连三的被测试提醒后台错误之后, 我们决定搭建一个后台日志分析系统, 经过几个方案比较后,选择的相对更简单的ELK方案. ELK 是Elast ...

随机推荐

  1. Spring ioc 详解

    引述:IoC(控制反转:Inverse of Control)是Spring容器的内核,AOP.声明式事务等功能在此基础上开花结果.但是IoC这个重要的概念却比较晦涩隐讳,不容易让人望文生义,这不能不 ...

  2. 框架学习:ibatis框架的结构和分析

    由于最近一段时间比较忙碌,<框架学习>系列的文章一直在搁浅着,最近开始继续这个系列的文章更新. 在上篇文章中我们说到了hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优 ...

  3. JavaScript怎么把对象里的数据整合进另外一个数组里

    https://blog.csdn.net/qq_26222859/article/details/70331833 var json1 = [ {"guoshui":[ 3000 ...

  4. 重构:以Java POI 导出EXCEL为例

    重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

  5. 异步任务spring @Async注解源码解析

    1.引子 开启异步任务使用方法: 1).方法上加@Async注解 2).启动类或者配置类上@EnableAsync 2.源码解析 虽然spring5已经出来了,但是我们还是使用的spring4,本文就 ...

  6. vue项目在移动端(手机)调试

    查了很长一段时间的资料才搞好. 感悟就是:原来那么简单呐. 首要条件:同一局域网下(大致理解为链接相同的wifi) 1:命令行运行 ipconfig 2: 得到ipv4值, 用该值替换localhos ...

  7. 谈谈对Javascript构造函数和原型对象的理解

    对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔!).   常用的几种对象创 ...

  8. IDEA无法创建类,接口

    原因:模板丢失 解决方案: 在idea.exe.vmoptions 或 idea64.exe.vmoptions中加入配置-Djdk.util.zip.ensureTrailingSlash=fals ...

  9. mysql事务隔离级别详解和实战

    A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据 但是 在A事务中查询的话 查到的都是操作之后的数据 没有提交的数据只有自己看得到,并没有update到数据库. 查看InnoD ...

  10. HTML基础篇(标签和属性整--已剔除不被浏览器支持的部分)

    行内元素有:a b span img input select strong 块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p HTML 参考手册- (HTML5 标 ...