ELK日志分析系统(原创)
一、简介
ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
二、工作流程
在需要收集日志的服务器(本文用nginx服务器,地址为192.168.5.148)上部署logstash,用于监控并过滤收集日志,将过滤后的内容按照特定的格式收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
三、ELK帮助手册
ELK官网:https://www.elastic.co/
ELK官网文档:https://www.elastic.co/guide/index.html
ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html
视频教程:http://edu.51cto.com/index.php?do=lession&id=101607
四、安装平台以及软件
运行平台:Ubuntu 14.04 32位系统
软件:Logstash-5.1.2、Elasticsearch-5.1.2、kibana-5.1.2
软件安装命令: 在下载的三个组件,解压后,在各自的目录下的bin目录中,运行各自的执行文件即可。
注意: Logstash的运行方式为:./bin/logstash -f ./脚本配置文件
elasticsearch要在普通用户下运行,在root下运行系统会报错。如果在普通用户下提示运行权限问题,只要设置下可执行权限即可。命令:chown 普通用户名.普通用户名 elasticsearch文件夹名 -R
五、具体流程
1、首先运行nginx,确保nginx服务能够正常运行,如果不能,开启nginx即可 (etc/init.d/nginx start)。输入服务器ip地址,如果出现欢迎界面,即表示nginx服务器正常运行。
2、改变nginx日志保存格式,便于后面Logstash分析、过滤从而以特定的格式输出。
打开/etc/nginx/nginx.conf,在http段中插入如下内容把nginx日志格式保存为特定格式
log_format logstash_json '{"@timestamp":"$time_iso8601",'
'"client_ip":"$remote_addr",'
'"remote_user":"$remote_user",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"status":"$status",'
'"request":"$request",'
'"request_method":"$request_method",'
'"http_referrer":"$http_referer",'
'"body_bytes_sent":"$body_bytes_sent",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"http_user_agent":"$http_user_agent"}';
access_log /var/log/nginx/access.log logstash_json;
3、在logstash 目录下新建一个目录,用来存放logstash执行的脚本。脚本示例如下:
input {
file {
path => ["/var/log/nginx/access.log"]
start_position => "beginning"
type => "nginx"
codec => "json"
}
}
output {
stdout { codec => rubydebug{} }
elasticsearch {
hosts => ["192.168.5.148:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
。
如上脚本可以把nginx日志按照json格式输出,并存储到elasticsearch,然后传给kibana显示分析。
logstash过滤nginx日志按照json格式输出原理:客户端访问nginx服务器,nginx服务器会自动产生访问日志保存到nginx服务器的access.log中,当我们给nginx服务器的日志设置了json格式后,logstash的file{}插件才能够识别nginx日志并按照json格式切割(解析)输出。
4、运行顺序:
nginx——>elasticsearch——>logstash——>kibana
运行成功的标志是elk三个组建均会阻塞。
然后刷新一下192.168.5.148这个地址,也即访问nginx服务器,即可产生数据.
5、kibana使用
在浏览器(用火狐或者google chrome,不要用360浏览器)地址栏输入 服务器地址:5601,即可访问Kibana主页。
如果以上步骤都没问题,kibana就会接受到elasticsearch传给它的数据并显示出来,如下图,如果没有数据产生,那么就会提示”no result”。
接下来,点击左侧”visualize”模块,选择“create new visualization”,选择一个视图显示数据分析图标。以饼图为例。选择“pipe chart”,进入饼图界面,在”buckets”下面选择过滤条件。
其中aggregation,下拉选择“Terms”,field,下拉选择“client_ip”,点击“apply changes”按钮,即可按照过滤规则生成饼状图。
其他分析图表(柱状图、曲线图)都有类似的设置。
6、kibana tile map地图定位功能。
1、所具备的工具:logstash的filter.geoip{}插件、GeoLite2-City.mmdb城市ip数据库。
2、修改第五步中第3点logstash的执行脚本,增加filter.geoip()插件。
示例如下:(相关附件也已同步)
input {
file {
path => ["/var/log/nginx/access.log"]
start_position => "beginning"
type => "nginx"
codec => "json"
}
}
filter {
geoip {
source => “client_ip” ------”client_ip”为日志中的ip地址字段名
database => “GeoLite2-City.mmdb的绝对路径”
target => “geoip”
add_field => [ “[geoip][coordinates]”, “%[geoip][longitude]” ]
add_field => [ “[geoip][coordinates]”,”%[geoip][latitude]” ]
}
mutate [
convert => [ “[geoip][coordinates]”,”float” ]
}
}
output {
stdout { codec => rubydebug{} }
elasticsearch {
hosts => ["192.168.5.148:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
3、由于GeoLite2-City.mmdb只存有外网ip的地址,因此用内网Ip测试geoip无法解析,会造成失败。因此,可以在nginx日志中手动添加外网Ip地址,只有外网ip地址geoip才能解析成功。
4、重新启动kibana,在visualize模块中选择tile map,进入tile map界面,然后Aggregation选择Geohash,Field选择geoip.location,点击Apply changes即可在右边的地图界面,亮点标示ip地址对应的城市。
5、geoip解析日志中的ip地址并定位城市的原理:GeoLite2-City.mmdb是一个大型的ip数据库,内含ip地址及其对应的城市名。geoip插件会根据json解析出来的日志中的ip地址,去GeoLite2-City.mmdb中寻找对应的ip地址,然后把ip地址对应的一系列包括城市名、国家等等信息给解析出来,然后一并发给elasticsearch,最后通过kibana的地图功能进行定位并显示。
这是作者在工作中的实践总结,原创,转载需注明出处。
转载于:https://www.cnblogs.com/dotnetHui/p/9334706.html
ELK日志分析系统(原创)相关推荐
- 十分钟搭建和使用ELK日志分析系统
十分钟搭建和使用ELK日志分析系统 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为" ...
- ELK日志分析系统搭建以及springboot日志发送到ELK中
前言 安装之前服务器必须装了Java环境,我们这里安装的是7.7.0版本,而且7.7.0版本还必须要求jdk11以上.,最好跟我安装的路径保持一致/usr/local/elk,千万不要在root 安装 ...
- ELK日志分析系统 超详细!!理论+实操讲解!!
文章目录 一.ELK日志分析系统简介 1.1日志处理的步骤 1.2 ELK日志分析系统三部分 1.3日志服务器(一般) 二.Elasticsearch介绍 2.1 Elasticsearch概述 2. ...
- 搭建ELK日志分析系统详解
日志分析是运维工程师解决系统故障.发现问题的主要手段.日志包含多种类型,包括程序日志.系统日志以及安全日志等.通过对日志的分析,既可以做到未雨绸缪.预防故障的发生,又可以在故障发生时,寻找蛛丝马迹.快 ...
- ELK 日志分析系统和部署
目录 前言 一.日志分析 1.1 我们需要收集哪些日志 1.2 日志收集后,如何展示(可视化) 1.3 日志收集展示出来后,怎么使用 1.4 我们要怎么收集日志 二.ELK 日志分析系统简介 ...
- ELK日志分析系统及相关
目录 前言 一.ELK概述 1.ELK日志分析系统 2.ELK中日志处理步骤 二.Elasticsearch介绍 1.Elasticsearch的基础核心概念 2.mysql关系型数据库与Elasti ...
- ELK日志分析系统(企业级查看日志系统)
一. ELK日志分析系统简介 ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch.Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询.排序 ...
- 运维必备——ELK日志分析系统
目录 一.ELK日志分析系统概述 (1)传统日志服务器的优点与缺点和为什么要使用ELK日志分析系统 (2)ELK日志分析系统日志的分类 (3)ELK日志分析系统的分类 --Elasticsearch: ...
- 超详细 ELK 日志分析系统
文章目录 一.ELK日志分析系统简介 1:ELK日志分析系统组成 2:日志处理步骤 二:三款软件简介 1:Elasticsearch (1)Elasticsearch的概述 (2)Elasticsea ...
- ELK 日志分析系统的部署
文章目录 一.ELK前言 1.1 需要收集的日志 1.2 日志收集后,如何可视化 1.3 日志收集可视化后,怎么使用 1.4 要怎么收集日志 二.ELK简介 2.1 ElasticSearch介绍 2 ...
最新文章
- win10 WSL windows subsystem for linux update setup wizard ended prematurely
- fprintf,sprintf,sscanf,fscanf
- 《使用Nessus进行渗透测试》- 简介
- 电商大战折射商业伦理缺失形势探讨
- JavaFX UI控件教程(二十七)之File Chooser
- 天池 在线编程 扫雷(BFS)
- 用python怎么下载_如何使用python下载视频
- 四核处理器_2020年高通骁龙处理器排行榜
- Spotfire使用经验-自定义饼图中显示的数据量(Top N分析,排名分析)
- 微信小程序 下拉刷新 上拉触底分页
- 常用编码说明-GB2312
- 搜索自己博客中的文章
- AI全自动原创视频生成器-震撼来袭
- [CSP-S 2022] 策略游戏
- 单片机C语言仿真图,单片机C语言程序设计代码和仿真图.doc
- WOW!这是最大的三极管!
- 陪你一起看草原 在线Flash,在线歌曲
- GSM模块TCP初始化流程
- 音乐ToB赛道的隐形巨头
- 远离国产!windows唯一推荐杀毒软件-Avast
热门文章
- 微信小程序实现长按选中复制效果
- 淘淘商城第20讲——展示后台管理系统首页面
- python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例
- 达梦数据库备份与还原
- java jxl 写 excel_使用JXL读写Excel
- 稳定视觉诱发电位SSVEP
- 计算机丢失grfunction.dll,开机时出现"文件或目录\WINDOWS\System32\LYMANGR.DLL已损坏且无法读取.请运行Chkdsk工具."如何解决?...
- Linux查看硬件信息命令
- 感恩节,感谢你朋友!
- 用js判断是widows还是linux,JS 如何判断浏览器是安卓还是苹果