资讯专栏INFORMATION COLUMN

基于Docker的日志分析平台(三) 快速入门

afishhhhh / 3294人阅读

摘要:是一个日志收集器,支持非常多的输入源和输出源。这个库支持展开文件路径,而且会记录一个叫的数据库文件来跟踪被监听的日志文件的当前读取位置。

1.Zookeeper

对于Zookeeper我们用一条简单的命令来测试一下:

echo ruok|nc localhost 2181

你应该可以看到:

imok
2.Kafka

Kafka 是由 Linked 开发并且开源的一套分布式的流平台,它类似于一个消息队列。 Kafka 的优势就是适合构建实时的流数据管道,并且可靠地获取系统和应用程序之间的数据, 还可以实时的对数据流进行转换。Kafka 的使用场景很多, 特别是在需要高吞吐量的系统上。首先来理解一下 Kafka 的几个基本的概念:

Topic, Kafka 将消息进行分类,每一类的消息称之为一个主题(Topic).

Producer, 发布消息的对象称之为主题生产者(Producer)

Consumer, 订阅消息并处理消息的对象称之为主题消费者(Consumers)

Broker, 已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker)。 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。

1. 创建一个主题

我们可以登录到 Kafka 容器中,做一些简单的小测试,登录到容器中的命令:

docker-compose exec kafka bash

首先来创建一个名为test的 Topic ,只有一个分区和一个备份:

kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test

创建好之后,可以通过运行以下命令,查看topic信息:

kafka-topics.sh --list --zookeeper zookeeper:2181
2. 发送消息

Kafka 默认有提供了一个命令行的工具用来发送消息,一行是一条消息,运行 Producer 然后输入一些信息:

kafka-console-producer.sh --broker-list localhost:9092 --topic test 
3. 消费消息

Kafka 也提供了一个消费消息的命令行工具,将存储的信息输出出来。

kafka-console-consumer.sh --zookeeper zookeeper:2181 --topic test --from-beginning
3. Elasticsearch

ElasticStack技术栈包括的三个软件,而且一开始就是5.0的大版本,主要目的是为了让其他的软件版本号一致,方便各个软件的对应。不过到现在已经发展到了6.0的版本了,我们这次就是用这个版本。具体的更新详细可以查看这里Elasticsearch,这里只说说基本的概念。

Elasticsearch之所以可以方便的进行查询过滤排序是因为和 MongoDB 一样存储的是整个文档,然后还会根据文档的内容进行索引,而且文档的格式用的还是很友好的 JSON,比如一个简单的用户对象可以这么表示:

{
    "name": "Xiao Ming",
    "phone": "10086",
    "age": "25",
    "info": {
        "site" : "https://sunnyshift.com"
        "likes": ["games", "music"]
    }
}

在 Elasticsearch 中有四个名词,索引(idnex)、类型(type)、文档(document)、字段(field),这四个字段类似于数据库中的数据库(database), 表(table), 行(row), 列(column), Elasticsearch 可以包含多个索引,每个索引可以包含多个类型,每个类型可以包含多个文档,每个文档可以包含多个字段,把他想成数据库就行了。

我们来简单操作一下,先来创建一个索引,并且插入几条数据:

PUT /banji/xuesheng/1
{
    "name": "Xiao Ming",
    "age": "12"
}
PUT /banji/xuesheng/2
{
    "name": "Xiao Hong",
    "age": "16"
}

具体操作可以使用 Kibana 上面的 Dev Tools 来运行命令:

有了数据之后就可以来简单的检索一下:

这里只是介绍了一下简单的入门使用,之后可以像一些其他的操作比如过滤、组合、全文、啥的都不在话下,甚至还可以高亮搜索结果。

4. Logstash

Logstash 是一个日志收集器,支持非常多的输入源和输出源。我们简单的整合一下 ElasticStack 这个技术栈,这里用 Nginx 的访问日志来测试一下。Logstash 最新的是有一个 Beats 的组件来收集数据,这里先不考虑而是使用传统的配置文件,我们会直接把配置写到配置文件中。

Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化。这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。

使用 Dcoker 后配置文件路径在logstash/config下,可以在该目录下放置多个配置文件,最后 Logstash 会帮我们合并成一个。先来定义一个读取 Nginx 访问日志的配置:

input {
    file {
        path => [ "/var/log/nginx/access.log"]
        type => "accesslog"
    }
}
 
output {
    # 输出到 elasticsearch,索引名为 access-log
    elasticsearch { 
        hosts => "localhost:9200"
        index => "access-log"
        user => "elastic"
        password => "changeme"
    }
}

要注意的是这里写的 Nginx 的路径是相对于 Logstash 容器的,所以要把该路径挂载到容器中。然后重启 Logstash 就可以去 Kibana 中查看日志了, 附上 Logstash 重启命令。如果一切正常,那么就可以去 Kibana 中日志了。

docker-compose stop logstash
docker-compose up -d logstash
5. Kibana

Kibana 是一个可视化的 UI 界面,并且可以检索聚合分词搜索在 Elasticsearch 中的数据,并且还可以以非常精美的图标来展示统计数据。我们需要在 Management 页面中告诉 Kibana 我们刚才创建的 access-log 索引。

到这里就完成了收集 Nginx 系统日志并展示出来,对于 Kibana 还有很多用法,就不一一撰述了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27168.html

相关文章

  • 写这么多系列博客,怪不得找不到女朋友

    摘要:前提好几周没更新博客了,对不断支持我博客的童鞋们说声抱歉了。熟悉我的人都知道我写博客的时间比较早,而且坚持的时间也比较久,一直到现在也是一直保持着更新状态。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好几周没更新博客了,对不断支持我博客的童鞋们说声:抱歉了!。自己这段时...

    JerryWangSAP 评论0 收藏0
  • 基于Docker日志分析平台(四)平台整合

    摘要:会直接把日志发送给,再由进行展示。因为因为会同步把日志传输到,一旦挂掉数据就有可能会丢失。于是,我们考虑利用作为缓冲区,让不受的影响,第一步就是让把日志发送到,这里相当于。至此,我们就成功把加入到日志分析平台的架构中。 在上一篇中我们基本上完成了 ELK 和 Kafka 环境的安装,并且也通过几个简单的例子入门。现在我们就把搭建好的架构中加入 Kakfa 作为缓冲区。再来说一下,首先 ...

    wthee 评论0 收藏0
  • 容器化 — 基于Docker技术容器云

    摘要:导读本文介绍了基于技术的企业级应用容器平台,从云的定义云服务分类,到用友云基础平台平台总体架构架构预览部署架构平台核心价值和核心竞争力,阐述基础平台成为广大传统企业数字化转型的一把尖刀。   导读:本文介绍了基于Docker技术的企业级应用容器平台,从云的定义、云服务分类,到用友云PaaS基础平台、平台总体架构、架构预览、部署架构、平台核心价值和核心竞争力,阐述PaaS基础平台成为广大...

    wapeyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<