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/src

shell > wget https://download.elastic.co/logstash/logstash/logstash-1.5.2.tar.gz

shell > tar zxf logstash-1.5.2.tar.gz

shell > mv logstash-1.5.2 ../logstash

shell > /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.conf

input {
    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/src

shell > wget http://download.redis.io/releases/redis-3.0.2.tar.gz

shell > tar zxf redis-3.0.2.tar.gz

shell > cd redis-3.0.2 ; make ; make install

shell > mkdir /usr/local/redis

shell > cp /usr/local/src/redis-3.0.2/redis.conf /usr/local/redis/

shell > sed -i ‘/daemonize/s/no/yes/‘ /usr/local/redis/redis.conf

shell > sed -i ‘s#dir ./#dir /usr/local/redis#‘ /usr/local/redis/redis.conf

shell > redis-server /usr/local/redis/redis.conf

shell > 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 ACCEPT

shell > 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 -1
 1) "{\"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/src

shell > wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.tar.gz

shell > mv elasticsearch-1.6.0 /usr/local/elasticsearch

shell > vim /usr/local/elasticsearch/config/elasticsearch.yml

cluster.name: my_es
node.name: "Master"

## cluster.name 集群名称,局域网内只要这个名称相同,那么就可以自动组成一个集群
## nod.name 节点名称
## 这些都是可以不用修改的,采用默认参数即可

shell > vim /usr/local/elasticsearch/bin/elasticsearch.in.sh

if [ "x$ES_MIN_MEM" = "x" ]; then
    ES_MIN_MEM=64m
fi
if [ "x$ES_MAX_MEM" = "x" ]; then
    ES_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.conf

input {
    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/src

shell > 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.gz

shell > mv kibana-4.1.1-linux-x64 /usr/local/kibana

shell > /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

时间: 2024-11-05 11:49:17

ELK 日志管理系统,初次尝试记录的相关文章

ELK 日志管理系统,再次尝试记录

简介: 第二次尝试 ELK 记录... 工作流程: 1.客户端的 Logstash 将日志信息采集到之后传输给 Redis 做消息队列 2.然后服务端的 Logstash 将日志从 Redis 中取出之后根据日志规则将数据序列化( 方便查询 )完成后存入 Elasticsearch 文本数据库中 3.最后通过 Kibana 展示数据,可以根据序列化好的数据做查询过滤.数据聚合等操作 环境描述: 192.168.214.20 服务端( Logstash .Elasticsearch .Redis

elk日志收集平台搭建记录

ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合. Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,他可以对你的日志进行收集.过滤,并将其存储供以后使用(如,搜索). Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的

ELK日志管理

ELK日志管理 ·        1.简介 ·        2.依赖组件 ·        3.下载 ·        4.安装步骤 o   4.1 安装redis o   4.2 ElasticSearch安装 o   4.3 LogStash安装 o   4.4 Kibana安装 ·        5.使用说明 o   5.1 ElasticSearch o   5.2 Kibana 1.简介 ELK日志管理系统主要功能:应用系统日志的分析和监控 . ELK组成:ElasticSearch

Centos7 之安装Logstash ELK stack 日志管理系统

一.介绍 The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源,任何格式进行日志搜索,分析获取数据,并实时进行展示.像盾牌(安全),监护者(警报)和Marvel(监测)一样为你的产品提供更多的可能. Elasticsearch:搜索,提供分布式全文搜索引擎 Logstash: 日志收集,管理,存储 Kibana :日志的过滤web 展示 Filebeat:监控

离线部署ELK+kafka日志管理系统

1.简介 对于日志来说,最常见的需求就是收集.查询.显示,正对应logstash.elasticsearch.kibana的功能. ELK日志系统在系统中,主要可解决的问题: 基于日志的数据挖掘 问题排查,上线检查 根据关键字查询日志详情 异常数据自动触发消息通知 服务器监控,应用监控,Bug管理 统计分析,比如接口的调用次数.执行时间.成功率等 性能分析,用户行为分析,安全漏洞分析,时间管理 Logstash: Logstash是一个用来搜集.分析.过滤日志的工具.它支持几乎任何类型的日志,包

极速赛车平台出租与ELK日志分析平台

什么是ELK呢?极速赛车平台出租 Q2152876294 论坛:diguaym.com ELK是三个组件的缩写, 分别是elasticsearch, logstash, kibana. ELK平台可以用于实现日志收集.日志搜索和日志分析 1.elasticsearch(es): 它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. 2.logstash: 简单说是一个日志收集工具, 可以定义从哪里获取数据,

ELK日志分析系统 介绍 安装配置

ELK日志分析系统 一.ELK介绍 ELK顾名思义:是由Elasticsearch,Logstash 和 Kibana三部分组成的. 其中Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写.目前,最新的版本是 5.4. 主要特点 实时分析 分布式实时文件存储,并将每一个字段都编入索引 文档导向,所有的对象全部是文档 高可用性,易扩展,支持集群(Cl

Linux日志管理系统

日志:按时间序列将发生的时间予以记录. 记录内容:事件发生的时间,事件内容. Linux系统的日志系统: 1.syslogd:用于CentOS 5上,记录系统进程相关的日志 2.klogd:内核事件相关的日志 rsyslog:用于CentOS 6上,支持的新特性: 1.支持多线程 2.支持基于TCP,SSL,TLS,RELP协议将日志信息存储在远程日志服务器上,以前版本的syslog仅支持文本格式. 3.支持将数据放在MySQL,PGSQL,Oracle等多种关系型数据库中 4.强大的过滤器,可

浅谈ELK日志分析平台

作者:珂珂链接:https://zhuanlan.zhihu.com/p/22104361来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 小编的话 "技术干货"系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞! 2016年7月20日,本期品高云公开课由叶春草带来"可视化案发现场--浅谈ELK日志分析平台"的分享. 分享嘉宾 叶春草现就职于品高云软件技术支持工程师.就职