ELK简介ELKStack即Elasticsearch + Logstash + Kibana。日志监控和分析在保障业务稳定运行时,起到了很重要的作用。比如对nginx日志的监控分析,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录,所以可以通过读取日志文件来分析;redis的list结构正好可以作为队列使用,用来存储logstash传输的日志数据。然后elasticsearch就可以进行分析和查询了。
本文搭建的的是一个分布式的日志收集和分析系统。logstash有agent和indexer两个角色。对于agent角色,放在单独的web机器上面,然后这个agent不断地读取nginx的日志文件,每当它读到新的日志信息以后,就将日志传送到网络上的一台redis队列上。对于队列上的这些未处理的日志,有不同的几台logstash indexer进行接收和分析。分析之后存储到elasticsearch进行搜索分析。再由统一的kibana进行日志web界面的展示。
以上为抄袭!!!
好吧,让我们切入正题:

Java环境安装

首先我们需要一台linux机器,紧哥其实非常不喜欢在window下安装软件,hoho~
当然我们也默认你已经安装了java,建议版本是使用1.8,但是我使用的是1.7,就是这么任性~

colin@colindev:~$ java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

Logstash安装

  1. 下载logstash并解压,推荐使用最新版本
  2. 创建simple.conf文件,并编写测试conf
input { stdin { } }
output {elasticsearch { host => localhost }stdout { codec => rubydebug }
}
colin@colindev:~$ wget https://download.elastic.co/logstash/logstash/logstash-2.3.1.tar.gz
colin@colindev:~$ tar -zvxf logstash-2.3.1.tar.gz
colin@colindev:~$ vim simple.conf
colin@colindev:~$ /home/colin/logstash-2.3.1/bin/logstash -f simple.conf --debug

3.可以看到logstash已经运行,输入hello world会有log打印出来则安装成功

Elasticsearch安装

ElasticSearch默认的对外服务的HTTP端口是9200,节点间交互的TCP端口是9300(这个可以自配置),注意打开tcp端口

  1. 先下载并解压
  2. 安装mobz/elasticsearch-head插件
  3. 启动logstash并测试 elasticsearch 注意:启动elasticsearch的话不能用root账号哈~
colin@colindev:~$  wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.tar.gz
colin@colindev:~$  tar -zxvf elasticsearch-1.7.1.tar.gz
[colin@colindev:bin ]$ ./plugin install mobz/elasticsearch-head
[colin@colindev bin]$ elasticsearch start

启动起来的界面是:

接下来就要安装kibana了

Kibana安装

[root@hadoop-slave ~]# wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
[root@hadoop-slave elk]# tar -zxf kibana-4.1.1-linux-x64.tar.gz
[root@hadoop-slave elk]# mv kibana-4.1.1-linux-x64 /usr/local/elk
[root@hadoop-slave bin]# pwd
/usr/local/elk/kibana/bin
[root@hadoop-slave bin]# ./kibana  &

打开http://localhost:5601/
如果需要远程访问,需要打开iptables的tcp的5601端口。

ELK+logback结合

  1. 需要修改logstash的配置文件
  2. 修改logback配置文件github-> 使用ogstash-logback-encode
input {tcp {host => "192.168.1.167" port => 9250mode => "server"tags => ["tags"]codec => json_lines  //可能需要更新logstash插件}}output {stdout{codec =>rubydebug}elasticsearch {hosts => ["localhost:9200"]  //这块配置需要带端口号flush_size => 1000}
}
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property resource="properties/logback-variables.properties" />     <!-- 得到APP_NAME log_path的值 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 --><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern></encoder></appender><appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>192.168.1.167:9250</destination><!-- encoder is required --><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" /></appender><!--<appender name="async" class="ch.qos.logback.classic.AsyncAppender">--><!--<appender-ref ref="stash" />--><!--</appender>--><root level="info">                    <!-- 设置日志级别 --><appender-ref ref="STDOUT" /><appender-ref ref="stash" /></root>
</configuration>

写一个测试程序:

import org.junit.Test;
import org.slf4j.LoggerFactory;/*** Created by colinsu on 2016/4/14.*/
public class LogstashTest {private static final org.slf4j.Logger LGR = LoggerFactory.getLogger(LogstashTest.class);@Testpublic void test() {LogstashTest obj = new LogstashTest();try{obj.divide();}catch(ArithmeticException ex){LGR.error("大家好111!", ex);}}private void divide(){int i = 10 /0;}
}

使用logstash debug模式

/home/colin/logstash-2.3.1/bin/logstash -f simple.conf --debug

这里可能因为buffer大小的原因不能flush,多执行几次就好了,timestamp会相差8小时,没有什么影响,在kibana会显示正常

使用kibana来查看相应的结果

待改进和学习的地方

  1. 需要加上收集的缓冲组件。如 redis,kafka等
  2. 配置文件可以配置niginx,linux,jvm等日志
  3. 报表可视化熟练

ELK结合logback搭建日志中心相关推荐

  1. elk + kafka 简单搭建日志分析系统

    elk + kafka 简单搭建日志分析系统 文介绍使用ELK(elasticsearch.logstash.kibana) + kafka来搭建一个日志系统. 想象一下淘宝,它可以对不同的用户实现推 ...

  2. ELK+logback搭建日志系统

    最近工作需要,开始研究ES,当前ES的最新版本为5.1.1,版本5.0.1以上jdk为1.8,缓存服务器用的redis 本篇会记录ES5.1.1 + Kibana 5.1.1 + es-head插件在 ...

  3. 利用 ELK 搭建 Docker 容器化应用日志中心

    概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志收集. 本文即将阐述如何利用ELK日志中心来收集容器化 ...

  4. 懒人必备:.NetCore快速搭建ELK分布式日志中心

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaicsearch.Kibana的缩写,可用于从不同的服务中收集日志 ...

  5. ELK分布式日志收集-企业级日志中心

    传统项目中,如果需要在生产环境定位异常的话,我们常常需要在服务器上使用命令的方式查询.而很多情况我们需要用到微服务架构或集群架构,日志被分散在不同的机器上,使得日志的查询变得异常困难.工欲善其事,必先 ...

  6. Spring Boot + ELK搭建日志监控框架

    Spring Boot + ELK搭建日志监控框架 准备ELK三件套 ​ Elasticsearch+Logstash+Kibana ​ 下载地址:https://www.elastic.co/cn/ ...

  7. Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台

    Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在 ...

  8. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群 笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装 ...

  9. RabbitMQ + ELK 搭建日志平台

    CentOS下使用ELK套件搭建日志分析和监控平台 2015年01月30日 17:32:29 i_chips 阅读数:24252 https://blog.csdn.net/i_chips/artic ...

最新文章

  1. 奥运开幕了 您给开幕式和火炬点火仪式打几分?
  2. 集合转数组的toArray()和toArray(T[] a)方法
  3. c语言整数反转用while函数,7.整数反转(LeetCode)——C语言
  4. keil流水灯c语言程序两个一起亮,我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了,最后停在第一个灯处不动...
  5. 什么鬼,面试官竟然让我用Redis实现一个消息队列!!?
  6. php之数据类型自动转换
  7. cmmi3级和5级之间的区别是什么?
  8. U盘用USBOOT做引导盘后,导致无法格式化U盘
  9. 嘉善 机器人比赛_第十一届省青少年机器人大赛嘉善摆擂
  10. 分解质因数_java
  11. 卖猪还钱 法院拍卖被执行人300头生猪 40.5万成交
  12. 思科 计算机网络 第一章测试考试答案
  13. odoo14调用akshare库报错:Fatal process out of memory: Failed to reserve memory for new V8 Isolate
  14. HTTP Error 503 错误解决办法
  15. 图像修复:专栏博文推荐查阅顺序
  16. 光流传感器 定位精度_光流传感器
  17. Java返回报文有单双引号_Spring MVC 响应结果有反斜杠转义字符+双引号
  18. IDEA(2018.2)的下载、安装及破解
  19. DataBinding详解
  20. 滴滴php面试题,面经:三次滴滴面试通过,一些真实细节分享给大家

热门文章

  1. PYQT5登录界面跳转主界面方法
  2. [转]JAVA泛型通配符T,E,K,V区别,T以及ClassT,Class?的区别
  3. 如何使用基于组件的设计方法
  4. 新的JavaScript库邀请程序员使用Canvas进行创意编程
  5. 进击的Python【第一章】:Python背景初探与Python基础(一)
  6. LVS负载均衡之ipvsadm部署安装(安装篇)
  7. 在树莓派中开发 opencv 大型程序
  8. [Linux] set dev label(设置分区卷标)
  9. spring 声明式事务
  10. 从前端界面开发谈微信小程序体验