Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hel-developer-guide
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenhao
hel-developer-guide
Commits
1eae9ddf
Commit
1eae9ddf
authored
Aug 02, 2017
by
高洋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updates 融租易开发手册.md
Auto commit by GitBook Editor
parent
f96ebcaf
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
164 additions
and
1 deletion
+164
-1
elk.md
后端开发/elk.md
+163
-0
融租易开发手册.md
融租易开发手册.md
+1
-1
No files found.
后端开发/elk.md
0 → 100644
View file @
1eae9ddf
# 日志管理 ELK(ElasticSearch+Logstash+Kibana)
## 简介:
**ElasticSearch:**
一个开源分布式搜索引擎,具有分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等特点。
<p>
**Logstash:**
一个完全开源的工具,可以对你的日志进行搜集,过滤,并将其储存供以后使用。
<p>
**Kibana:**
为Logstash和ElasticSearch提供日志分析的友好Web界面,可以汇总,分析和搜索重要的数据日志。
##下载说明:
由于Logstash的运行依赖于Java环境, 而Logstash 1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,请自行搜索安装
<p>
ELK下载https://www.elastic.co/downloads/
## 使用说明:
### ElasticSearch:
#### 启动服务:
运行bin/elasticsearch.bat文件开启服务。查看127.0.0.1:9200出现如下页面运行成功
<p>
#![](/assets/elasticsearch.png) <p>
#### 基础操作:es支持restful操作。<p>
获取对应文档:
<p>
GET /
[
_index
]
/
[
_type
]
/_search
<p>
上传文档:
<p>
```
javascript
PUT
/
[
_index
]
/
[
_type
]
/
[
_id
}
{
"first_name"
:
"Jane"
,
"last_name"
:
"Smith"
,
"age"
:
32
,
"about"
:
"I like to collect rock albums"
,
"interests"
:
[
"music"
]
}
```
<p>
操作文档:http://es.xiaoleilu.com/030_Data/15_Get.html
#### 面向文档:
Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。
<p>
ELasticsearch使用JSON,作为文档序列化格式。
以下使用JSON文档来表示一个用户对象:
<p>
```
javascript
{
"email"
:
"john@smith.com"
,
"first_name"
:
"John"
,
"last_name"
:
"Smith"
,
"info"
:
{
"bio"
:
"Eco-warrior and defender of the weak"
,
"age"
:
25
,
"interests"
:
[
"dolphins"
,
"whales"
]
},
"join_date"
:
"2014/05/01"
}
```
在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库:
<p>
Relational DB -> Databases -> Tables -> Rows -> Columns
<p>
Elasticsearch -> Indices -> Types -> Documents -> Fields
<p>
Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。
#### elasticsearch 分布式:
Elasticsearch为分布式而生
Elasticsearch致力于隐藏分布式系统的复杂性。以下这些操作都是在底层自动完成的:
<p>
*
将你的文档分区到不同的容器或者分片(shards)中,它们可以存在于一个或多个节点中。
<p>
*
将分片均匀的分配到各个节点,对索引和搜索做负载均衡。
<p>
*
冗余每一个分片,防止硬件故障造成的数据丢失。
<p>
*
将集群中任意一个节点上的请求路由到相应数据所在的节点。
<p>
*
无论是增加节点,还是移除节点,分片都可以做到无缝的扩展和迁移
<p>
#### 集群部署:
伪分布式环境搭建:创建3个es环境,修改其config/elasticsearch.yml配置文件
<p>
1:
<p>
cluster.name: elasticsearch
<p>
node.name: node1
<p>
2:
<p>
cluster.name: elasticsearch
<p>
node.name: node2
<p>
http.port: 9202
<p>
3:
<p>
cluster.name: elasticsearch
<p>
node.name: node3
<p>
http.port: 9203
<p>
es会自动搜索同一网段下的cluster.name(集群名)相同的es做成集群
将indeces(索引)下的分片(默认一个索引5个主分片每个分片一个复制分片)平分到不同es节点(node)下。
#### elasticsearch-head插件安装:
是es集群管理插件。执行如下命令安装插件:
<p>
elasticsearch/bin/plugin install mobz/elasticsearch-head
<p>
打开:http://localhost:9200/_plugin/head/
<p>
下图为以上操作建立的集群。
![](
/assets/es.png
)
<p>
相关文档:http://es.xiaoleilu.com/020_Distributed_Cluster/05_Empty_cluster.html
<p>
### Logstash:
#### 运行:
logstash -e input { stdin { } } output { stdout { codec => rubydebug } }
<p>
输入报文 helloworld 可以在控制台看到对应报文。
<p>
2016-10-20T09:05:53.446Z LAPTOP-RKIO0CO4 hellowrold
<p>
#### 通过配置文件运行:
在bin目录下创建配置文件test.conf:
<p>
input为logstash配置输入流,logstash支持多种input方式包括file redis TCP UDP syslog lumberjack等。
<p>
filter过滤logstash输入流,并可以解析输入流。
<p>
ouput为logstash输出流,支持多种输出方式如elsaticearch file email tcp hdfs等,并可以配置相关参数如在es中配置索引名和type名
<p>
<p>
示例使用file方式获取logstash输入流需将path更改为项目log地址
<p>
```
input {
file{
path => "C:\Users\zjl\.IntelliJIdea2016.2\system\tomcat\Unnamed_hap-parent\logs\hap.log"
start_position =>"beginning"
}
}
filter{
if ([message] =~ "^\s") {
drop {}
}
grok{
match => ["message", " .* %{GREEDYDATA:level} \[%{GREEDYDATA:accountId}\] \[%{GREEDYDATA:requestId}\] %{GREEDYDATA:dao} - %{GREEDYDATA:info}\s"]
}
}
output {
stdout {
}
elasticsearch {
hosts => "localhost:9200"
}
}
```
<p>
若使用tcp为logstash配置输入修改logback.xml文件添加输出方式
<p>
```
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%X{accountId}] [%X{requestId}] %logger - %msg%n</pattern>
</encoder>
<destination>elk-hap:4560</destination></appender>
```
<p>
相关文档:http://kibana.logstash.es/content/logstash/plugins/input/file.html
<p>
在Logstash文件/bin目录下打开终端输入logstsh -f test.conf运行logstash解析日志文件
<p>
作为一个要长期运行的程序。发行包内都带有sysV或者systemd风格的启动程序配置,你只需要直接使用即可,以RPM为例 /etc/init.d/logstash 脚本中,会加载 /etc/init.d/functions 库文件,利用其中的 daemon 函数,将 logstash 进程作为后台程序运行。所以,你只需把自己写好的配置文件,统一放在 /etc/logstash/conf.d 目录下(注意目录下所有配置文件都应该是 .conf 结尾,且不能有其他文本文件存在。因为 logstash agent 启动的时候是读取全文件夹的),然后运行 service logstash start 命令即可。
<p>
![](
/assets/logstash.png
)
<p>
### Kibana:
##### 打开文件bin目录下kibana.bat开启服务 <p> <p>
##### 浏览器打开localhost:5601查看通过logstash解析的日志文件
##### config/kibana.yml文件可进行对kibana相关配置 <p> <p>
![](
/assets/kibana.png
)
![](
/assets/kibanaview.png
)
融租易开发手册.md
View file @
1eae9ddf
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
*
[
3.1 用户安全策略
](
/后端开发/user-security-strategy.md
)
*
[
3.1 用户安全策略
](
/后端开发/user-security-strategy.md
)
*
[
3.2 审计
](
/后端开发/audit.md
)
*
[
3.2 审计
](
/后端开发/audit.md
)
*
[
3.3 锁机制
](
/后端开发/lock.md
)
*
[
3.3 锁机制
](
/后端开发/lock.md
)
*
3.4 日志管理
*
[
3.4 日志管理
](
/后端开发/elk.md
)
*
IV. 前端JavaScript开发
*
IV. 前端JavaScript开发
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment