【ELK入门】Elastic中文社区运维监控实战之架构篇

简介: 阿里云MVP曾勇撰写的《ELK运维监控入门实战》系列,以Elasticsearch中文社区网站运维监控体系搭建作为案例,讲解了ELK监控系统的相关原理和技术实现,可作为对ELK感兴趣的同学的入门级文章。本篇作为第一篇,介绍了项目背景和技术架构。

项目背景

本文为系列文章第一篇,主要介绍如何把 Elastic 中文社区的网站服务器监控起来,对有同样想了解如何使用 Elastic Stack 来做运维监控的同学,可以作为一个很好的参考和入门资料,学习门槛定义为入门级。

首先,我们要监控的网站,也就是大家现在正在访问的 Elastic 官方中文社区,网址:elasticsearch.cn,这个网站基于开源的 WeCenter 搭建,开发语言是 PHP,后端数据库是 MySQL,目前只有一台服务器,由 ConvertLab 友情无偿赞助,大写的赞!再次感谢!

服务器部署环境是 Ubuntu 16.04.2,部署了以下服务及软件:

  • Nginx - Http 反向代理,不要介绍了吧
  • PHP-FPM - 一个常用的 PHP FastCGI 管理
  • Elasticsearch - Elasticsearch 服务,用于社区的垂直搜索服务 Elastic情报局服务
  • GOPA - 可以说是为社区而写的,一个轻量级的爬虫,用于爬取 Elatic 周边相关相关资料,创建索引存放到 Elasticsearch 里面,提供垂直搜索服务。代码地址
  • Grok Debugger - 一个 Java 的 Grok pattern 调试服务,方便大家调试 Grok 日志解析规则。
    服务器上所有的财产就这些了,一个平淡无奇的网站,基本上所有的东西都能公开访问到,这个网站的目的就是为所有 Elastic 爱好者服务的,供大家交流和沟通的专属平台,所以请各位黑客大侠不要再扫描和攻击啦,画一个简单的拓扑图如下所示:

basics_v3

作为一个合格的网管,除了重启服务器之外,还必须要保证网站的正常运行,所以了解网站的运行情况就变成了一个需要解决的首要问题,我们可以先把任务具体列一下:

  • 网站是否正常访问,各项服务有没有挂
  • 网站访问情况如何,用户访问速度如何
  • 网站访客统计分析,访客相关数据分析
  • 服务器的各项指标,详细指标监控分析
  • 服务器的各项服务,日志集中分析处理
  • 服务器是否很安全,有没有黑客来造访
  • 数据是否安全备份,有没有定期测试过

实在编不下去了,话说对的还蛮齐。说人话就是监控起服务器的各项指标和收集服务的日志,然后出几个分析的 Dashboard,监控报警整起来。

技术选型

结合社区监控场景,需要的工具主要是如下几个:

监控数据存储:Elasticsearch

Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。简单易用,用户众多,性能优良,久经考验,支持单节点部署到虚拟机,并可随着业务增长无缝伸缩扩容至上千个节点规模的集群,PB 级别数据也不在话下。

日志数据和指标监控数据都能放,通过集中式存储所有的这些时序型数据,可以快速方便的对这些数据进行分析和关联,实在是排障运维和性能调优的不二选择,你如果还不知道 Elasticsearch,那我只能说你真的是 out 了。

日志数据收集:Filebeat

Elastic Beats 家族的一员,Go 语言编写,轻量级,无依赖,这样就可以很方便的完成收集端的部署,所以如果你的场景和我一样, 可以优先使用 Filebeat 代替 Logstash 来收集日志,当然如果有日志的进一步加工,可以让 Filebeat 把数据发送给 Logstash,然后 Logstash 处理完之后再发送给 Elasticsearch。

Filebeat 使用很灵活,可以指定你的日志路径来进行收集,还可以对数据进行预过滤,对于一些常见的监控需求,Filebeat 以模块的方式替你打包好了一切,如:日志路径配置、解析规则、机器学习的任务,甚至还自带 Dashboard,简单几个操作,就可以完成从数据收集到最终可视化分析的所有工作。

指标数据收集:Metricbeat

我们这次需要监控的服务器都是一些常规的指标,而 Metricbeat 刚好都支持这些指标的收集。Metricbeat 同样也是 Elastic Beats 家族的一员,同样也是开源的。定位是一个轻量级的监控指标采集器,采用 Go 语言编写,同样提供的是一个很小的无依赖的二进制文件包,能够收集服务器(Linux、Windows、Mac)本身的运行指标,如: CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据等,还能获取服务器上面的各项服务的运行指标,常见的如: Apache、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus、Redis 等都有直接支持,并且内置了 Elasticsearch 索引和 mapping 设置,以及 Ingest pipeline 设置,还提前预置了不少 Kibana 的 Dashboard,开箱即用、即分析。

数据分析展现:Kibana

和 Elasticsearch 工作的最佳拍档,结合 Elasticsearch 的实时分析能力,可以非常方便的对各种数据进行搜索和分析,你可以灵活的自定义的各种图形展现和 Dashboard,不用编写一行代码,即可进行数据分析,除了分析,还整合了 Elastic Stack 的各个产品的管理功能,作为 Elastic Stack 的图形交互终端。

除了上面这些工具,后续我们还可以考虑使用 Auditbeat 来收集服务器的安全行为日志,使用 Heartbeat 来监控各个服务的端口是否正常,我们先完成基本的监控之后,再慢慢将这些加上。

可以看到,我们没有用到 Logstash。是的,这个规模的监控,可以不考虑 Logstash,这样我们可以做到架构简单和足够的轻量级。

上面列的这些软件都是 Elastic 家族的产品,并且都是开源的,所有的源码都在:https://github.com/elastic/

部署方案

在收集数据之前,我们需要明确我们数据放在哪里,毫无疑问,所有的数据都将放在 Elasticsearch 里面,不过 Elasticsearch 不能部署在 Elastic 中文社区的这台服务器上面,一个是资源的限制,另外一个是基于安全的考虑,如果 Elastic 社区的服务器挂了,数据不光收不到,连什么时候挂的都不知道。所以我们需要把 Elasticsearch 服务搭建在别的地方,有多种选择:

  • 使用 Elastic Cloud,很方便就能开通,缺点国内访问速度慢,暂时还没开放机器学习的功能。
  • 使用阿里云的 Elasticsearch,Elastic 官方合作伙伴,国内唯一包含 X-Pack 的完整功能的 Elasticsearch 云服务,国内访问速度快。
  • 自己搭建的 Elasticsearch 集群。

使用阿里云的 Elasticsearch 无疑很方便,不过我家里刚好有一台服务器,型号 HP Gen8,16GB 内存,上面运行了 SmartOS,跑几个 zone 很轻松,每天用来备份社区的数据库,再来起一个 Elasticsearch 服务也很方便,通过路由器将内网 IP 映射出去,让社区服务器将监控数据发送到这台服务器上面来,安全上面,需要保证这台服务器不被黑客攻击,需要做一些必要的访问控制,可以使用 X-Pack 的身份验证,结合 IP 白名单功能,只允许内网和 Elastic 中文社区服务器的 IP 访问。我们将之命名为:Ops Center,方便后面招呼。

可以看到,Elastic 社区服务器除了启动 Filebeat 和 Metricbeat 之外,不需要额外做什么服务器本身的设置。

这里画一个简单的部署拓扑图,方便理解:

basics_v3

本篇就写到这里,未完待续。

作者介绍

曾勇(Medcl)
Elastic开发工程师、Elasticsearch中文社区管理者、阿里云MVP

在分布式搜索、高性能、高可用架构、自动化运维等方面积累了超过七年的经验。曾勇是Elasticsearch国内首批用户,自2010年起就开始接触Elasticsearch并投入到生产环境中使用,并编写过一系列的中文处理相关的插件。

加入钉钉技术讨论群

dingQR

阿里云Elasticsearch已正式发布啦,Elastic开源官方联合开发,集成5.5商业版本XPack功能,欢迎开通使用。
点击了解更多产品信息

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
5月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
5月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1074 2
Spring Boot 3.x 微服务架构实战指南
|
6月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
815 7
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
436 3
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
8月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
891 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1724 71
从单体到微服务:如何借助 Spring Cloud 实现架构转型

热门文章

最新文章