一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储、索引日志, logstash —— 可用于日志传输、转换,kibana —— WebUI,将日志可视化),发现最新版已到7.4了。所以别问程序员为什么这么忙?因为不是在加班就是在学习新框架中。

本文整理了使用Docker来快速搭建一套ELK日志分析系统的方法。

1. 部署elk

github上有人整理了一套使用docker compose来部署elk的配置,可直接下载使用。

git clone https://github.com/deviantony/docker-elk.git

如果没有git,那就安装一下(yum install git),或者直接下载github仓库的源码包。

当前是基于7.2.1版(docker-elk目录下.env文件中定义,可修改)。

调整一下相应的配置。

修改docker-compose,设置es密码等,

vim docker-compose.yml

  # 在elasticsearch部分设置环境变量,将jvm堆内存增大到了1g,设置es elastic用户的密码
environment:
ES_JAVA_OPTS: "-Xmx1g -Xms1g"
ELASTIC_PASSWORD: Passw0rd # 将logstash的端口映射从默认的5000改为5044,因为后面会用filebeat,不改也可以,对应就行
ports:
- "5044:5044"
- "9600:9600" # 将jvm内存也增大一点
environment:
LS_JAVA_OPTS: "-Xmx512m -Xms512m" # 在volumes部分增加es数据目录的挂载,对es数据持久化,避免容器销毁数据丢失
volumes:
- /mnt/elk/esdata:/usr/share/elasticsearch/data

注意:因为es容器内部是以elasticsearch用户启动进程的,所以在做持久化数据目录挂载的时候,需要将目录权限进行设置,否则会因为没有访问权限而启动失败。elasticsearch的uid是1000,可以建一个uid为1000的用户,然后将目录所有者赋予该用户。

修改es配置文件,将xpack从trial改为basic,禁用付费功能

vim elasticsearch/config/elasticsearch.yml

  #xpack.license.self_generated.type: trial
xpack.license.self_generated.type: basic

修改logstash配置文件,设置es的用户名密码

vim logstash/config/logstash.yml

  xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: Passw0rd

修改logstash的pipeline配置

vim logstash/pipeline/logstash.conf

  # 这里codec根据具体情况配置
input {
beats {
port => 5044
codec => "json"
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
user => "elastic"
password => "Passw0rd"
}
}

修改kibana配置,设置es密码

vim kibana/config/kibana.yml

  ## X-Pack security credentials
elasticsearch.username: elastic
elasticsearch.password: Passw0rd

配置调整后,使用 docker-compose up -d 即可启动es,logstash,kibana三个容器。第一次启动需要下载所有镜像,会比较慢,启动完后,访问 elk所在服务器IP:5601即可进入kibana页面。

这里默认是起一个es容器,如果想起多个,参考: https://github.com/deviantony/docker-elk/wiki/Elasticsearch-cluster

2. 部署filebeat

filebeat部署在产生日志的服务器上。先下载镜像,

docker pull docker.elastic.co/kibana/kibana:7.3.1

下载一个示例配置文件

curl -L -O https://raw.githubusercontent.com/elastic/beats/7.3/deploy/docker/filebeat.docker.yml

修改配置文件

vim filebeat.docker.yml

filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false #filebeat.autodiscover:
# providers:
# - type: docker
# hints.enabled: true #processors:
#- add_cloud_metadata: ~
#- add_host_metadata: ~ filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/elk/*.log output.logstash:
hosts: ["你的elk服务器IP:5044"]

去掉了一些不必要的配置,基本就是一个input, 一个output。input paths部分配置你日志所在目录,注意这里是容器内的目录,真正服务器的日志目录需要在启动容器时挂载到这里配置的目录。

启动容器

docker run -d --name filebeat --user=root -v $(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro \
-v /mnt/logs/elk/:/var/log/elk/ docker.elastic.co/beats/filebeat:7.3.1 filebeat -e -strict.perms=false

对配置文件及实际日志目录与容器日志目录进行了挂载。

启动成功后,对应目录下的日志就会通过filebeat,logstash传输到es,进入kibana对日志数据建立索引进行查询了。

3. 总结

前面用elk来搭建日志分析系统还是5.1版,两年时间已到7.4,配置方式,包括UI风格都做了很大的调整,很有一种人间一年,技术圈十载的感觉。
本文整理了基于Docker来搭建ELK框架的整个过程,供参考。

—————————————————————————————
作者:空山新雨
欢迎关注我的微信公众号:jboost-ksxy (一个不只有技术干货的公众号)

Docker笔记(十):使用Docker来搭建一套ELK日志分析系统的更多相关文章

  1. 十分钟搭建和使用ELK日志分析系统

    前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为“十分钟搭建和使用ELK日志分析系统”听 ...

  2. Windows搭建Log4Net+FileBeat+ELK日志分析系统过程

    参考博客:http://udn.yyuap.com/thread-54591-1-1.html ; https://www.cnblogs.com/yanbinliu/p/6208626.html ; ...

  3. Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)

    因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...

  4. ELK日志分析系统搭建

    之前一段时间由于版本迭代任务紧,组内代码质量不尽如人意.接二连三的被测试提醒后台错误之后, 我们决定搭建一个后台日志分析系统, 经过几个方案比较后,选择的相对更简单的ELK方案. ELK 是Elast ...

  5. ELK日志分析系统搭建(转)

    摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究 ...

  6. CentOs 7.3下ELK日志分析系统搭建

    系统环境 为了安装时不出错,建议选择这两者选择一样的版本,本文全部选择5.3版本. System: Centos release 7.3 Java: openjdk version "1.8 ...

  7. 快速搭建ELK日志分析系统

    一.ELK搭建篇 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/ ...

  8. 搭建ELK日志分析系统

    看了辣么多博客,就数这个最详细最容易理解了:https://blog.csdn.net/qq_22211217/article/details/80764568 >>>>> ...

  9. ELK日志分析系统搭建 windows

    1 分别下载elk包 下载地址 https://www.elastic.co/cn/downloads 2 将这三个解压到同一个目录下,便于管理 3 elasticsearch不需要修改配置 默认即可 ...

随机推荐

  1. Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

    前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...

  2. Jenkins 持续集成持续发布使用搭建基础

    一.环境搭建基础 1.持续集成.持续交付.持续部署概念 ①.集成: 是指软件多人研发的部分软件代码整合交付,以便尽早发现个人开发部分的问题:持续集成:强调开发人员提交了新代码之后,立刻进行构建(单元) ...

  3. Button 使用详解

    极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...

  4. Adapter适配器模式--图解设计模式

    第二章: Adapter 模式 Adapter模式分为两种: 1.类适配器模式 2.委托适配器 我看的是<图解设计模式>这本书,这小鬼子说的话真难懂,只能好好看代码理解. 先说适配器模式要 ...

  5. Mysql 局域网连接设置——Windows

    在公司工作中,会遇到mysql数据库存储于某个人的电脑上,大家要想连接mysql服务,装有mysql服务的电脑就必须开启远程连接. 其实不仅仅是局域网,只要你有数据库所在服务器的公网IP地址都能连上. ...

  6. .Net Core 最优 MD5 打开方式!初学者建议收藏(支持 SHA1,SHA256,.Net Framework)

    public static string GetMd5Hash(string input) { using (MD5 md5Hash = MD5.Create()) { // Convert the ...

  7. C#将图片转换成字符画

    先看一下效果图 在Main方法中调用(首先要添加程序集System.Drawing,然后引入命名空间System.Drawing) ConvertToChar(new Bitmap(@"D: ...

  8. Spring Boot之Profile--快速搞定多环境使用与切换

    Spring Profile是Spring3引入的概念,主要用在项目多环境运行的情况下,通过激活方式实现多环境切换,省去多环境切换时配置参数和文件的修改,并且Spring profile提供了多种激活 ...

  9. ASP.NET Core MVC 之过滤器(Filter)

    ASP.NET MVC 中的过滤器允许在执行管道中的特定阶段之前或之后运行代码.可以对全局,也可以对每个控制器或每个操作配置过滤器. 1.过滤器如何工作 不同的过滤器类型在管道中的不同阶段执行,因此具 ...

  10. Mysql高可用(HA)

    MySQL特点: 1) 开放的源代码的关系型数据库 2) 适应于所有平台 3) 支持多线程,充分利用CPU资源,性能很出色 4) 价格便宜 5) 大数据库能处理5000万条记录. ACID 事务 一组 ...