ELK日志分析方案
针对公司项目微服务化,随着项目及服务器的不断增多,决定采用ELK(Elasticsearch+Logstash+Kibana)日志分析平台进行微服务日志分析。
1.ELK整体方案
1.1 ELK架构图
1.2 ELK工作流程
1.在微服务服务器上部署Logstash,作为Shipper的角色,对微服务日志文件数据进行数据采集,将采集到的数据输出到Redis消息队列。
2.在另外一台服务器上部署Logstash,作为Indexer的角色,从Redis消息队列中读取数据(可以对数据进行处理),输出到Elasticsearch-Master主节点。
3.Elasticsearch-Master主节点内部与副节点同步数据。(Elasticsearch集群建议3个服务以上奇数)
4.Kibana部署一台服务器内,读取Elasticsearch集群数据,展示Web查询页面,提供数据展示。
2.消息队列选型
2.1 Redis
在我这个最终方案中,选择了使用Redis作为消息队列进行缓冲,降低Elasticsearch压力,起到削峰作用,主要原因还是由于公司考虑成本问题,日志收集也是只针对我们单个项目组来使用,所以选择了公司现在就已经有的Redis集群进行复用。
2.2 Kafka
最初方案中,在消息队列上选择的是Kafka,毕竟Kafka天生就是做为消息队列的,具体二者的毕竟在这里我就不多说了,百度上一大堆。
3.安装
这里就不在这里写出来了,提供三个地址仅供参考:
Linux安装Logstash
Linux安装Kibana
Linux安装Elasticsearch
4.Logstash配置
4.1 log2redis
从日志文件读取到redis
#从日志文件读取数据
#file{}
#type 日志类型
#path 日志位置
# 可以直接读取文件(a.log)
# 可以所有后缀为log的日志(*.log)
# 读取文件夹下所有文件(路径)
#start_position 文件读取开始位置 (beginning)
#sincedb_path 从什么位置读取(设置为/dev/null自动从开始位置读取)
input {
file {
type => "log"
path => ["/root/logs/info.log"]
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
#根据时间戳分隔日志
#grok 区分日志中得字段
filter {
multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => previous
}
#定义数据的格式
grok {
match => { "message" => "%{DATA:datetime} - %{DATA:logLevel} - %{DATA:serviceName} - %{DATA:ip} - %{DATA:pid} - %{DATA:thread} - %{DATA-msg}"}
}
}
#输出数据到Redis
#host Redis主机地址
#port Redis端口
#db Redis数据库编号
#data_type Redis数据类型
#key Redis的key
#password Redis密码
output {
redis {
host => "ip"
port => "6379"
db => "6"
data_type => "list"
password => "password"
key => "test_log"
}
}
4.2 redis2es
从redis读取到es
#从redis内读取数据
#host Redis主机ip
#port Redis端口
#data_type Redis数据类型
#batch_count
#password Redis密码
#key Redis读取Key
input {
redis {
host => "ip"
port => "6379"
db => "6"
data_type => "list"
password => "password"
key => "test_log"
}
}
#数据的输出我们指向了es集群
#hosts Elasticsearch主机地址
#index Elasticsearch索引名称
output {
elasticsearch {
hosts => "ip:9200"
index => "logs-%{+YYYY.MM.dd}"
}
}
5 其他
其他剩下的就是Es集群和Kibana了,这两个没什么特别值得注意的地方,上网随便搜,一大堆文章。
以上仅仅代表本人项目使用方案,不一定完美适合所有场景,仅供参考。
ELK日志分析方案的更多相关文章
- elk日志分析与发掘深入分析
elk日志分析与挖掘深入分析 1 为什么要做日志采集? 2 挖财自己的日志采集和分析体系应该怎么建? 2.1 日志的采集 2.2 日志的汇总与过滤 2.3 日志的存储 2.4 日志的分析与查询 3 需 ...
- ELK日志分析系统-Logstack
ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...
- ELK日志分析 学习笔记
(贴一篇之前工作期间整理的elk学习笔记) ELK官网 https://www.elastic.co ELK日志分析系统 学习笔记 概念:ELK = elasticsearch + logstas ...
- ELK 日志分析体系
ELK 日志分析体系 ELK 是指 Elasticsearch.Logstash.Kibana三个开源软件的组合. logstash 负责日志的收集,处 ...
- ELK 日志分析实例
ELK 日志分析实例一.ELK-web日志分析二.ELK-MySQL 慢查询日志分析三.ELK-SSH登陆日志分析四.ELK-vsftpd 日志分析 一.ELK-web日志分析 通过logstash ...
- 浅谈ELK日志分析平台
作者:珂珂链接:https://zhuanlan.zhihu.com/p/22104361来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 小编的话 “技术干货”系列文章 ...
- ELK日志分析系统简单部署
1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...
- Rsyslog+ELK日志分析系统
转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...
- 十分钟搭建和使用ELK日志分析系统
前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为“十分钟搭建和使用ELK日志分析系统”听 ...
随机推荐
- linux学习笔记:第二单元 UNIX和Linux操作系统概述
第二单元 UNIX和Linux操作系统概述 UNIX是什么 UNIX操作系统的特点 UNIX 与Linux的关系 GNU项目与自由软件 GUN计划 自由软件意味着什么 Linux简介 Linux是什么 ...
- 使用7zip批量压缩文件夹到不同压缩包
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" ...
- gitlab的完全卸载
一:先停止gitlab gitlab-ctl stop 二:卸载gitlab部分(之前我是rpm安装的,这里rpm卸载) rpm -e gitlab-ce 三:发现系统进程还有一个gitlab的进 ...
- Centos7上配置网络和本地yum方法
配置网络yum源 前提:1.这个系统能上网 2.vim /etc/resolv.conf nameserver 8.8.8.8 nameserver 114.114.114.114 操作如下: 1.m ...
- Visual Studio 2017 error: Unable to start program, An operation is not legal in the current state
For me, the solution (workaround) is to turn off JavaScript debugging on Chrome, which I believe is ...
- 目标检测之选择性搜索-Selective Search
一.滑动窗口检测器 一种用于目标检测的暴力方法就是从左到右,从上到下滑动窗口,利用分类识别目标.为了在不同观察距离处检测不同的目标类型,我们可以使用不同大小和宽高比的窗口 得到窗口内的图片送入分类器, ...
- 从0开始简单使用git进行项目开发【SourceTree+Coding.net】
一.什么是git? 含义:Git 是 Linux 发明者 Linus 开发的一款新时代的版本控制系统,相比于原来的svn系统更加简单和实用 作用: 熟悉编程的知道,我们在软件开发中源代码其实是最重要的 ...
- PaperNotes Instance-Level Salient Object Segmentation
title: PaperNotes Instance-Level Salient Object Segmentation comments: true date: 2017-12-20 13:53:1 ...
- 在th中显示图片
从DataTable中获取值: foreach (DataRow dr in ((DataTable)ViewBag.bookInfoList).Rows) { <tr> <th c ...
- 【APUE | 03】文件I/O
博客链接: inux中的文件描述符与打开文件之间的关系 #include <stdio.h> #include <unistd.h> #include <sys/stat ...