一、简介

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日志分析系统(原创)相关推荐

  1. 十分钟搭建和使用ELK日志分析系统

    十分钟搭建和使用ELK日志分析系统 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为" ...

  2. ELK日志分析系统搭建以及springboot日志发送到ELK中

    前言 安装之前服务器必须装了Java环境,我们这里安装的是7.7.0版本,而且7.7.0版本还必须要求jdk11以上.,最好跟我安装的路径保持一致/usr/local/elk,千万不要在root 安装 ...

  3. ELK日志分析系统 超详细!!理论+实操讲解!!

    文章目录 一.ELK日志分析系统简介 1.1日志处理的步骤 1.2 ELK日志分析系统三部分 1.3日志服务器(一般) 二.Elasticsearch介绍 2.1 Elasticsearch概述 2. ...

  4. 搭建ELK日志分析系统详解

    日志分析是运维工程师解决系统故障.发现问题的主要手段.日志包含多种类型,包括程序日志.系统日志以及安全日志等.通过对日志的分析,既可以做到未雨绸缪.预防故障的发生,又可以在故障发生时,寻找蛛丝马迹.快 ...

  5. ELK 日志分析系统和部署

    目录 前言 一.日志分析 1.1  我们需要收集哪些日志 1.2  日志收集后,如何展示(可视化) 1.3   日志收集展示出来后,怎么使用 1.4  我们要怎么收集日志 二.ELK 日志分析系统简介 ...

  6. ELK日志分析系统及相关

    目录 前言 一.ELK概述 1.ELK日志分析系统 2.ELK中日志处理步骤 二.Elasticsearch介绍 1.Elasticsearch的基础核心概念 2.mysql关系型数据库与Elasti ...

  7. ELK日志分析系统(企业级查看日志系统)

    一. ELK日志分析系统简介 ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch.Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询.排序 ...

  8. 运维必备——ELK日志分析系统

    目录 一.ELK日志分析系统概述 (1)传统日志服务器的优点与缺点和为什么要使用ELK日志分析系统 (2)ELK日志分析系统日志的分类 (3)ELK日志分析系统的分类 --Elasticsearch: ...

  9. 超详细 ELK 日志分析系统

    文章目录 一.ELK日志分析系统简介 1:ELK日志分析系统组成 2:日志处理步骤 二:三款软件简介 1:Elasticsearch (1)Elasticsearch的概述 (2)Elasticsea ...

  10. ELK 日志分析系统的部署

    文章目录 一.ELK前言 1.1 需要收集的日志 1.2 日志收集后,如何可视化 1.3 日志收集可视化后,怎么使用 1.4 要怎么收集日志 二.ELK简介 2.1 ElasticSearch介绍 2 ...

最新文章

  1. win10 WSL windows subsystem for linux update setup wizard ended prematurely
  2. fprintf,sprintf,sscanf,fscanf
  3. 《使用Nessus进行渗透测试》- 简介
  4. 电商大战折射商业伦理缺失形势探讨
  5. JavaFX UI控件教程(二十七)之File Chooser
  6. 天池 在线编程 扫雷(BFS)
  7. 用python怎么下载_如何使用python下载视频
  8. 四核处理器_2020年高通骁龙处理器排行榜
  9. Spotfire使用经验-自定义饼图中显示的数据量(Top N分析,排名分析)
  10. 微信小程序 下拉刷新 上拉触底分页
  11. 常用编码说明-GB2312
  12. 搜索自己博客中的文章
  13. AI全自动原创视频生成器-震撼来袭
  14. [CSP-S 2022] 策略游戏
  15. 单片机C语言仿真图,单片机C语言程序设计代码和仿真图.doc
  16. WOW!这是最大的三极管!
  17. 陪你一起看草原 在线Flash,在线歌曲
  18. GSM模块TCP初始化流程
  19. 音乐ToB赛道的隐形巨头
  20. 远离国产!windows唯一推荐杀毒软件-Avast

热门文章

  1. 微信小程序实现长按选中复制效果
  2. 淘淘商城第20讲——展示后台管理系统首页面
  3. python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例
  4. 达梦数据库备份与还原
  5. java jxl 写 excel_使用JXL读写Excel
  6. 稳定视觉诱发电位SSVEP
  7. 计算机丢失grfunction.dll,开机时出现"文件或目录\WINDOWS\System32\LYMANGR.DLL已损坏且无法读取.请运行Chkdsk工具."如何解决?...
  8. Linux查看硬件信息命令
  9. 感恩节,感谢你朋友!
  10. 用js判断是widows还是linux,JS 如何判断浏览器是安卓还是苹果