感谢Master HaKu的分享,博客园的账号忘了,文章里面有原文链接,尊重原创
ELK菜鸟手记 (一) 环境配置+log4j日志记录 - Master HaKu - 博客园

Master HaKu

不积跬步,无以至千里;技术积累从点滴做起。

ELK菜鸟手记 (一) 环境配置+log4j日志记录

1. 背景介绍

在大数据时代,日志记录和管理变得尤为重要。

以往的文件记录日志的形式,既查询起来又不方便,又造成日志在服务器上分散存储,管理起来相当麻烦,

想根据一个关键字查询日志中某个关键信息相当困难。

这个时候,ELK诞生了。

什么是ELK?

简单来说:它是一套完整的日志记录和分析的解决方案平台

2. 技术栈介绍

ELK = Elasticsearch + Logstash + Kibana

2-1) Elasticsearch:

(

Elasticsearch is a distributed open source search engine based on Apache Lucene,

and released under an Apache 2.0 license (which means that it can be downloaded, used, and modi ed free of charge).

It provides horizontal scalability, reliability, and multitenant capability for real-time search.

Elasticsearch features are available through JSON over a RESTful API.

The searching capabilities are backed by a schema-less Apache Lucene Engine,

which allows it to dynamically index data without knowing the structure beforehand.

Elasticsearch is able to achieve fast search responses because it uses indexing to search over the texts. 

)

Elasticsearch是一个分布式的开源的基于Apache Lucene项目的搜索引擎,它发布在Apache 2.0协议下

(这也就意味着它可以被免费地下载,使用并且修改)。

Elasticsearch提供了水平的,可扩展的,可靠的,多用户形式的实时搜索。

Elasticsearch的功能可以通过JSON格式的RESTful API形式访问。

Elasticsearch的搜索能力是得到Apache Lucene引擎的支持,允许给文本数据增加加动态索引。

2-2) Logstash

(

Logstash is a data pipeline that helps collect, parse, and analyze a large variety of structured and unstructured data and events generated across various systems.

It provides plugins to connect to various types of input sources and platforms, and is designed to ef ciently process logs, events,

and unstructured data sources for distribution into a variety of outputs with the use of its output plugins,

namely le, stdout (as output on console running Logstash), or Elasticsearch. 

)

Logstash是一个数据管道,它被用来收集,解析和分析各种结构化的和非结构化的由各种系统产生的数据以及事件。

它提供了插件用来连接到各种输入数据源,可以高效地处理日志,事件以及非结构化的数据,而且可以通过输出插件的形式

把结果输出到各种输出源,比如:标准输出,控制台或者Elasticsearch。

2-3) Kibana

(Kibana is an open source Apache 2.0 licensed data visualization platform that helps in

visualizing any kind of structured and unstructured data stored in Elasticsearch indexes.

Kibana is entirely written in HTML and JavaScript. )

Kibana是一个基于Apache 2.0协议的开源可视化平台,它用来可视化任何结构化的和非结构化的存储在Elasticsearch索引

中的数据。Kibana完全用HTML和Javascript编写。

3. 下载/安装/配置/启动

前面说了很多废话,接下来是每个程序员感兴趣的动手环节了,let’s start!

3-1) 安装Elasticsearch

下载地址:

https://www.elastic.co/downloads/elasticsearch

a) 解压安装包elasticsearch-5.2.2.tar.gz

(由于本人是mac系统)我把它解压到了/usr/local目录下,完整路径如下:

/usr/local/elasticsearch-5.2.2

b) 编辑配置文件

cd config

vi elasticsearch.yml

内容如下:

# ———————————- Cluster ———————————–
#

# Use a descriptive name foryour cluster: # cluster.name: my- application # # ———————————— Node ————————————# # Use a descriptive name forthe node: # node.name: node- 1# # Add custom attributes to the node: # #node.attr.rack: r1 # # ———————————– Paths ————————————# # Path to directory where to store the data (separate multiple locations by comma): # path.data: /tmp/elasticsearch/ data # # Path to log files: # path.logs: /tmp/elasticsearch/ logs # ———————————- Network ———————————–# # Set the bind address to a specific IP (IPv4 or IPv6): # network.host: localhost # # Set a custom port forHTTP: # http.port: 9200

c) 启动Elasticsearch
./bin/elasticsearch

如果没有错误发生,可以进入到下一步的验证环节

d) 验证

可以使用cURL命令:

curl ‘http://localhost:9200/?pretty’

或者

直接用浏览器打开

http://localhost:9200

3-2) 安装Logstash

a) 解压安装包logstash-5.2.2.tar.gz

完整路径如下:

/usr/local/logstash-5.2.2

b) 编辑配置文件

cd config

新建配置文件log4j_es.conf

vi log4j_es.conf

内容如下:

input {log4j {host => "127.0.0.1"port => 4560}
}output {stdout {codec => rubydebug}elasticsearch{hosts => ["localhost:9200"]index => "log4j-%{+YYYY.MM.dd}"document_type => "log4j_type"}
}

c) 启动Logstash

./bin/logstash -f config/log4j-es.conf

3-3) 安装Kibana

a) 解压安装包kibana-5.2.2.tar.gz
完整路径如下:
/usr/local/ kibana-5.2.2

b) 编辑配置文件
cd config
vi kibana.yml
内容如下:

# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601server.host: ”localhost”

# The URL of the Elasticsearch instance to use forall your queries. elasticsearch.url: ” http://localhost:9200 ”# Kibana uses an index inElasticsearch to store saved searches, visualizations and # dashboards. Kibana creates a new index if the index doesn ’ t already exist. kibana.index: “ .kibana ”

c) 启动Kibana

./bin/kibana

d) 验证
打开网址:
http://localhost:5601/

见到如下Logo

4. Log4j记录日志到Logstash

4-1) 新建maven项目

pom中的关键dependency配置如下:

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

4-2) log4j.properties(放在resources文件夹下)

### 设置###
log4j.rootLogger = debug,stdout,D,E,logstash

### 输出信息到控制抬 ### log4j.appender.stdout =org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target =System.out log4j.appender.stdout.layout =org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [ %-5p ] %d{yyyy-MM-dd HH:mm:ss, SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到= /Users/bee/Documents/elk/log4j/debug.log### log4j.appender.D =org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File =/Users/KG/Documents/logs/elk/debug.log log4j.appender.D.Append =true log4j.appender.D.Threshold =DEBUG log4j.appender.D.layout =org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r ] - [%p ]%m%n ### 输出ERROR 级别以上的日志到= /Users/bee/Documents/elk/log4j/error.log ### log4j.appender.E =org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = /Users/KG/Documents/logs/elk/error.log log4j.appender.E.Append =true log4j.appender.E.Threshold =ERROR log4j.appender.E.layout =org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r ] - [%p ]%m%n #输出日志到logstash log4j.appender.logstash= org.apache.log4j.net.SocketAppender log4j.appender.logstash.RemoteHost=127.0.0.1log4j.appender.logstash.port=4560log4j.appender.logstash.ReconnectionDelay=60000log4j.appender.logstash.LocationInfo=true

4-3) Java代码(ElkLog4jTest.java):

package org.genesis.arena.elk;import org.apache.log4j.Logger;/*** Created by KG on 17/3/27.*/
public class ElkLog4jTest {private static final Logger logger = Logger.getLogger(ElkLog4jTest.class);public static void main(String[] args) throws Exception {logger.debug("This is a debug message!");logger.info("This is info message!");logger.warn("This is a warn message!");logger.error("This is error message!");try{System.out.println(5/0);}catch(Exception e){logger.error(e);}}
}

4-4) 运行结果

[DEBUG] 2017-03-29 12:56:00,454 method:org.genesis.arena.elk.ElkLog4jTest.main(ElkLog4jTest.java:11)
This is a debug message!
[INFO ] 2017-03-29 12:56:00,529 method:org.genesis.arena.elk.ElkLog4jTest.main(ElkLog4jTest.java:12)
This is info message!
[WARN ] 2017-03-29 12:56:00,531 method:org.genesis.arena.elk.ElkLog4jTest.main(ElkLog4jTest.java:13)
This is a warn message!
[ERROR] 2017-03-29 12:56:00,533 method:org.genesis.arena.elk.ElkLog4jTest.main(ElkLog4jTest.java:14)
This is error message!
[ERROR] 2017-03-29 12:56:00,538 method:org.genesis.arena.elk.ElkLog4jTest.main(ElkLog4jTest.java:19)
java.lang.ArithmeticException: / by zero

然后会在Logstash控制台看到输出如下图:

5. 连通Kibana

5-1) 打开 http://localhost:5601/

5-2) 创建索引

还记得我们之前在logstash配置文件中配置的索引吗?

log4j-%{+YYYY.MM.dd}

因此,我们应该创建索引为:log4j-*

5-3)验证

从这里可以看到自己刚才在Java代码中记录的日志。

好了,一切大功告成了!!!

是不是很有成就感啊?

【ELK】ELK菜鸟手记 (一) 环境配置+log4j日志记录——转自Master HaKu相关推荐

  1. 使用代码形式配置Log4J日志框架

    2019独角兽企业重金招聘Python工程师标准>>> 一.使用代码形式配置Log4J日志框架 一般情况下,我们都是使用配置文件形式来配置Log4J日志框架,比如使用"lo ...

  2. Hibernate Log4j日志记录

    Hibernate Log4j日志记录 欢迎来到Hibernate Log4j Logging示例.Hibernate 4在旧的hibernate版本中使用JBoss日志而不是slf4j.今天我们将研 ...

  3. Hibernate 使用log4j日志记录

    日志记录使程序员能够将日志详细信息永久写入文件.这是我们以后在开发当中非常重要的一步. Hibernate使用log4j日志记录,我们需要以下几个步骤: 1.导入jar包: (1)这是hibernat ...

  4. log4j日志 linux配置,Log4j 日志详细用法

    简单的说log4j就是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地.日志信息的输出格式 Log4j 除了可以记录程序运行日志信 ...

  5. maven的安装和环境配置的过程记录

    [前置环境确认]第一步确认本机已正确安装jdk,并且已经在环境变量中配置JAVA_HOME,修改了Path.cmd命令行中输入echo %JAVA_HOME%,查看JAVA_HOME是否配置.在CMD ...

  6. 巧为tomcat插件配置log4j日志,解决未报错启动不成功

    前情摘要 源于Maven项目中整合SSM框架后,运行一个根据商品id查询商品信息的Demo来测试是否整合成功. 在pom文件中配置好Tomcat插件,启动tomcat,如果成功,输出信息如下: May ...

  7. QT for Android环境配置犯病过程记录

    软件版本: 纯新手,用来纪念自己犯病过程的一文: 安装和配置过程参考QT配置android环境,简单易懂 QT用的是师兄给的QT5.14.1 JDK也是师兄给的,SDK使用Android Studio ...

  8. Flutter之Android Studio环境配置采坑记录

    Flutter之Android Studio环境配置 IDE和SDK的安装 Device配置 AVD Genymotion 安装 ADB设置 AS中安装Genymotion插件 踩坑记录 IDE和SD ...

  9. log4j日志记录级别是如何工作?

    级别p的级别使用q,在记录日志请求时,如果p>=q启用.这条规则是log4j的核心.它假设级别是有序的.对于标准级别它们关系如下:ALL < DEBUG < INFO < WA ...

最新文章

  1. pytorch nms 放大缩小
  2. 查看mysql数据库历史_查看mysql数据库历史
  3. 123. 买卖股票的最3佳时机 III
  4. Java 9:对Process API的增强
  5. Eclipse安装ADT失败解决办法
  6. 剥开浮躁表面,直指金融科技内心
  7. Hadoop集群启动、初体验
  8. 女性一辈子不结婚,会怎么样?
  9. struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
  10. 在线图片水平/垂直均等切割工具
  11. win7怎么清除卸载Ghost启动项的残留
  12. Linux系统编程——进程替换:exec 函数族
  13. docker登录密码错误_Docker安装运行Mysql 5.7.31容器并修改数据库密码
  14. bzoj 1096: [ZJOI2007]仓库建设(斜率DP)
  15. mysql binlog rotate_mysql binlog日志存储格式
  16. IIS安装前已经安装了.NET Framework,安装后如何启用.NETFramework
  17. DIV+CSS定义及优势
  18. 微信公众平台教程,注册申请、认证、开发、推广营销,教你怎么用微信公众号...
  19. Internet Download Manager(最新版win/mac)最快下载器工具使用教程
  20. UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】

热门文章

  1. 形式语言:含偶数个零和奇数个一的正则表达式
  2. 【RC延迟电路与缓慢泄放电路 】 multisim 14.0仿真 参数计算
  3. 业务系统技术架构的方法论
  4. 百度腾讯QQ等网站注册自动提交表单源码2012最新
  5. 计算机网络体系结构 - 网络安全
  6. JAVA笔记---------字符串基础与操作
  7. discuz当qq绑定超过5个网址时 如何解除绑定qq
  8. oracle minus 是什么意思,oracle minus用法
  9. 苹果选了天猫 天猫成了618
  10. 三大通信运营商天猫电器城开店