ELK 日志管理系统,初次尝试记录
简介:
ELK 是一套开源的日志管理平台,主要包括三个组件,可以用于日志的收集、分析、存储和展示工作。
ELK 成员:Elasticsearch 、Logstash 、Kibana( K4 )
ELK 平台特性:
1、处理方式灵活,Elasticsearch 采用实时全文索引,不需要像 storm 一样预先编程才能使用
2、配置简单、易上手,Elasticsearch 全部采用 Json 接口;Logstash 是 Ruby DSL 设计,都是业界最通用的配置语法设计
3、检索性能高效,虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应
4、集群线性扩展,Elasticsearch 、Logstash 集群都可以线性扩展
5、前端操作简单、界面漂亮,只需点击鼠标就可以完成搜索、聚合功能,生成炫酷的仪表盘
ELK 各成员工作职责:
1、Logstash 是一个开源的日志收集管理工具,支持各种日志类型的接收、处理、转发
2、Elasticsearch 是一个分布式、接近实时的搜索引擎,支持时间索引、全文索引,可以看作是一个文本数据库
3、Kibana 负责将 Elasticsearch 中的数据,按需求展示信息
ELK 扩展成员:
Redis : 一般情况下被用作 NoSQL 数据库,而这里是作为消息队列存在的,意思是:当客户端将消息写入队列后,服务端会把消息取走,所以不必担心会把机器内存占满
Nginx : 一般情况下被用作 Web 服务器或 Web 缓存、反向代理、负载均衡器,呃,这里也是用作将请求反向代理到 Kibana 的监听端口( 虽然 Kibana 也可以直接对外提供服务,但是考虑到性能、安全跟别的问题还是这样比较好 )
软件下载地址:https://www.elastic.co/downloads
Elasticsearch : https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.tar.gz
Logstash : https://download.elastic.co/logstash/logstash/logstash-1.5.2.tar.gz
Kibana : https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
## 这里使用的源码包,你也可以在这里下载对应的 RPM 包
环境描述:
192.168.214.20 服务端
192.168.214.30 客户端
## 操作系统:CentOS 6.6 x86_64 安装方式:minimal
一、客户端操作( 安装、配置 Logstash )
1、安装 Logstash
shell > yum -y install java ## 也可以下载源码的 jdk 包来安装,推荐这种简单暴力的方式shell > cd /usr/local/srcshell > wget https://download.elastic.co/logstash/logstash/logstash-1.5.2.tar.gz shell > tar zxf logstash-1.5.2.tar.gzshell > mv logstash-1.5.2 ../logstashshell > /usr/local/logstash/bin/logstash -e 'input{stdin{}} output{stdout{}}' Hello World 2015-07-14T11:36:28.287Z localhost.localdomain Hello World
## -e 参数可以直接从命令行获取信息,后面花括号中的意思为:从标准输入接收数据,输出到标准输出
## 当输入 Hello World 时,输出下面的信息:时间、主机名、内容
## 按 Ctrl+c 停止
shell > /usr/local/logstash/bin/logstash -e 'input{stdin{}} output{stdout{codec=>rubydebug}}' Hello World
## 与上次不同的是,添加了 codec 参数,改变了输出格式,可以在配置文件中定义 input 、codec 、filter 、output
{"message" => "Hello World","@version" => "1","@timestamp" => "2015-07-14T11:55:55.235Z","host" => "localhost.localdomain" }
## 这是输出信息
2、配置 Logstash
shell > vim /usr/local/logstash/logstash.conf# Logstash.confinput {file {path => '/tmp/access.log'start_position => 'beginning'} }output {redis {host => '192.168.214.20'port => '6379'data_type => "list"key => "logstash-list"} }
## logstash.conf 中至少要有一个 input 跟 output ,否则默认使用 stdin 跟 stdout
二、服务端操作( Redis 、Elasticsearch 、Logstash 、Kibana )
1、安装、配置、启动 Redis
shell > cd /usr/local/srcshell > wget http://download.redis.io/releases/redis-3.0.2.tar.gz shell > tar zxf redis-3.0.2.tar.gzshell > cd redis-3.0.2 ; make ; make installshell > mkdir /usr/local/redisshell > cp /usr/local/src/redis-3.0.2/redis.conf /usr/local/redis/shell > sed -i '/daemonize/s/no/yes/' /usr/local/redis/redis.confshell > sed -i 's#dir ./#dir /usr/local/redis#' /usr/local/redis/redis.confshell > redis-server /usr/local/redis/redis.confshell > redis-cli ping PONG
## 至此,证明 Redis 启动正常( 想进一步了解 Redis 的小伙伴可以参考官方文档,http://blog.chinaunix.net/uid/30272825/cid-211045-list-1.html 这里也有!)
shell > iptables -I INPUT -p tcp --dport 6379 -j ACCEPTshell > service iptables save
## 要开放 TCP 6379 端口,不然客户端数据写不进来
2、测试一
## 客户端启动 Logstash ,然后服务端查看 Redis 中有没有数据
shell > /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash.conf & ( 客户端 )shell > redis-cli 127.0.0.1:6379> keys * 1) "logstash-list" 127.0.0.1:6379> LRANGE logstash-list 0 -11) "{\"message\":\"12.12.12.12 error\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:34:02.779Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"2) "{\"message\":\" [02/Mar/2015:00:42:20 +0800] \\\"POST /include/dialog/select_soft_post.php HTTP/1.1\\\" 404 233\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.366Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"3) "{\"message\":\"149.129.145.215 - - [02/Mar/2015:01:16:56 +0800] \\\"GET /tmUnblock.cgi HTTP/1.1\\\" 400 226\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.375Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"4) "{\"message\":\"210.63.99.212 - - [02/Mar/2015:02:49:24 +0800] \\\"HEAD / HTTP/1.0\\\" 403 -\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.380Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"5) "{\"message\":\"222.186.128.50 - - [02/Mar/2015:03:07:36 +0800] \\\"GET http://www.baidu.com/ HTTP/1.1\\\" 403 202\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.381Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"6) "{\"message\":\"222.186.128.55 - - [02/Mar/2015:06:53:21 +0800] \\\"GET http://www.baidu.com/ HTTP/1.1\\\" 403 202\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.381Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"7) "{\"message\":\"222.186.128.53 - - [02/Mar/2015:07:10:43 +0800] \\\"GET http://www.baidu.com/ HTTP/1.1\\\" 403 202\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.382Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"8) "{\"message\":\"120.132.77.252 - - [02/Mar/2015:10:54:32 +0800] \\\"GET http://www.ly.com/ HTTP/1.1\\\" 403 202\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.383Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"9) "{\"message\":\"123.59.33.27 - - [02/Mar/2015:11:15:36 +0800] \\\"GET http://www.ly.com/ HTTP/1.1\\\" 403 202\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.386Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}" 10) "{\"message\":\"1.161.59.46 - - [02/Mar/2015:14:19:19 +0800] \\\"CONNECT mx2.mail2000.com.tw:25 HTTP/1.0\\\" 405 225\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.387Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}" 11) "{\"message\":\"59.108.122.184 - - [29/Apr/2015:14:33:19 +0800] \\\"GET http://www.example.com/ HTTP/1.1\\\" 403 202\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.387Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}" 12) "{\"message\":\"\",\"@version\":\"1\",\"@timestamp\":\"2015-07-14T17:37:04.388Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\"}"
## 很明显获取到了数据,这说明:客户端保存数据到服务端的 Redis 环节没有问题
3、安装、配置、启动 Elasticsearch
shell > cd /usr/local/srcshell > wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.tar.gz shell > mv elasticsearch-1.6.0 /usr/local/elasticsearchshell > vim /usr/local/elasticsearch/config/elasticsearch.ymlcluster.name: my_es node.name: "Master"
## cluster.name 集群名称,局域网内只要这个名称相同,那么就可以自动组成一个集群
## nod.name 节点名称
## 这些都是可以不用修改的,采用默认参数即可
shell > vim /usr/local/elasticsearch/bin/elasticsearch.in.shif [ "x$ES_MIN_MEM" = "x" ]; thenES_MIN_MEM=64m fi if [ "x$ES_MAX_MEM" = "x" ]; thenES_MAX_MEM=128m fi
## 这里面需要注意一下,根据实际情况修改 Elasticsearch 可以使用的最大、小内存
shell > /usr/local/elasticsearch/bin/elasticsearch -d
## -d 后台启动,关闭命令:curl -X POST 127.0.0.1:9200/_shutdown
## 默认 HTTP 监听端口是 9200 ,可以通过 web 访问、也可以使用 curl 工具等
shell > curl -X GET 127.0.0.1:9200 {"status" : 200,"name" : "master","cluster_name" : "my_es","version" : {"number" : "1.6.0","build_hash" : "cdd3ac4dde4f69524ec0a14de3828cb95bbb86d0","build_timestamp" : "2015-06-09T13:36:34Z","build_snapshot" : false,"lucene_version" : "4.10.4"},"tagline" : "You Know, for Search" }
## 一些输出的状态信息,状态码、节点名、集群名、版本信息等等
shell > curl -X GET 127.0.0.1:9200/_cat/nodes?v host ip heap.percent ram.percent load node.role master name localhost.localdomain 127.0.0.1 25 92 2.07 d * master
## 搜索节点信息
4、安装、配置、启动 Logstash
## 安装跟客户端一样即可( 参考上面部分 )
shell > vim /usr/local/logstash/logstash.conf# Logstash.confinput {redis {host => '127.0.0.1'port => '6379'data_type => 'list'key => 'logstash-list'} }output {elasticsearch {host => '127.0.0.1'port => '9200'protocol => 'http'} }
## 服务端配置 Logstash 从本机的 Redis 取数据,存放到本机的 Elasticsearch
shell > /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash.conf &
5、测试二
shell > curl -X GET 127.0.0.1:9200/_cat/indices?v health status index pri rep docs.count docs.deleted store.size pri.store.size yellow open logstash-2015.07.14 5 1 1 0 4.1kb 4.1kb
## 可以看到已经有索引,名为 logstash-2015.07.14
shell > curl -X GET 127.0.0.1:9200/logstash-2015.07.14
## 可以这样简单查询一下具体数据
6、Kibana 展示阶段( K4 )
shell > cd /usr/local/srcshell > wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz shell > tar zxf kibana-4.1.1-linux-x64.tar.gzshell > mv kibana-4.1.1-linux-x64 /usr/local/kibanashell > /usr/local/kibana > /usr/local/kibana/kibana.log &
## 好了,这样就算是启动成功了
## 默认监听 5601 端口,可以直接访问 http://192.168.214.20:5601
## 这部分内容其实挺多的,要想玩好这个,得单独去研究 Logstash 、Elasticsearch 、Kibana 这三样东西,先这样吧!( 感觉好难哦,到现在连个皮毛都没学会,丢人 )
## 参考文档:http://kibana.logstash.es/content/index.html
## https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
转载于:https://www.cnblogs.com/wangxiaoqiangs/p/5798515.html
ELK 日志管理系统,初次尝试记录相关推荐
- ELK日志管理系统的搭建
ELK日志管理系统的搭建 环境准备 Linux安装Elasticsearch 使用的 Elasticsearch的版本是7.6.2.Elasticsearch7.x要求 Linux内核必须是4+版本以 ...
- ELK 日志管理系统,再次尝试记录
简介: 第二次尝试 ELK 记录... 工作流程: 1.客户端的 Logstash 将日志信息采集到之后传输给 Redis 做消息队列 2.然后服务端的 Logstash 将日志从 Redis 中取出 ...
- CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
介绍The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源,任何 ...
- 超详细部署ELK日志分析系统!每一步骤都有记录!ELK的详细使用!
目录 一.ELK简介 二.Elasticsearch简介 三.Logstash简介 四.Kibana简介 五.ELK案例部署 5.1 案例环境 5.2 部署elasticsearch 5.3 部署Ap ...
- ELK——企业级日志管理系统
目录 1.ELK介绍 2.为什么要使用 ELK 3.完整日志系统的基本特征 4.ELK工作原理 5.部署ELK 5.1 安装elasticsearch 5.2 安装可视化插件 5.3 安装logsta ...
- syslog 日志管理系统
了解syslog 1.Syslog协议 系统日志(Syslog)协议是在一个IP网络中转发系统日志信息的标准,它是在美国加州大学伯克利软件分布研究中心(BSD)的TCP/IP系统实施中开发的,目前 ...
- 超详细 ELK 日志分析系统
文章目录 一.ELK日志分析系统简介 1:ELK日志分析系统组成 2:日志处理步骤 二:三款软件简介 1:Elasticsearch (1)Elasticsearch的概述 (2)Elasticsea ...
- Apollo+ES源码改造,构建民生银行的ELK日志平台配置管理中心
作者 | 中国民生银行大数据基础平台运维组团队 编辑 | 张婵 随着 IT 业务系统的迅速发展,中国民生银行需要考虑实现一套完整并适用于民生银行的日志文件智能分析与处理的解决方案.本文详细介绍了中国民 ...
- 如何快速搭建一个简易的ELK日志分析系统
一.ELK简介 ELK就是一款非常优秀的.开源的.用于搭建实时日志分析平台的组件.ELK是Elasticsearch.Logstash和Kiabana这3款开源框架首字母的缩写.通过这三个组件,构 ...
- ELK日志中心集群,看完工资+1k
目录 一.ELK日志分析集群 1.组件介绍 (1)Elasticsearch: (2)Logstash: (3)kibana : (4)kafka:(kafka集群+elk) (5)Filebeat: ...
最新文章
- C语言再学习 -- 存储类型关键字
- 推荐的版本 lock 语句(C# 参考)
- 博客园的编辑器毛病真多.....
- Ajax与CustomErrors的尴尬
- python安全攻防---scapy基础---计算机网络各层协议
- mod_wsgi的工作模式和配置
- MySQL之IFNULL()、ISNULL、NULLIF用法
- deviceiocontrol buffered 返回不了_这3种减肥法是无用功,累死累活也瘦不了
- ntp linux 使用,linux-ntp 使用
- OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
- MFC GDI+ 绘图
- java中aotomicInteger_面试官:你说一下对Java中的volatile的理解吧!
- bug人生--状态在编程中的使用
- 雷神云手机亚马逊养号替代软件- VMLogin中文版多账号防关联超级浏览器
- 投资理财之基金二:购买基金的渠道
- Win7网络和共享中心显示“依赖服务或组无法启动”,无法连接网络
- 网页中嵌入flash文件的几种方法
- Android国际化,简体和繁体切换
- 傲慢与偏见 中英版
- win8文件操作以及音视频的应用
热门文章
- 收银机打印数据截取_自助收银机大大节约了人力成本
- php ci框架开发手册,CodeIgniter 教程 - php CodeIgniter 框架 - CodeIgniter手册
- pythonATM,购物车项目实战6-用户登录功能的实现
- mysql5.7系列使用记录信息
- js add方法_爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py
- c语言编程帐薄结算,用C++语言设计个人帐薄管理系统最终版(备份存档)
- mariadb 集群mysql_负载均衡的mariadb集群搭建
- windows process activation service 通信_Android四大组件——Service篇
- 共模电感适用的频率_共模电感差模分量计算
- oracle恢复init文件,详解NBU异机恢复ORACLE数据库