# ELK日志搜集平台解决方案
---
---
---
1. 硬件设备
2. 系统环境
3. elasticsearch 集群部署
4. kibana 部署
5. logstash 部署
6. filebeat 部署
7. 平台边界
8. 资料搜集

## 硬件设备
```
1. cpu: Intel(R) Pentium(R) CPU G3220 @ 3.00GHz 双核
2. memory: 8G
```
## 系统环境
```
1. centos 7
2. java8
```
### 系统环境准备(elasticsearch对系统资源要求)
1. 修改进程所需要内存区域
elasticsearch 5以上版本需要至少262144

```
sysctl -w vm.max_map_count=262144
```
2. 修改指定用户打开文件限制(elasticsearch对系统资源要求)

```
sudo vim /etc/security/limits.conf
redhat hard nofile 65536
redhat soft nofile 65536

- redhat 用户名
- soft 指的是当前系统生效的设置值
- hard 表明系统中所能设定的最大值
- soft 的限制不能比har 限制高
- nofile 打开文件数目
```

## elasticsearch集群部署

### 所需机器

```
node95: root 192.168.100.95 123456 (默认先启动为master节点)
node96: root 192.168.100.96 123456
node97: root 192.168.100.97 123456

```
### 安装包下载
1. 地址:<https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz>
2. 使用压缩包安装启动

### 修改配置文件(elasticsearch.yml)
1. cluster.name ---> 指定集群名字,集群中所有节点集群名字必须相同。
2. node.name ---> 节点名字
3. network.host ---> 绑定的ip地址,该ip地址必须是本机器存在ip地址。
4. http.port ---> HTTP协议端口
5. transport.tcp.port 节点间交互的tcp端口
6. discovery.zen.ping.unicast.hosts ---> 用于发现其他节点
7. discovery.zen.minimum_master_nodes ---> 用于最小master节点数 计算方法:节点总数/2+1
8. bootstrap.memory_lock ---> 是否锁定内存(boolean)
9. path.logs ---> 日志位置
10. path.data ---> 数据位置
11. 其它配置 ---> <http://www.cnblogs.com/hanyouchun/p/5163183.html>

### 本次部署配置
```
cluster.name: juxinli-test
node.name: node95
network.host: 192.168.100.95
discovery.zen.ping.unicast.hosts: ["192.168.100.95:9300","192.168.100.96:9300","192.168.100.97:9300"]
discovery.zen.minimum_master_nodes: 2
```
### jvm虚拟机设置(jvm.options)
```
-Xms2g ---> default
-Xmx2g ---> default
```
### 启动命令
```
1. ./bin/elasticsearch
2. ./bin/elasticsearch -d 后台启动
3. 不能用root用户启动
```
### 查询API
#### 节点信息查询

##### path:[_nodes] 主要用于验证节点是否已经启动开来

文档地址: <https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html>

测试地址: <http://192.168.100.95:9200/_nodes>
#### 其它见API Document
<https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html>
## kibana 部署
### 下载地址
<https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz>
### 文件配置(kibana.yml)

```
1. server.port ---> 端口
2. server.hos ---> 地址
3. elasticsearch.url ---> elasticsearch 地址
```
### 启动
```
./bin/kibana
```
## logstash 部署
### 下载地址
<https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz>
### 配置文件(logstash.conf)
输入,输出,过滤详细情况见文档:
<https://www.elastic.co/guide/en/logstash/current/configuration.html>
### 启动
```
./bin/logstash -f ./config/logstash.conf
```
## filebeat部署
### 下载地址
<https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.2.2-linux-x86_64.tar.gz>
### 配置文件(filebeat.yml)
```
- input_type: log
paths:
- ./root/CrawLog
output.logstash:
hosts: ["192.168.100.96:5044"]
```
### 启动

```
sudo ./filebeat -e -c filebeat.yml
```
## 平台边界
### 日志输入规范
```
1. 输出文件路径: /root/CrawLog
2. 文件名: ${机构ID_订单ID_任务ID}_Log.%d{yyyy-MM-dd-HH}.log
3. 日志格式: %date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n
```
### logstash 输入,过滤,输出 规范
```
input {
beats {
port => 5044
}
}

filter {
grok {
match => {
"source" => "/var/log/juxinli/(?<institutionId>[a-zA-Z0-9]*)_(?<indentId>[a-zA-Z0-9]*)_(?<taskId>[a-zA-Z0-9]*)"
}
}
}

output {
elasticsearch {
hosts => ["192.168.100.95:9200","192.168.100.96:9200","192.168.100.97:9200"]
manage_template => false
index => "%{taskId}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

说明:
1. 输入HTTP端口 5044
2. 通过任务ID创建索引
3. 从路径中提取任务ID,机构ID,订单ID加入属性方便查询。
4. 过滤通过正则

```

### 查询层规范
```
1. 可以很直观通过kibana查询
2. 查询接口可以通过阅读elasticsearch的官方文档
3. 查询接口也可以通过分析kibana查询的http请求
```
## 资料搜集

1. 配置索引模版 - <http://blog.csdn.net/asia_kobe/article/details/51192848>
2. grok 在线正则地址 - <http://grokdebug.herokuapp.com/

ELK整体方案的更多相关文章

  1. 权限模块_整体方案说明_设计实体&映射实体_实现初始化权限数据的功能

    权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个 ...

  2. NET 的 ELK 监控方案

    NET 的 ELK 监控方案 https://www.jianshu.com/p/3c26695cfc38 背景就不多说了,谁家没有个几个十系统在跑啊.如何监控这几十个系统的运行状况,对于非运营人员来 ...

  3. ELK学习笔记之F5 DNS可视化让DNS运维更安全更高效-F5 ELK可视化方案系列(3)

    0x00 概述 此文力求比较详细的解释DNS可视化所能带来的场景意义,无论是运维.还是DNS安全.建议仔细看完下图之后的大篇文字段落,希望能引发您的一些思考. 在“F5利用Elastic stack( ...

  4. 应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案

    SSIO的更新 在SSIO上增加了UDP通讯方式,可以到Github上下载源代码.在原来的项目中,远端的设备与中心站的数据交互并没有使用过UDP方式.这种短连接的通讯链路,不容易维护,主要体现在:(1 ...

  5. 【Vegas原创】VirtualBox扩容、分割的整体方案

    背景:在低压i7上跑vmware,卡顿无极限,决定转战virtual Box. 但是VirtualBox最讨厌的一点,就是vdi文件无法分割,平时习惯备份的我,百度网盘最大也就20G的上传.咋整? v ...

  6. ELK日志方案--使用Filebeat收集日志并输出到Kafka

    1,Filebeat简介 Filebeat是一个使用Go语言实现的轻量型日志采集器.在微服务体系中他与微服务部署在一起收集微服务产生的日志并推送到ELK. 在我们的架构设计中Kafka负责微服务和EL ...

  7. Spring Boot动态权限变更实现的整体方案

    1.前言 ​ 在Web项目中,权限管理即权限访问控制为网站访问安全提供了保障,并且很多项目使用了Session作为缓存,结合AOP技术进行token认证和权限控制.权限控制流程大致如下图所示: ​ 现 ...

  8. EEPlat PaaS 整体方案及技术原理

    EEPlat PaaS平台提供了基于元数据驱动的以配置为主的高速开发平台,同一时候提供了完整的多租户实现,各租户拥有自己的独立应用和数据库,租户间实现了应用和数据的全然隔离. EEPlat PaaS平 ...

  9. ELK日志分析方案

    针对公司项目微服务化,随着项目及服务器的不断增多,决定采用ELK(Elasticsearch+Logstash+Kibana)日志分析平台进行微服务日志分析. 1.ELK整体方案 1.1 ELK架构图 ...

随机推荐

  1. shell脚本,符号

    在shell中常用的特殊符号罗列如下: # ;   ;; . , / \\ 'string'| !   $   ${}   $? $$   $* \"string\"* **   ...

  2. 转:微信开发之使用java获取签名signature(贴源码,附工程)

    微信开发之使用java获取签名signature(贴源码,附工程) 标签: 微信signature获取签名 2015-12-29 22:15 6954人阅读 评论(3) 收藏 举报  分类: 微信开发 ...

  3. Mybatis实战之TypeHandler高级进阶

    上篇文章分享了在项目实战中自定义Mybatis的TypeHandler来处理枚举类型.文章结尾也指出了美中不足之处,那就是每次都需要指定我们自定义的枚举TypeHandler. 随着项目枚举类型的增多 ...

  4. 解析jQuery中extend方法--源码解析以及递归的过程《二》

    源码解析 在解析代码之前,首先要了解extend函数要解决什么问题,以及传入不同的参数,会达到怎样的效果.extend函数内部处理传入的不同参数,返回处理后的对象. extend函数用来扩展对象,增加 ...

  5. JAVA设计模式:装饰模式

    前面我们学习了代理模式: 代理模式主要使用了java的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你 ...

  6. jQuery源码学习:Sizzle

    本文所有讨论均基于jQuery版本3.1.1,官网http://jquery.com/. 一 简介 Sizzle是用javascript实现的CSS selector engine,官网见https: ...

  7. [Linux] PHP程序员玩转Linux系列-备份还原MySQL

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是g ...

  8. Ant 警告:sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除

    如果你用Ant编译项目,而且在项目中用了SUN的专用API,你会得到警告信息,然后Ant会报告编译失败: 这当然是不合理的,javac只是警告而已,ant凭什么就直接报失败呢? 其实最好的解决办法是避 ...

  9. mysql view视图的简单使用....

    为什么使用视图 1.查询性能提高. 2.安全 3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大.那么可以使用虚拟表的形式达到少修改的效果 4.复杂的查询需求.可以进行问题分解,然后将创建多 ...

  10. Keepalived + HAProxy 搭建【第一篇】HAProxy 的安装与配置

    第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 haproxy-1.7.2.tar.gz 第二步:安装 # tar zxvf haproxy ...