ELK简单安装测试
1 介绍组件
Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读)。
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
ElasticSearch它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch 中的 Index 是一组具有相似特征的文档集合,类似于关系数据库模型中的数据库实例,Index 中可以指定 Type 区分不同的文档,类似于数据库实例中的关系表,Document 是存储的基本单位,都是 JSON 格式,类似于关系表中行级对象。我们处理后的 JSON 文档格式的日志都要在 Elasticsearch 中做索引,相应的 Logstash 有 Elasticsearch output 插件,对于用户是透明的。
Hadoop 生态圈为大规模数据集的处理提供多种分析功能,但实时搜索一直是 Hadoop 的软肋。如今,Elasticsearch for Apache Hadoop(ES-Hadoop)弥补了这一缺陷,为用户整合了 Hadoop 的大数据分析能力以及 Elasticsearch 的实时搜索能力。
Logstash 是一种功能强大的信息采集工具,类似于 Hadoop 生态圈里的 Flume。通常在其配置文件规定 Logstash 如何处理各种类型的事件流,一般包含 input、filter、output 三个部分。Logstash 为各个部分提供相应的插件,因而有 input、filter、output 三类插件完成各种处理和转换;另外 codec 类的插件可以放在 input 和 output 部分通过简单编码来简化处理过程。
Kibana是ElasticSearch的用户界面。
在实际应用场景下,为了满足大数据实时检索的场景,利用Filebeat去监控日志文件,将Kafka作为Filebeat的输出端,Kafka实时接收到Filebeat后以Logstash作为输出端输出,到Logstash的数据也许还不是我们想要的格式化或者特定业务的数据,这时可以通过Logstash的一些过了插件对数据进行过滤最后达到想要的数据格式以ElasticSearch作为输出端输出,数据到ElasticSearch就可以进行丰富的分布式检索了。
2 下载安装包
下载 elasticsearch、logstash、kibana、filebeat 的压缩包,并将四个压缩包上传到 /data/elk 目录下
官方文档:
Filebeat:
https://www.elastic.co/cn/products/beats/filebeat
Logstash:
https://www.elastic.co/cn/products/logstash
Kibana:
https://www.elastic.co/cn/products/kibana
Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch
elasticsearch中文社区:
https://elasticsearch.cn/
3 安装ELK
3.1 安装jdk1.8
略
3.2 安装ElasticSearch
3.2.1 安装配置es
说明:ElasticSearch的运行不能用root执行,自己用useradd命令新建一个用户如下所示:
添加普通用户elk并设置密码
useradd elk
passwd elk 然后根据提示输入密码即可
修改文件所有者
chown -R elk:elk /data/elk
解压
tar -zxvf elasticsearch-6.7.0.tar.gz
修改 es 的配置文件
cd /data/elk/elasticsearch-6.7.0/config
vim elasticsearch.yml
修改方法参考如下:
cluster.name: my-application
node.name: node-1
node.attr.rack: r1
path.data: /data/elk/elasticsearch-6.7.0/data
path.logs: /data/elk/elasticsearch-6.7.0/logs
network.host: localhost
http.port: 9200
3.2.2 启动
su elk
./bin/elasticsearch -d
启动时间有点慢,耐心等待10-20s或者更长,查看9200,9300端口是否开启
netstat -tnlp|grep 9[23]00
tcp6 0 0 localhost:9200 :::* LISTEN 30155/java
tcp6 0 0 localhost:9300 :::* LISTEN 30155/java
访问地址:http://localhost:9200
停止服务:
ps -ef |grep elasticsearch
kill PID
3.3 安装filebeat
3.3.1 安装配置
filebeat:部署在具体的业务机器上,通过定时监控的方式获取增量的日志,并转发到logstash、elasticsearch、kafka等等。
解压
tar –zxvf filebeat-6.7.0-linux-x86_64.tar.gz
cd filebeat-6.7.0-linux-x86_64
修改kibana 的配置文件
vim filebeat.yml
===================Filebeat prospectors ===========
filebeat.prospectors:
# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /data/elk/logfile
#- c:\programdata\elasticsearch\logs\*
#输出到logstash
#-------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
3.3.2 启动
./filebeat -e -c filebeat.yml -d "publish"
3.4 安装logstash
3.4.1 安装配置
解压
tar -zxvf logstash-6.7.0.tar.gz
cd logstash-6.7.0
配置
在logstash文件夹的下bin目录创建配置文件logstash.conf ,内容如下:
input:对应输入的配置,其中path是监控的文**件路劲, codec编码个格式
output:elasticsearch : { hosts => "localhost:9200" }
对应输出到elasticsearch,hosts是elasticsearch安装地址
input {
beats {
host => "localhost"
port => 5044
codec => json
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
index="test_index"
}
}
3.4.2 启动
测试你的配置文件 是否正确( 解析配置文件并报告任何错误。)
./logstash -f logstash.conf --config.test_and_exit
Sending Logstash logs to /data/elk/logstash-6.7.0/logs which is now configured via log4j2.properties
[2019-03-28T17:55:34,114][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/data/elk/logstash-6.7.0/data/queue"}
[2019-03-28T17:55:34,169][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/data/elk/logstash-6.7.0/data/dead_letter_queue"}
[2019-03-28T17:55:34,856][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
Configuration OK
[2019-03-28T17:55:43,327][INFO ][logstash.runner ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
启动命令(启用自动配置重新加载,这样就不必每次修改配置文件时都停止并重新启动Logstash )
./logstash -f logstash.conf --config.reload.automatic
停止服务
ps aux | grep logstash
kill -9 pid
3.5 安装kibana
3.5.1 安装配置
解压
tar –zxvf kibana-6.7.0-linux-x86_64.tar.gz
cd kibana-6.7.0-linux-x86_64/config
配置
vim kibana.yml
server.port: 5601
server.host: "localhost"
#elasticsearch.username: "elastic"
#elasticsearch.password: "changeme"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"
3.5.2 启动
./bin/kibana
访问地址:
http://localhost:5601
netstat -anltp|grep 5601查找对应端口
kill -9 pid
4 测试
4.1 监测指定文件,Kibana展示
4.1.1 Logstash监控文件
我们通过echo往这文件/data/elk/test.log追加内容,来测试整个日志收集系统是否可行
vim test2.conf
input {
file {
type =>"syslog"
path => ["/data/elk/test.log" ]
}
syslog {
type =>"syslog"
port =>"5544"
}
}
output {
stdout { codec=> rubydebug }
elasticsearch {hosts => "http:// localhost:9200"}
}
启动
./logstash -f test2.conf --config.reload.automatic
向监控文件中写入数据
echo "{ "firstName": "1", "lastName":"McLaughlin", "email": "aaaa" }" >> test.log
Logstash打印接收到的数据:
{
"message" => "{ firstName: 1, lastName:McLaughlin, email: aaaa }",
"@timestamp" => 2019-03-29T02:39:35.229Z,
"@version" => "1",
"host" => "node223",
"path" => "/data/elk/test.log"
}
4.1.2 es 查看接收数据
查看es所有index
curl -X GET 'http://localhost:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana_task_manager ZYN7zZl3QLuB1d-EE_ysHA 1 0 2 0 12.5kb 12.5kb
yellow open logstash-2019.03.29 rfkkxW7rQDKnl40_Ekaf7g 5 1 2 0 10.8kb 10.8kb
yellow open test-index hFBQF-jZSkqajPRYzegfwg 5 1 0 0 1.2kb 1.2kb
green open .kibana_1 sEUUnVMxQ0amHbQGcOedOQ 1 0 4 1 19.8kb 19.8kb
查看单个index数据
curl 'localhost:9200/logstash-2019.03.29/_search?pretty=true'
{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [
{
"_index" : "logstash-2019.03.29",
"_type" : "doc",
"_id" : "W85Rx2kBAxlZ_OvPIlZf",
"_score" : 1.0,
"_source" : {
"message" : "{ firstName: 1, lastName:McLaughlin, email: aaaa }",
"@timestamp" : "2019-03-29T02:39:35.229Z",
"@version" : "1",
"host" : "node223",
"path" : "/data/elk/test.log"
}
}
]
}
}
4.1.3 用ES连接到Kibana
在你开始用Kibana之前,你需要告诉Kibana你想探索哪个Elasticsearch索引。第一次访问Kibana是,系统会提示你定义一个索引模式以匹配一个或多个索引的名字。
1、访问Kibana UI。例如,localhost:56011 或者 http://YOURDOMAIN.com:5601
2、指定一个索引模式来匹配一个或多个你的Elasticsearch索引。当你指定了你的索引模式以后,任何匹配到的索引都将被展示出来。
(画外音:*匹配0个或多个字符; 指定索引默认是为了匹配索引,确切的说是匹配索引名字)
3、点击“Next Step”以选择你想要用来执行基于时间比较的包含timestamp字段的索引。如果你的索引没有基于时间的数据,那么选择“I don’t want to use the Time Filter”选项。
4、点击“Create index pattern”按钮来添加索引模式。第一个索引模式自动配置为默认的索引默认,以后当你有多个索引模式的时候,你就可以选择将哪一个设为默认。(提示:Management > Index Patterns)
现在,Kibana已经连接到你的Elasticsearch数据。Kibana展示了一个只读的字段列表,这些字段是匹配到的这个索引配置的字段。
4.1.4 Kibana展示
http://localhost:5601
4.2 监控Spring Boot服务日志
要求日志格式为json格式
4.2.1 json日志格式配置
在Spring Boot工程resources目录下配置logback.xml文件,旨在将log4j日志按json格式输出到指定目录,logback.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径
<property name="LOG_HOME" value="E:/demo/home" />
-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<!--<property name="LOG_PATTERN" value="[ %d{yyyy-MM-dd HH:mm:ss.SSS}] [UUID:%X{requestId}] [%level]|[${HOSTNAME}] [%thread]|[%logger{36}] | %msg|%n " />-->
<property name="TIME_PATTERN" value="yyyy-MM-dd'T'HH:mm:ss.SSS+08:00" />
<property name="LOG_PATTERN" value='{"event":"log","timestamp":"%d{${TIME_PATTERN}}","level":"%level","serviceName":"${springAppName:-}","pid": "${PID:-}","host":"${HOSTNAME}","class": "%logger{40}","thread":"%thread","message":"%msg"}%n ' />
<!-- Console 输出设置 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/newsinfo-dataservice.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logs/newsinfo-dataservice.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--log4jdbc -->
<logger name="com.sohu" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</logger>
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
输出日志示例如下:
{"event":"log","timestamp":"2019-04-09T19:47:07.908Z","level":"INFO","serviceName":"springAppName_IS_UNDEFINED","pid": "7196","host":"node1","class": "o.s.b.web.servlet.FilterRegistrationBean","thread":"localhost-startStop-1","message":"Mapping filter: 'MyFilter' to urls: [/getUser, /hello]"}
4.2.2 DomeOS启动Spring Boot服务
启动服务的同时,配置日志收集到kafka,然后调用ELK读取kafka日志存入ES,进行日志的全文检索和实时告警分析。
创建新版本时,如上配置下日志收集模块,日志就自动通过Flume接入Kafka了。
路径:/code/logs/newsinfo-dataservice.log
自动收集 :自动将日志收集到 Kafka
Kafka Topic:newsinfo_appdata_service_log
ELK简单安装测试的更多相关文章
- ELK简单安装
ELK日志分析平台 一.ELK介绍 ELK是三个开源软件的缩写,分别为:Elasticsearch . Logstash以及Kibana,都是开源软件,新增一个beats,(轻量级日志处理工具Agen ...
- 【elasticsearch】(2)centos7 超简单安装elasticsearch 的监控、测试的集群工具elasticsearch head
elasticsearch-head是elasticsearch(下面称ES)比较普遍使用的可监控.测试等功能的集群管理工具,是由H5编写的单独的网页程序.使用方法网上很多,这里教大家一个超简单安装h ...
- Resharper简单安装及代码覆盖率的测试
Resharper简单安装及代码覆盖率的测试 测试环境:VS 2015 专业版 一.下载Resharper 官方链接:https://www.jetbrains.com/resharper/ 点击下载 ...
- apache benchmark 的简单安装与测试
1. 下载apache benchmark Copy From https://blog.csdn.net/fyqaccpt96/article/details/43272001 yum instal ...
- 如何在本地安装测试ECSHOP 转载
如何在本地安装测试ECSHOP 如何在本地(自己的电脑)上先安装ECShop 一.创建PHP环境 1.下载AppServ 因为ECShop在线网上商店系统是用PHP语言开发的,所以,在本地架设网店之前 ...
- Redis简介与简单安装
Redis简介与简单安装 一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类 ...
- Ubuntu Docker 简单安装 GitLab
相关博文: Ubuntu 简单安装 Docker Ubuntu 简单安装和配置 GitLab 服务器版本 Ubuntu 16.04 LTS. 1. 安装和配置 安装命令: sudo docker ru ...
- Centos 7.3 编译 & 安装 & 测试 facebook faiss
许多 AI 系统训练完毕,正式上线时的基本操作往往可以抽象为:在高维向量空间中,给定一个向量,寻找与之最相近的 k 个向量.当向量数目异常巨大时,如何快速地执行这一基本操作,便成为 AI 系统在工程应 ...
- ELK 6安装配置 nginx日志收集 kabana汉化
#ELK 6安装配置 nginx日志收集 kabana汉化 #环境 centos 7.4 ,ELK 6 ,单节点 #服务端 Logstash 收集,过滤 Elasticsearch 存储,索引日志 K ...
随机推荐
- Angular7.1.4+Typescript3.1框架学习(一)
起因:学习ionic4之前先学习下angular+ts 以win10为开发平台:当前最新版本为angular7;根据官网资料做如下总结: 1. angular安装 前提:Node.js 的 8.x 或 ...
- vbs 去掉字符串中的空格
今天在写自动化脚本时,需要把字符串中的空格替换成其他特殊字符,但字符间的空格个数又不确定,经过搜索,成功解决. 解决重点就是把每个空格字符串搜索出来,然后进行替换,主要用到space函数. strSt ...
- 相似的RGB颜色——算法面试刷题3(for google),考察二分
在本题中,每个大写字母代表从“0”到“f”的一些十六进制数字. 红绿蓝三元色#AABBCC可以简写为#ABC. 例如,#15c是颜色#1155cc的简写. 现在,假设两种颜色#ABCDEF和#UVWX ...
- 常用算法的python实现
1.乘法表 #! -*- coding:utf-8 -*- for i in range(1,10): for j in range(1,i+1): print('%d*%d=%d\t' % (i, ...
- js中浅拷贝和深拷贝以及深拷贝的实现
前言:2019年的第一篇分享... 一.什么是基本类型值和引用类型值?ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型.基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构 ...
- oracle 字符串 正则表达式 拆分,排序,合并
需求,表数据如:要求圈中的数据,必须根据线芯有序排列. 思路: 1.首先根据分号分隔元素.oracle 很蛋疼,没有提供字符串分隔函数,网上倒是多觉得有点麻烦,耐着性子继续网上找了下,还真让我找到一篇 ...
- JS变量的提升详解
此次说明的是var与function的变量提升 那么先看一段代码 <script type="text/javascript"> console.log(test); ...
- COM/DCOM简述
这些组件对象可以互相通讯与交互,而与它们的语言.分布及原始平台无关.COM规程包括一套标准API.一个标准的接口集以及COM用于支持分布式计算的网络协议.而DCOM模型则是一套用于分布式环境中的COM ...
- generator mybatis逆向工程
mybatis逆向工程:根据数据库中的表在项目中生成对应的 实体类,dao接口与mapper.xml映射文件 在eclipse中,以插件的形式的存在,把设置好的配置文件,直接通过eclipse中的插件 ...
- 作为新手在学习SSM+Easyui过程中遇到一系列问题
对于初学SSM来说,如果不熟悉SSM中SpringMVC对数据处理,会造成很大的困扰, SSM中对前台页面放在WEB-INF下,对于读取外部信息,例如导入easyui的js文件.以及不能直接进行跳转. ...