Docker从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,专业叫法为 Application Container(应用容器)。Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程,不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。作为时下最热门的技术,docker轻量、便捷,极大的简化了后端开发/后期运维工作。同时,ELK+Filebeat的集中式日志解决方案也是大热。开发环境,Ubuntu 16.04

  1、Docker安装

  1.校验Linux内核版本

uname -ir

  Linux内核版本高于3.10,64位系统

  2.获取最新doker安装包

wget -qO- https://get.docker.com/ | sh

  如上图,即安装完成

  3.启动docker后台服务

sudo service docker start #启动守护进程
docker -v # 检查版本

  如此docker即装好,具体的安装详情,教程很多,不赘述

  2、安装elk镜像

  1.拉取 sebp/elk镜像

sudo docker pull sebp/elk

  镜像较大,差不多1.65G

  2.说几个会用到的docker命令

sudo docker images // 查看本地已有镜像
sudo docker run [image] // 拉取并运行镜像
sudo docker ps -a // 查看容器状态
sudo docker stop [image_id]
sudo docker rm [image_id] // 删除指定容器
sudo docker exec -it [image_id] /bin/bash // 进入容器,推荐bash
//拷贝容器内文件至主机目录
sudo docker [image_id]:/etc/pki/tls/certs/logstash-beats.crt ~
exit // 退出容器

  3.运行elk容器

  运行elk容器的时候,需将宿主机的端口转发到该容器,其中ES端口为9200,kibana端口为5601,logstash为5044(注:可进入容器自行修改,再自由分配);建议将配置文件和数据存放在宿主机,便于后期维护,因此还需要将宿主机目录挂载在容器/data当中;最终构造的命令如下:

sudo docker run -p  5601:5601 -p 9200:9200 -p 5044:5044  -v /home/nya/dockerFile:/data -it -d --name elk sebp/elk

  4.ELK服务端简单配置

  这里是将ELK作为服务端,而sebp/elk镜像默认生成有ssl证书,将证书拷贝至客户端即可,容器中logstash的相关配置位于/etc/logstash/conf.d,输入默认配置如下:

input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt"
ssl_key => "/etc/pki/tls/private/logstash-beats.key"
}
}

  :产生的数据文件及相关配置文件,可统一至于 之前挂载的 /data目录下

  5.简单测试

  一般不存在问题,可直接访问Kibana页面:

  多数无法访问可能因为网络不通,即防火墙未打开:

sudo ufw allow 5601 // 开启5601端口

  3、ELK客户端配置

  ELK客户端配置核心在于Filebeat的相关配置

  1.添加elastic key至客户端

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

  2.安装apt-transport-https

  由于将使用https传输的elastic数据,需安装apt-transport-https

sudo apt-get install -y apt-transport-https

  3.添加elastic库并更新apt-get库

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update

  4.安装Filebeat及相关配置

sudo apt-get install -y filebeat
sudo vi /etc/filebeat/filebeat.yml

  简版相关配置:

filebeat.prospectors:

- input_type: log

  paths:
- /data/rosetta/logs/image-search.log
- /data/rosetta/logs/summary.log
document_type: syslog
output.logstash:
hosts: ["ip:5044"]
bulk_max_size: 2048 # ssl.certificate_authorities: ["/etc/logstash/logstash.crt"]
ssl.certificate_authorities: ["/home/nya/logstash-beats.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false

  注意:配置文件为 .yml,格式特别重要,尤其是配置key: 后必须有一个空格,否则filebeat启动失败。

  5.启动Filebeat

sudo systemctl start filebeat  // 启动
sudo systemctl enable filebeat // 设置为开机启动
sudo systemctl status filebeat // 检查服务状态

  执行检查服务状态,返回结果如下图即可:

  4、校验并测试

  此处无甚可说,组图展示:

1.

2.

3.

4.

5.大功告成 -- 结束

基于docker部署使用ELK+FileBeat日志管理平台的更多相关文章

  1. 2019你该掌握的开源日志管理平台ELK STACK

    转载于https://www.vtlab.io/?p=217   在企业级开源日志管理平台ELK VS GRAYLOG一文中,我简单阐述了日志管理平台对技术人员的重要性,并把ELK Stack和Gra ...

  2. ELK + Filebeat 日志分析系统

    ELK + Filebeat 日志分析系统 架构图 环境 OS:CentOS 7.4 Filebeat: 6.3.2 Logstash: 6.3.2 Elasticsearch 6.3.2 Kiban ...

  3. 基于Docker部署nodejs应用

    基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...

  4. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  5. asp.net core结合NLog搭建ELK实时日志分析平台

    0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...

  6. 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)

    [编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...

  7. 基础架构之日志管理平台搭建及java&net使用

    在现代化的软件开发流程中,日志显得非常的重要,不可能再零散的游离在各个项目中,等查看日志的时候再登录服务器去到特定的目录去查看,这显然很繁琐且效率低下,所有整合一套日志管理平台,也显得非常重要,这篇文 ...

  8. 手把手教你搭建 ELK 实时日志分析平台

    本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...

  9. Go语言学习之13 日志管理平台开发

    主要内容: 1. ElasticSearch介绍与使用2. kibana介绍与使用 1. ElasticSearch安装 详见上节内容2. kibana安装 (1) 下载ES,下载地址:https:/ ...

随机推荐

  1. 算法相关——Java排序算法之希尔排序(五)

    个子块,即{3,5},{1,0},{5,2},{9,4},{6,12},将每个子块进行插入排序(即第i位与第i+5位进行比较交换),初步排序结果为{3,0,2,4,6,5,1,5,9,12}.希尔排序 ...

  2. python中join()函数的使用方法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:    join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字 ...

  3. 朱晔的互联网架构实践心得S1E10:数据的权衡和折腾【系列完】

    朱晔的互联网架构实践心得S1E10:数据的权衡和折腾[系列完] [下载本文PDF进行阅读] 本文站在数据的维度谈一下在架构设计中的一些方案对数据的权衡以及数据流转过程中的折腾这两个事情.最后进行系列文 ...

  4. 【Java面试宝典】深入理解JAVA虚拟机

    一.运行时数据区域 线程隔离:线程隔离的意思,就是给不同的线程多分配的资源用,以做到不争用. 线程共享:线程共享就是资源只有一个没有办法分配更多,只能共享. Java虚拟机管理的内存包括几个运行时数据 ...

  5. 避免使用HttpClient的系统代理

    这两天在玩Consul, 他的.Net驱动使用了HttpClient来发送Http请求. 但是我的电脑上装有SS, 所以请求会被SS过滤一次, 然后导致请求的延迟一直比较高. 然后只需要改写一下Htt ...

  6. session与cookie的区别以及HTML5中WebStorage理解

    一.session与cookie的区别 二.HTML5中WebStorage理解 WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回 ...

  7. p151开映射札记

    1. 如何理解这句话? 2.连续有什么用? 3.为什么区间包含,经过算子T还是包含? 谢谢 谢谢学长 我懂了  1.2.     3有点儿模糊 1.连续等价于开集原像是开集,而可逆算子的逆的原像就是的 ...

  8. Of Study

    Bacon Reading maketh a full man; conference a ready man; and writing an exact man. And therefore, if ...

  9. Chrome 浏览器的简单设置 无痕模式 暗黑模式 自定义用户目录

    1. Chrome73 新增加了暗黑模式 可以通过修改快捷方式的方式来默认开启方法如下 1.1 关闭浏览器 2.2 鼠标焦点定位到任务栏 Chrome 图标处, 并且按住shift 按键 执行右键操作 ...

  10. [转帖]oracle改版sql server问题点汇总

    https://www.cnblogs.com/zhangdk/p/oracle_sqlserver.html 只记得 最开始的时候看过 没有具体的了解里面的特点 原作者总结的很好 留下来 以后说不定 ...