ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

90DaysOfDevOps 实践笔记:使用 Docker Compose 本地部署 ELK Stack 并完成日志可视化

90DaysOfDevOps 实践笔记:使用 Docker Compose 本地部署 ELK Stack 并完成日志可视化 文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载本文围绕 90DaysOfDevOps 学习计划第 80 天的内容完整讲解 ELKElasticsearch Logstash Kibana日志分析栈的组件职责、数据流转架构并结合本仓库中真实可用的 Elastic Stack 部署目录 源码级配置文件一步步完成基于 docker-compose 的本地单机部署、账号初始化、Kibana 访问与示例日志数据的可视化。读完本文你将掌握 ELK 栈的核心概念能够在本机复现一套可运行的日志分析与可视化环境并理解它与 Prometheus Grafana 指标监控方案的本质区别。ELK Stack 是什么三个独立工具的有机组合ELK Stack 是三个独立开源工具的缩写组合它们各司其职共同构成一条从日志采集到可视化的完整链路Elasticsearch一个分布式、免费开放、面向全类型数据文本、数值、地理空间信息、结构化与非结构化数据的搜索与分析引擎。它是整个栈的存储与索引中枢。Logstash一个免费开放的服务器端数据处理管道负责从多种来源采集数据、进行解析与转换再发送到你想要存放的存储库stash。Kibana一个免费开放的 Web 用户界面用于可视化 Elasticsearch 中的数据并导航整个 Elastic Stack从追踪查询负载到理解请求在应用中的流转方式都可以在这里完成。使用 ELK Stack 的价值在于能够可靠、安全地从任何来源、以任意格式摄取数据然后实时进行搜索、分析与可视化。这正是 DevOps 场景下日志集中管理与问题排查的核心需求。ELK 数据流转架构日志如何变成可视化面板在动手之前先理清日志数据在栈中的流动路径。本仓库 Monitoring 目录 中的 Elastic Stack 部署正是按这条链路组织起来的Logs日志源确定需要分析的服务器日志。Logstash负责采集日志与事件数据甚至对数据进行解析parse和转换transform。Elasticsearch接收 Logstash 转换后的数据进行存储Store、搜索Search与索引Index。Kibana基于 Elasticsearch 中的索引数据进行探索Explore、可视化Visualize与共享Share。除了上述三大组件ELK 家族中还经常出现Beats——部署在边缘主机上的轻量级采集代理用于收集不同类型的数据并转发进栈中。本仓库 Elastic Stack extensions 扩展目录 里就包含了可选的 Filebeat、Metricbeat 等 Beat 容器化配置见extensions/filebeat/与extensions/metricbeat/各自带有filebeat.yml/metricbeat.yml配置与*-compose.yml编排文件。随着 Beats 的加入ELK Stack 如今也常被称为Elastic Stack。实战环境准备用 docker-compose 在本地拉起整套栈ELK/Elastic Stack 的部署位置有很多本实验选择最轻量的方式——使用 docker-compose 在本地系统上部署。本仓库 2022/Days/Monitoring/Elastic Stack/ 目录是一套完整的、可直接落地的 docker-elk 风格编排文件包含 elasticsearch、logstash、kibana、setup 四个服务以及若干可选扩展。下面以该目录中的真实配置为蓝本拆解关键部分。docker-compose 服务拓扑与端口规划docker-compose.yaml 定义了完整的服务编排核心服务与端口映射如下服务镜像构建上下文暴露端口用途setupsetup/无一次性任务初始化 Elasticsearch 内置用户与密码elasticsearchelasticsearch/9200HTTP API、9300节点间通信数据存储、搜索与索引logstashlogstash/5044Beats 输入、5000/tcp与5000/udpTCP/UDP 输入、9600监控 API日志采集、解析与转换管道kibanakibana/5601Web 可视化界面所有服务接入同一个名为elk的 bridge 网络服务间通过容器名如elasticsearch:9200互相通信。Elasticsearch 单节点配置要点elasticsearch 服务 的关键设置内存限制ES_JAVA_OPTS: -Xmx256m -Xms256m将 JVM 堆固定在 256 MB适配本地轻量实验单节点发现discovery.type: single-node关闭生产模式下的 bootstrap 检查避免单机部署时因配置不满足生产要求而启动失败数据持久化挂载命名卷elasticsearch到/usr/share/elasticsearch/data容器重建后数据不丢失。其挂载的 elasticsearch.yml 还做了如下配置cluster.name: docker-cluster集群名称network.host: 0.0.0.0监听所有网卡xpack.license.self_generated.type: trial启用试用版许可证解锁全部 X-Pack 功能xpack.security.enabled: true开启 X-Pack 安全认证这也是后续需要初始化账号密码的原因。Logstash 管道beats/tcp 输入 elasticsearch 输出logstash 服务 将./logstash/pipeline目录以只读方式挂载进容器管道定义位于 logstash.confinput { beats { port 5044 } tcp { port 5000 } } ## 在这里添加你的 filter / logstash 插件配置 output { elasticsearch { hosts elasticsearch:9200 user logstash_internal password ${LOGSTASH_INTERNAL_PASSWORD} } }管道结构非常清晰input 阶段同时监听5044端口接收 Beats 家族代理转发来的数据和5000端口同时支持 TCP 与 UDP可直接用nc或应用日志输出投递filter 阶段目前为空注释中预留了日志解析插件的插入位置例如grok正则解析、date时间戳处理等可按需补充output 阶段将数据写入elasticsearch:9200并以内置的logstash_internal用户 环境变量注入的密码完成认证见下文 setup 服务。Logstash 自身的 logstash.yml 配置了http.host: 0.0.0.0用于暴露 9600 端口的监控 API。Kibana 连接 Elasticsearchkibana 服务 将 kibana.yml 只读挂载进容器其中server.name: kibana、server.host: 0.0.0.0Web 服务监听所有地址elasticsearch.hosts: [ http://elasticsearch:9200 ]通过 docker 网络直连 Elasticsearchelasticsearch.username: kibana_system、elasticsearch.password: ${KIBANA_SYSTEM_PASSWORD}使用内置系统账号完成认证。账号初始化机制setup 一次性服务与密码管理因为xpack.security.enabled: true开启了安全认证Elastic Stack 内部需要使用内置账号完成服务间通信。这套编排通过一个只运行一次的 setup 服务 解决初始化问题它构建自setup/目录含 entrypoint.sh 与 helpers 脚本并声明init: true通过环境变量注入三个密码ELASTIC_PASSWORD超级用户 elastic、LOGSTASH_INTERNAL_PASSWORDLogstash 内置用户、KIBANA_SYSTEM_PASSWORDKibana 内置用户首次启动时脚本会在 Elasticsearch 中创建/更新logstash_internal与kibana_system两个内置用户后续再次启动时直接返回不会重复修改已有用户密码来源是编排文件同级的.env文件仓库中未提交该文件需自行创建变量名与docker-compose.yaml中${ELASTIC_PASSWORD}等一一对应。由于setup挂载了命名卷setup:/state:Z初始化状态会被持久化避免每次重启都重置凭据。另外setup/roles/ 目录中还提供了logstash_writer.json角色文件用于授予 Logstash 写入索引的权限。启动与访问docker-compose up 到 Kibana 首页启动整套栈只需在 Elastic Stack 目录 下执行docker-compose up -d首次运行会拉取 Elasticsearch、Logstash、Kibana 及各扩展的基础镜像耗时取决于网络状况之后再次启动则秒级完成。若使用与本仓库同源的 docker-elk 模板默认密码通常是changeme本仓库配套教程使用的密码为90DaysOfDevOps而用户名始终是elastic对应 setup 中初始化的ELASTIC_PASSWORD。请务必在.env文件中为ELASTIC_PASSWORD、LOGSTASH_INTERNAL_PASSWORD、KIBANA_SYSTEM_PASSWORD设置强密码并注意三个密码不能相同Elasticsearch 要求内置用户密码互不相同。等待几分钟让各容器完成启动与健康检查后浏览器访问http://localhost:5601/即可进入 Kibana 的 Web 界面使用elastic用户名与ELASTIC_PASSWORD登录。Kibana 初始首页会引导你开始添加数据源或探索示例数据。快速体验Kibana 内置示例数据与仪表盘对于只想先感受数据可视化流程的读者Kibana 首页的Get started by adding integrations区域提供了Try sample data尝试示例数据入口点击后可以选择系统内置的几类示例数据集其中最有代表性的是Sample web logs示例 Web 日志——它模拟了一套真实风格的 Web 访问日志用于演示数据如何进入并呈现在 ELK 栈中。选择数据集后点击Add DataKibana 会花一段时间填充索引数据完成后界面会出现View Data选项及下拉列表其中列出了查看该数据集的各种可用方式Discover 探索、Dashboard 仪表盘、可视化图表面板等。Kibana 仪表盘页面上的说明很直接该仪表盘包含可供把玩的示例数据你可以查看、搜索并与可视化交互需要更深入了解 Kibana 用法时查阅其官方文档即可。这段体验的完整链路值得再次强调示例数据由 Kibana 写入 Elasticsearch而生产环境中这些数据正是经由 Logstash 管道如本仓库 logstash.conf 中的 beats/tcp 输入注入 Elasticsearch再由 Kibana 完成可视化。通过示例数据你能直观理解这套采集 → 转换 → 存储索引 → 可视化的完整流程而它并不是唯一选择——后续教程中还会涉及 Grafana届时可以看到两者在数据可视化上的相似之处。定位与选型ELK 专注日志Prometheus 专注指标实践之外第 80 天教程还给出了一个关键选型结论这也是监控体系设计中最常见的对比维度Elastic StackELK Stack聚焦于日志Logs——日志的采集、解析、存储、检索与可视化Prometheus Grafana聚焦于指标Metrics——系统与应用的时序指标采集、告警规则与仪表盘展示。两者并非互斥而是互补日志回答发生了什么、为什么指标回答现在状态如何、何时恶化。在构建完整可观测性体系时许多团队会同时引入两类方案这也是 90DaysOfDevOps 监控章节先覆盖 ELK、再覆盖 Prometheus Grafana 的原因。本仓库中另有一份 EFK Stack 编排文件可以看到把 Elasticsearch 与 Fluentd、Kibana 组合的替代方案可作对比延伸阅读。延伸阅读指引第 80 天的后续可以继续在仓库中探索下一篇 Day 81继续监控主题的深入学习Monitoring 目录 下的 Elastic Stack 与 EFK Stack 完整部署文件extensions 扩展目录 中的 Filebeat、Metricbeat、Logspout、APM Server、Enterprise Search 等可选组件的配置与 README了解 Beats 家族如何扩展 ELK 的数据采集能力。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐90DaysOfDevOps 实战用 Docker Compose 本地部署 ELK Stack 与 Kibana 日志可视化90DaysOfDevOps 实战用 Docker Compose 本地部署 ELK Stack 与 Kibana 日志可视化 本文是 90DaysOfDev文档/教程90DaysOfDevOps 监控实践使用 Docker Compose 部署 ELK StackElasticsearch Logstash Kibana90DaysOfDevOps 监控实践使用 Docker Compose 部署 ELK StackElasticsearch Logstash Ki文档/教程90DaysOfDevOps 实践使用 Docker Compose 一键部署单节点 Elasticsearch Logstash KibanaELK日志分析栈90DaysOfDevOps 实践使用 Docker Compose 一键部署单节点 Elasticsearch Logstash KibanaEL文档/教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表