基于docker部署使用ELK+FileBeat日志管理平台
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日志管理平台的更多相关文章
- 2019你该掌握的开源日志管理平台ELK STACK
转载于https://www.vtlab.io/?p=217 在企业级开源日志管理平台ELK VS GRAYLOG一文中,我简单阐述了日志管理平台对技术人员的重要性,并把ELK Stack和Gra ...
- ELK + Filebeat 日志分析系统
ELK + Filebeat 日志分析系统 架构图 环境 OS:CentOS 7.4 Filebeat: 6.3.2 Logstash: 6.3.2 Elasticsearch 6.3.2 Kiban ...
- 基于Docker部署nodejs应用
基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- asp.net core结合NLog搭建ELK实时日志分析平台
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- 基础架构之日志管理平台搭建及java&net使用
在现代化的软件开发流程中,日志显得非常的重要,不可能再零散的游离在各个项目中,等查看日志的时候再登录服务器去到特定的目录去查看,这显然很繁琐且效率低下,所有整合一套日志管理平台,也显得非常重要,这篇文 ...
- 手把手教你搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...
- Go语言学习之13 日志管理平台开发
主要内容: 1. ElasticSearch介绍与使用2. kibana介绍与使用 1. ElasticSearch安装 详见上节内容2. kibana安装 (1) 下载ES,下载地址:https:/ ...
随机推荐
- Vue文件中引入img 路径写法
把图片路径写在data里面,然后渲染模板的两种方式 方案1.在data使用require将图片进入,写法如下 logo: require('../asset/admin/logo.png') 在模板 ...
- 吉特日化MES-日化行业原料仓库所见问题汇总
2018年工作主要面向的是日化行业,其中包括日化生产以及日化生产原料仓库,和以往接触到仓库有点不一样在于日化行业原料的特性问题,日化行业的原料基本以粉尘和液体为主. 1. 原料的形态上: 日化行业原料 ...
- Arduino通过MAX9814实现录音
如果通过Arduino进行录音不是单纯地接一个驻极电容MIC就可以的,因为自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码.即PCM编码.PCM通过抽样.量化.编码三个步骤将连续 ...
- Redis系列文章总结:ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁
引言:最近回头看了看开发的.Net Core 2.1项目的复盘总结,其中在多处用到Redis实现的分布式锁,虽然在OnResultExecuting方法中做了防止死锁的处理,但在某些场景下还是会发生死 ...
- Web测试和App测试有什么区别
WEB测试和App测试从流程上来说,没有区别.都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动.从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试.性 ...
- 网工的Linux系统学习历程
偶遇篇作为一名通过思科CCNP认证的网络工程师,专注于网络技术.但在日常的工作中,难免不接触到服务器,对于大多数服务器来说,鉴于稳定性等因素的考虑,基本使用的都是Linux系统,包括RHEL.Cent ...
- vue-cli脚手架安装和webpack-simple模板项目生成
vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目. GitHub地址是:https://github.com/vuejs/vue-cli 一. ...
- 解决只能root权限登陆mysql的问题
一.问题描述 在用sqoop连接mysql时,会报错如下图所示,原因是mysql在默认情况下是使用了auth_socket plugin进行认证,即每次登陆都需要sudo mysql -u local ...
- 17-vue-cli脚手架安装和webpack-simple模板项目生成
ue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目. GitHub地址是:https://github.com/vuejs/vue-cli 一.安 ...
- js压箱底的宝贝
框架的确好用, 不过他们也隐藏了JavaScript中丑陋的细节和DOM的运作机制. 如果你的目标是敢于自称"我懂JavaScript", 那么花时间学习框架无异于南辕北辙. 下面 ...