文档章节

Logstash日志采集监控方案

fym_82
 fym_82
发布于 2016/04/14 10:10
字数 1417
阅读 275
收藏 0
点赞 1
评论 0

Logstash日志采集监控方案

概述

基于Logstash搭建日志实时采集监控系统

系统要求

优化系统内核配置

  1. ulimit

  2. logstash各组件间有版本依赖,请注意使用的版本匹配

  3. 配置好邮件服务sendmail

系统组成

Elasticsearch + Logstash + KibanaELK):

  1. Elasticsearch:日志汇总存储并创建索引提供查询服务

  2. Logstash:日志采集、过滤与监控,logstash本身提供多种input-output策略,可灵活选择

  3. Kibana:提供统一的日志查询web界面,同时可以进行分类图表统计

 

 

架构策略

在应用服务端配置logstash-agent负责采集原始日志并汇总到MQMQ选用kafka进行日志消息缓存与分发,后端部署logstash-indexer,订阅kafka topic内日志消息并写入ES文件存储,同时判断日志消息内是否包含错误或异常等信息,通过sendMail邮件服务发送报警邮件到相关邮件组,后端ES部署双节点集群做分布式搜索服务,提供http服务给kibana供用户通过web界面查询实时日志。

如图:

1 JDK安装

2 ES

注:ES最新版本要求不能以root方式启动,需创建对应用户并赋予es相关文件路径的控制权限

2.1单节点模式

  1. 下载es tar

官网:https://www.elastic.co
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.0.tar.gz

 

 

  1. 解压并配置

tar elasticsearch-1.7.0.tar.gz

修改${es_home}/ config/ elasticsearch.yml

注:红色为基础配置项,需针对实际场景修改,更多详细配置请参阅官网

#配置es集群命名

cluster.name:

#当前节点名

node.name

#数据存储目录,默认${es_home}/data

path.data

#日志目录,默认${es_home}/logs

path.logs

#临时文件存储目录,默认${es_home}/work

path.work

#对外服务http端口,默认9200

http.port

#节点间交互端口,默认9300

transport.tcp.port

 

  1. 使用
    启动:bin/elasticsearch

后端启动:bin/elasticsearch d
PID
启动:bin/elasticsearch -d -p pid

  1. Web请求,验证服务是否成功
    http://esIp:9200/
    返回:

  2. Web查询数据接口:
    http://esIp:9200/_search?pretty

  3.  

  4.  

 

 

 

 

2.2集群模式

在其他节点按上述单节点模式安装,修改配置文件${es_home}/ config/ elasticsearch.yml:

保证:

  1. 各节点cluster.name必须一致node.name必须不同

  2. 各节点在相同网段内

启动各节点后,es会自动发现同网段内的节点组成集群

 

2.3管理插件

  1. head:查看集群几乎所有信息,还能进行简单的搜索查询,观察自动恢复的情况等

安装:./bin/plugin -install mobz/elasticsearch-head
查看:http://ip:9200/_plugin/head/

  1. Bigdesk:集群监控插件,通过该插件可以查看整个集群的资源消耗情况,cpu、内存、http链接等
    安装:./bin/plugin -install lukas-vlcek/bigdesk
    查看:http://ip:9200/_plugin/bigdesk/#nodes

  2.  

3 Logstash

下载:

https://download.elastic.co/logstash/logstash/logstash-all-plugins-2.1.0.tar.gz

Logstash-input-plugins使用文档:

https://www.elastic.co/guide/en/logstash/current/input-plugins.html

Logstash-output-plugins使用文档:

https://www.elastic.co/guide/en/logstash/current/output-plugins.html

 

解压logstash-all-plugins-2.1.0.tar.gz,配置启动文件,进行不同模式处理。

3.1   logstash-agent

功能:监控、过滤日志,也可称为shipper

配置日志采集,采集原始日志发送到kafka集群

logstash-agent.conf

input {

  #file-input

  file {

path => "${log_path}"

#log type

type => “${log_type}

  }

 

}

output {

  kafka {

                   #kafka brokers

        bootstrap_servers => "${borker_list}"

                   #send to kafka topic

        topic_id => "${topic_name}"

        codec => plain {

           format => "%{message}"

        }

      }

  #stdout { codec => rubydebug }

}

 

注:

  1. 1.       output使用kafka时,codec默认采用json格式发送,如显式配置了codecplain时不会传输“@version typetags”等input内的默认字段和add_field添加的字段,可通过format自定义传输格式:如:

codec json时传输:

{"message":"dfsd","@version":"1","@timestamp":"2015-12-07T07:18:01.124Z","type":"in","IP":"%{[ip]}","host":"testqiuli.novalocal","tags":["_grokparsefailure"]}

codecplain时传输:

2015-12-07T07:22:21.526Z testqiuli.novalocal tt

  1. 2.        

  2. 2 logstash-indexer

功能:收集日志并将日志交给ElasticSearch 做搜索

配置统一订阅kafka topic中日志,收集汇总到es

logstash-index.conf

input {

  #kafka-input

  kafka {

zk_connect => "${zk_nodes}"

type => “${log_type}

#consumer thread num,must be less then the partitions of kafka topic

consumer_threads => 2

#topic_id => "${topic_name}"

#kafka topics to consume,more topics such as :topic1,topic2

    white_list => "${topic_names}"

  }

 

}

output {

  elasticsearch { hosts => ["${es_IP}:${es_port}"] }

 

}

 

 

3.3 报警filter

配置filter,对日志中包含“error”或“exception”等关键字的异常错误进行过滤,并通过邮件报警到指定的邮件组

注:报警的output必须在output模块最后添加,否则匹配上的日志信息不会由其他output收集了

配置logstash-warn.conf

input {

  #kafka-input

  kafka {

zk_connect => "${zk_nodes}"

type => “${log_type}

#topic_id => "${topic_name}"

#kafka topics to consume,more topics such as :topic1,topic2

    white_list => "${topic_names}"

  }

}

 

#warning filter

filter {

  grok {

    match => { "message" => [ "error", "exception" ] }

    add_tag => ["tag_error"]

  }

}

output {

  elasticsearch { hosts => ["${es_IP}:${es_port}"] }

  #warning output,ps:make sure at the end of output

  if "tag_error" in [tags] {

  exec {

    command => "echo '%{@timestamp} %{source}: %{message}' | mail -s ${email_title} ${email_to}”

  }

 }

}

3.4          多个input-output

同一个conf文件中可配置多个inputoutput,完成不同功能

 

logstash-all.conf

input {

  #file-input

  file {

path => "${log_path}"

type => “${log_type}

  }

  #kafka-input

  kafka {

    zk_connect => "${zk_nodes}"

#topic_id => "${topic_name}"

#kafka topics to consume,more topics such as :topic1,topic2

    white_list => "${topic_names}"

  }

 

}

filter {

  grok {

    match => { "message" => [ "error", "exception" ] }

    add_tag => ["tag_error"]

  }

}

 

output {

  elasticsearch { hosts => ["${es_IP}:${es_port}"] }

  kafka {

                   #kafka brokers

        bootstrap_servers => "${borker_list}"

                   #send to kafka topic

        topic_id => "${topic_name}"

        codec => plain {

           format => "%{message}"

        }

      }

  #stdout { codec => rubydebug }

  #warning output,ps:make sure at the end of output

  if "tag_error" in [tags] {

  exec {

    command => "echo '%{@timestamp} %{source}: %{message}' | mail -s ${email_title} ${email_to}"

  }

 }

}

 

 

3.3          启动logstash

配置好conf文件后,使用-f指定该文件启动:

./bin/logstash -f XXX.conf

后端启动:nohup ./bin/logstash -f XXX.conf &

 

3.5 注意事项

  1. logstash使用kafka作为input时,由于logstash-plugins-inputs-kafka插件连接zk时需对本地hostname进行解析,因此需对本机配置host IP映射

  2. logstash使用kafka作为output时,注意logstash创建的topic是否成功,多个logstash-index节点时,配置kafka-outputgroup_id需一致(默认logstash

  3. 3.        报警的output必须在output模块最后添加,否则匹配上的日志信息不会由其他output收集了

4 Kibana

下载:https://download.elastic.co/kibana/kibana/kibana-4.1.3-linux-x64.tar.gz

配置:config/kibana.yml 

#配置kibana连接的es

elasticsearch.url

 

访问:http://kibanaIp:5601

 

Discover:

© 著作权归作者所有

共有 人打赏支持
fym_82
粉丝 0
博文 2
码字总数 5245
作品 0
东城
建设DevOps统一运维监控平台,先从日志监控说起

前言 随着Devops、云计算、微服务、容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器、虚拟机、物理机不一而足。 面对动辄几百...

stars永恒 ⋅ 04/26 ⋅ 0

Linux的企业-ELK日志分析

一、简介 1、核心组成 ELK由Elasticsearch、Logstash和Kibana三部分组件组成; Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,...

一百个小排 ⋅ 2017/11/07 ⋅ 0

ELK日志处理之Filebeat工作原理

一、Filebeat简介 Beats是Elastic Stack技术栈中轻量级的日志采集器,Beats家族包括以下五个成员: Filebeat:轻量级的日志采集器,可用于收集文件数据。 Metricbeat:5.0版本之前名为Topbeat...

napoay ⋅ 2017/04/18 ⋅ 0

从零开始搭建ELK+GPE监控预警系统

作者介绍 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果。 8个平台 100+台服务器 10+个集群分组 微服务600+ 用户...

张志朋 ⋅ 2017/11/20 ⋅ 0

轻量型数据采集器--Beats

Beats 是一款轻量级的数据采集器,采用 Go 语言编写。它集合了多种单一用途数据采集器。这些采集器安装后可用作轻量型代理,从成百上千或成千上万台机器向 Logstash 或 Elasticsearch 发送数...

匿名 ⋅ 2017/11/15 ⋅ 1

ELK+Beats实现Windows服务器系统日志监控

ELK在运维监控领域使用非常广泛,日志采集通常依靠Logstash,但是通常来讲Logstash架构比较重载,一个安装包由几百MB,相比之下Elastic还提供另一种更轻量的采集工具Beats。Beats 平台集合了...

半夜菊花茶 ⋅ 2017/11/11 ⋅ 0

在CentOS7下实现Elastic Stack 数据分析系统的部署

本文介绍关于关于搭建elasticsearch+logstash(beats)+kibana实现搭建可视化的日志分析系统。这几款软件也都是免费开源的,其官方站点为:https://www.elastic.co/cn/products 一、关于这几...

LUksl ⋅ 2017/12/27 ⋅ 0

使用EKL(Elasticsearch、Kibana、Logstash)进行服务器日志的汇聚与监控

一、前言 本文主要介绍了使用工具Elasticsearch、Kibana和Logstash(配合Logstash Forwarder)对服务器的各种日志文件,如nginx的log、系统的各种log、mysql的slow log等进行汇聚并存储,并进...

swingcoder ⋅ 2015/11/02 ⋅ 0

每周送书 | 基于微服务的日志中心设计、实现与关键配置

引言: 日志向来都是运维以及开发人员最关心的问题。运维人员可以及时的通过相关日志信息发现系统隐患、系统故障并及时安排人员处理解决问题。开发人员解决问题离不开日志信息的协助定位。没...

技术小能手 ⋅ 06/14 ⋅ 0

从ELK到EFK演进

背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)...

6776jkjk ⋅ 2017/11/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部