ELK结合logback搭建日志中心
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安装
- 下载logstash并解压,推荐使用最新版本
- 创建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端口
- 先下载并解压
- 安装mobz/elasticsearch-head插件
- 启动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结合
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;}
}
/home/colin/logstash-2.3.1/bin/logstash -f simple.conf --debug
这里可能因为buffer大小的原因不能flush,多执行几次就好了,timestamp会相差8小时,没有什么影响,在kibana会显示正常
使用kibana来查看相应的结果
待改进和学习的地方
ELK结合logback搭建日志中心相关推荐
- elk + kafka 简单搭建日志分析系统
elk + kafka 简单搭建日志分析系统 文介绍使用ELK(elasticsearch.logstash.kibana) + kafka来搭建一个日志系统. 想象一下淘宝,它可以对不同的用户实现推 ...
- ELK+logback搭建日志系统
最近工作需要,开始研究ES,当前ES的最新版本为5.1.1,版本5.0.1以上jdk为1.8,缓存服务器用的redis 本篇会记录ES5.1.1 + Kibana 5.1.1 + es-head插件在 ...
- 利用 ELK 搭建 Docker 容器化应用日志中心
概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志收集. 本文即将阐述如何利用ELK日志中心来收集容器化 ...
- 懒人必备:.NetCore快速搭建ELK分布式日志中心
该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaicsearch.Kibana的缩写,可用于从不同的服务中收集日志 ...
- ELK分布式日志收集-企业级日志中心
传统项目中,如果需要在生产环境定位异常的话,我们常常需要在服务器上使用命令的方式查询.而很多情况我们需要用到微服务架构或集群架构,日志被分散在不同的机器上,使得日志的查询变得异常困难.工欲善其事,必先 ...
- Spring Boot + ELK搭建日志监控框架
Spring Boot + ELK搭建日志监控框架 准备ELK三件套 Elasticsearch+Logstash+Kibana 下载地址:https://www.elastic.co/cn/ ...
- Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台
Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群 笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装 ...
- RabbitMQ + ELK 搭建日志平台
CentOS下使用ELK套件搭建日志分析和监控平台 2015年01月30日 17:32:29 i_chips 阅读数:24252 https://blog.csdn.net/i_chips/artic ...
最新文章
- 奥运开幕了 您给开幕式和火炬点火仪式打几分?
- 集合转数组的toArray()和toArray(T[] a)方法
- c语言整数反转用while函数,7.整数反转(LeetCode)——C语言
- keil流水灯c语言程序两个一起亮,我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了,最后停在第一个灯处不动...
- 什么鬼,面试官竟然让我用Redis实现一个消息队列!!?
- php之数据类型自动转换
- cmmi3级和5级之间的区别是什么?
- U盘用USBOOT做引导盘后,导致无法格式化U盘
- 嘉善 机器人比赛_第十一届省青少年机器人大赛嘉善摆擂
- 分解质因数_java
- 卖猪还钱 法院拍卖被执行人300头生猪 40.5万成交
- 思科 计算机网络 第一章测试考试答案
- odoo14调用akshare库报错:Fatal process out of memory: Failed to reserve memory for new V8 Isolate
- HTTP Error 503 错误解决办法
- 图像修复:专栏博文推荐查阅顺序
- 光流传感器 定位精度_光流传感器
- Java返回报文有单双引号_Spring MVC 响应结果有反斜杠转义字符+双引号
- IDEA(2018.2)的下载、安装及破解
- DataBinding详解
- 滴滴php面试题,面经:三次滴滴面试通过,一些真实细节分享给大家