Dcoker-搭建日志监控系统
项目中常用集中日志收集工具
- Logstash
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
- 优点 - Logstash 主要的有点就是它的灵活性,主要因为它有很多插件,详细的文档以及直白的配置格式让它可以在多种场景下应用。我们基本上可以在网上找到很多资源,几乎可以处理任何问题。 
- 缺点 - Logstash 致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。这里有 Logstash 与 rsyslog 性能对比以及Logstash 与 filebeat 的性能对比。它在大数据量的情况下会是个问题。 
- Filebeat
作为 Beats 家族的一员,Filebeat 是一个轻量级的日志传输工具,它的存在正弥补了 Logstash 的缺点:Filebeat 作为一个轻量级的日志传输工具可以将日志推送到中心 Logstash。
- 优点 - Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。 
- 缺点 - Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。 
- Fluentd (Docker日志驱动支持)
Fluentd 创建的初衷主要是尽可能的使用 JSON 作为日志输出,所以传输工具及其下游的传输线不需要猜测子字符串里面各个字段的类型。这样,它为几乎所有的语言都提供库,这也意味着,我们可以将它插入到我们自定义的程序中。
- 优点 - 和多数 Logstash 插件一样,Fluentd 插件是用 Ruby 语言开发的非常易于编写维护。所以它数量很多,几乎所有的源和目标存储都有插件(各个插件的成熟度也不太一样)。这也意味这我们可以用 Fluentd 来串联所有的东西。 
- 缺点 - 因为在多数应用场景下,我们会通过 Fluentd 得到结构化的数据,它的灵活性并不好。但是我们仍然可以通过正则表达式,来解析非结构化的数据。尽管,性能在大多数场景下都很好,但它并不是***的,和 syslog-ng 一样,它的缓冲只存在与输出端,单线程核心以及 Ruby GIL 实现的插件意味着它大的节点下性能是受限的,不过,它的资源消耗在大多数场景下是可以接受的。对于小的或者嵌入式的设备,可能需要看看 Fluent Bit,它和 Fluentd 的关系与 Filebeat 和 Logstash 之间的关系类似。 
使用Docker-Compose搭建EFK收集中心
- 创建docker-compose.yml
新建一个efk目录,然后进入目录下:
version: '3'
services:
  web:
    image: httpd
    ports:
      - "80:80"
    links:
      - fluentd
    logging:
      driver: "fluentd"
      options:
        fluentd-address: localhost:24224
        tag: httpd.access
  fluentd:
    build: ./fluentd
    volumes:
      - ./fluentd/conf:/fluentd/etc
    links:
      - "elasticsearch"
    ports:
      - "24224:24224"
      - "24224:24224/udp"
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    environment:
      - "discovery.type=single-node"
    expose:
      - "9200"
    ports:
      - "9200:9200"
  kibana:
    image: kibana:7.10.1
    links:
      - "elasticsearch"
    ports:
      - "5601:5601"
- 创建fluentd镜像以及配置config与插件
新建 fluentd/Dockerfile
FROM fluent/fluentd:v1.12.0-debian-1.0
USER root
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-document", "--version", "4.3.3"]
USER fluent
新建 fluentd/conf/fluent.conf
<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>
<match *.**>
  @type copy
  <store>
    @type elasticsearch
    host elasticsearch
    port 9200
    logstash_format true
    logstash_prefix fluentd
    logstash_dateformat %Y%m%d
    include_tag_key true
    type_name access_log
    tag_key @log_name
    flush_interval 1s
  </store>
  <store>
    @type stdout
  </store>
</match>
- 启动服务
docker-compose up
- 多次请求httpd服务生成日志
$ curl localhost:80
- 验证日志收集
打开浏览器访问http://localhost:5601
初始化创建fluentd-*索引
 创建索引
创建索引
此时可以看到Httpd 生成的日志已经被收集
 log
log
使用fluentd收集关键点
- 如何指定fluentd驱动
- 修改daemon.json(全局) - "log-driver":"fluentd",
 "log-opts":{
 "fluentd-address":"192.168.0.133:24224"
 },
- 单个容器 - # 启动增加
 --fluentd-address=localhost:24224 --log-driver=fluentd
 #注意:注意,此时如果fluentd服务挂了 服务启动不起来的,可以在服务启动时候 加上
 --log-opt=fluentd-async-connect
结束
欢迎关注公众号! 公众号回复:
入群,扫码加入我们交流群!
Dcoker-搭建日志监控系统的更多相关文章
- 运维开发实践——基于Sentry搭建错误日志监控系统
		错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ... 
- 使用monit搭建一个监控系统
		上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情.当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行.我们搭建监控目的不过是出现问题能够及时的知 ... 
- 搭建前端监控系统(四)Js截图上报篇
		===================================================================== 前端监控系统: DEMO地址 GIT代码仓库地址 ==== ... 
- 搭建前端监控系统(二)JS错误监控篇
		===================================================================== 前端性能监控系统: DEMO地址 GIT代码仓库地址 ... 
- 搭建前端监控系统(六)JS截屏和录屏篇
		怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一系列操作之后.错误的原因可能源于机型,网络环境,接口请求,复杂的操作行为等等,在我们想要去解决的时候很难复现出来,自然也就无法解决 ... 
- 搭建前端监控系统(五)Nodejs怎么搭建消息队列
		怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一系列操作之后.错误的原因可能源于机型,网络环境,接口请求,复杂的操作行为等等,在我们想要去解决的时候很难复现出来,自然也就无法解决 ... 
- 总结2015搭建日志,监控,ci,前端路由,数据平台,画的图与界面 - hugo - ITeye技术网站
		总结2015搭建日志,监控,ci,前端路由,数据平台,画的图与界面 - hugo - ITeye技术网站 极分享:高质分享+专业互助=没有难做的软件+没有不得已的加班 极分享:高质分享+专业互助=没有 ... 
- 搭建前端监控系统(三)NodeJs服务器部署篇
		===================================================================== 监控系统预览地址: DEMO地址 GIT代码仓库地址 ... 
- Telegraf+InfluxDB+Grafana快速搭建实时监控系统  监控postgresql
		Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql 
- 从零开始搭建前端监控系统(三)——实现控制iframe前进后退
		前言 本系列文章旨在讲解如何从零开始搭建前端监控系统. 项目已经开源 项目地址: https://github.com/bombayjs/bombayjs (web sdk) https://gith ... 
随机推荐
- 微信小程序批量上传图片 All In One
			微信小程序批量上传图片 All In One open-data https://developers.weixin.qq.com/miniprogram/dev/component/open-dat ... 
- Docker In Action
			Docker In Action Docker 实战 https://docs.docker.com/get-started/overview/ Docker Engine Docker Archit ... 
- TypeScript & React & Jest
			TypeScript & React & Jest create-react-app Jest ``tsx import React from 'react'; import { re ... 
- Alexa website ranking
			Alexa website ranking The top 500 sites on the web https://www.alexa.com/topsites https://www.alexa. ... 
- 微信公众号 & 付费阅读
			微信公众号 & 付费阅读 付费功能 付费阅读 付费功能使用说明 1.付费功能介绍 开通了付费功能的公众号,运营者可以在编辑时对原创文章的部分或全部内容设置收费.对于付费图文,用户未付费前可免费 ... 
- AMP ⚡
			AMP https://amp.dev/zh_cn/ PWA AMP Playground https://playground.amp.dev/?runtime=amp4email <!doc ... 
- 微信小程序 components
			微信小程序 components wx-xcx-components https://developers.weixin.qq.com/miniprogram/dev/component/ https ... 
- input support upload excel only
			input support upload excel only demo https://codepen.io/xgqfrms/pen/vYONpLB <!-- <input placeh ... 
- MacOS下PHP7.1升级到PHP7.4.15
			最近写SDK的时候需要用到object类型提示符,PHPStorm智能提示说需要PHP7.2以上才能支持这种类型提示. 我一查我本机的PHP是7.1.30版本,于是考虑升级一下PHP版本. 首先要尝试 ... 
- Vue3组件(九)Vue + element-Plus + json = 动态渲染的表单控件
			一个成熟的表单 表单表单,你已经长大了,你要学会: 动态渲染 支持单列.双列.多列 支持调整布局 支持表单验证 支持调整排列(显示)顺序 依据组件值显示需要的组件 支持 item 扩展组件 可以自动创 ... 
 
			
		