导读

云信公有云系列产品已经稳定运行数年,随着企业对信息安全和数据隔离愈加重视,云信产品私有化课题必然成为云信发展过程中一个的重要分支。依赖虚拟化和容器技术的日臻成熟,云信业务系统已经全面完成私有化,并且在多家企业内部稳定运行,成为云信产品线重要的一部分。

在公有云的服务中,云信日志信息采集和系统监控报警是依赖网易多年技术沉淀下来的自研平台,然而对于云信私有化产品来说这套自研平台显得过于繁杂,同时相对于公有云,私有化产品由于搭建在企业内部的特殊性往往具有网络上的隔离,云信技术支持人员不易直接访问私有化环境,而企业运维人员对云信系统了解程度又相对有限。因此私有化产品需要搭建一套更轻量级同时又具备高可用的日志和监控平台来向企业内部的运维人员实时展示服务状态和运行数据并作出预警。

本文将详述云信私有化日志监控服务端架构,如果你需要为自己的产品搭建日志采集和监控平台,这篇文章可以作为参考。

云信私有化主要技术

在开始介绍日志监控平台,我们先初步了解一下云信私有化整体方案以及所使用的技术栈。现在云信公有云产品本身涉及的模块众多,技术架构和编程语言不同,依赖的环境和网络也有所区别,因此我们在云信私有化中使用docker来实现各个模块的封装和运行时资源隔离;在容器的部署和管理上我们没有选择经常在大型容器云平台中出现的Kubernetes,而采用了更轻量级的运维部署工具ansible,主要有两个原因:

一是私有化企业用户量级绝大大多数在10w以下级别,这对于企业和企业延伸服务已经是非常大规模,因此在私有化过程中,企业能提供的资源往往有限,可能只有几台甚至一台服务器,而部署一套Kubernetes会为企业带来额外的资源开销;

二是服务集群实时动态调整在私有化交付后对于企业自身运维人员往往并不需要,企业需要的只是在约定规模下云信能够高效运行,Kubernetes所提供的资源调度和节点控制对于私有化显得过于复杂和沉重。因此我们选择通过Ansible协同的多机同步控制处理框架并结合python扩展开发可视化部署管理平台,实现云信私有化的统一快速部署和管理。

日志和监控平台主要需求

1.高性能:满足云信私有化方案中运行数据和日志收集;

2.高可用保障:日志平台具备一定高可用能力,单一节点或网络出现故障,业务系统有能力继续采集和监控;

3.平台实时监控和报警:可视化的系统和模块信息监控,当系统网络资源,服务状态出现异常时及时做出报警;

4.日志系统安全性:保障平台日志和运营数据安全;

ELK基本组件简介

下面是通过一张基本的ELK最基本架构图来说明一下ELK Stack的主要组件和架构

Elasticsearch是个开源分布式搜索引擎,具有分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等特点。作为ELK的核心组件负责日志存储、检索和分析

Logstash 是一个具有实时渠道能力的数据收集引擎,在filter中可以很好的对数据进行预处理。

Kibana 是一款专门为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。

Metricbeat&Filebeat

Beats负责ELK协议栈中数据采集部分,收集系统信息和日志向 Logstash 或 Elasticsearch 发送数据。Filebeat主要收集日志文件,可以初步检索和过滤日志信息,Metricbeat从系统和服务收集指标。

私有化日志平台架构

私有化所有模块均为容器化部署。由于部署在企业内部,技术支持维护不便,因此每个模块都要具备高可用特性。ElasticSearch采用集群化部署,es集群部署已经有成熟的解决方案,可参照官网或简书等网上内容。在nginx的部署上采用keeplived通过虚拟IP地址(VIP)实现高可用,备用服务的keepalived在主机宕机的情况会做出检测并自动接管VIP资源继续提供服务。

在大型企业中或使用场景中有明显业务高峰的企业,在实施部署时可增加高性能消息中间件kafka在logstash之前作为消息队列缓冲。

使用Supervisor管理elk进程

除了在部署方案中支持组件高可用方案,私有化采用Supervisor作为进程管理,并随elk组件一同封装在镜像中。当所管理的进程意外挂掉,Supervisor会自动将其重新拉起,很方便的做到进程自动恢复的功能。

Supervisor配置文件实例

使用nginx IP白名单实现访问控制

Elk三大组件本身并不具有太多的安全相关设置,官方的相关的X-pack组件目前虽然已经开源,但是免费版功能使用上有很多限制,因此我们需要通过引入Nginx控制访问IP白名单来对日志平台进行安全加固。这一点也可以通过宿主机配置防火墙来实现,但是在私有化服务中,企业对于宿主机的防火墙管理差异很大,有些企业对防火墙管理基本一片空白,因此在镜像中使用Nginx作为反向代理在服务层进行白名单管理,使容器中的elk组件和Nginx作为整体提供服务是一个不错的选择,ELK组件均绑定本机的IP地址,Nginx作为对外访问出口,相当于为组件提供了白名单管理功能。

容器结构如下,与上一段内容相比加入nginx管理IP白名单,同样是使用supervior对进程进行管理。

除了管理白名单,elasticsearch还有一些其他工作可以加固安全

  • 修改默认elasticsearch的集群名;
  • 过期索引自动清理,确保使用磁盘空间;
  • ES配置绑定内网ip,防止多网卡时数据走外网网卡;
  • 关闭ES中使用接口通过正则表达式批量删除索引,配置项如下;

开发定制化的系统信息收集工具

通过对Metricbeat进行功能扩展是一个私有化中收集模块信息的好途径。Metricbeat作为ELK Stack用来采集和统计系统和应用信息的工具,已经整合包括系统信息,常用中间件信息,进程级别资源使用数据等模块,并且集成了精美的kibana图表。Metricbeat使用GO语言编写,接口清晰,适合通过二次开发增加个性化业务信息采集模块。

我们在二次开发过程中很好的利用公有云服务原有的服务监控接口和信息采集脚本以及系统指令,在模块中只封装了几个不同类型的指令调用接口,通过配置文件来配置模块具体调用脚本或指令并解析数据结果,把二次开发代码量降到最低。

在容器化过程中,metricbeat和filebeat两个采集模块均被集成在基础镜像中,其他镜像均基于基础镜像构建。在部署创建容器时,根据业务来生成的配置控制不同的采集指标

使用ElastAlert作为平台报警

ElastAlert是一款开源的使用python开发的elasticsearch报警工具,部署使用时需要注意所对应elasticsearch版本。使用过程中推荐一个elastalert的扩展API模块,搭配kibana可视插件可以在kibana直接编辑报警规则。

私有化报警内容涵盖四大方面,第一部分是服务器报警,主要有宿主机负载、cpu、网卡流量、磁盘、内存等指标;第二部分是中间件数据库基础服务层报警,例如mysql主从同步不一致,rabbitmq队列超限等内容;第三部是进程和JVM层,比如进程意外终止或重启,JVM gc频率过高;第四部分涉及到具体业务,自定义模块采集数据异常。

总结

企业私有云由于运维方面的因素对整体服务的高可用性提出了更高的要求,因此系统的监控和报警在私有化中就更显得重要。基于成熟的ELK Stack的搭建的日志收集和报警平台,承担了云信私有化中的日志和运行数据收集和保存,实时监控云信服务和系统情况,向运维负责人发送异常报警,为云信系统运行提供重要保障。

同时Elasticsearch作为高效的搜索引擎作用不仅于此,我们基于es的海量数据搜索统计能力,对平台日常运行数据进行二次分析和整理,通过kibana出色的图表展示,快速开发出一套的日常运行数据大盘,为决策者在企业产品研发方向提供了数据依据。

云信私有化方案中如何搭建高可用的日志和监控平台?相关推荐

  1. 在 Kubernetes 中, 搭建高可用集群

    永久地址:在 Kubernetes 中, 搭建高可用集群(保存网址不迷路

  2. 如何搭建高可用Redis服务

    作者:漫步CODE人生 来自:cnblogs.com/scode2/p/8670980.html 题记 基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常 ...

  3. 直播回顾丨神策数据王朋:如何搭建一套高可用的前端异常监控系统?

    本文根据神策数据资深前端研发工程师王朋在神策「大数据技术系列直播课」第二季"前端专题"第四讲的直播整理. 本次分享主要分为三大部分:前端异常监控概述,异常监控的背景意义,以及做一个 ...

  4. 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统

    亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统 1.高并发原则 1.1 无状态 1.2 拆分 1.3 服务化 1.4 消息队列 1.5 数据异构 1.6 缓存银弹 1.7 并发化 2 高可用原 ...

  5. 读书笔记:《亿级流量网站架构核心技术 -- 跟开涛学搭建高可用高并发系统》

    from <亿级流量网站架构核心技术 – 跟开涛学搭建高可用高并发系统> 概述 一个好的设计要做到,解决现有的需求和问题,把控实现和进度风险,预测和规划未来,不要过度设计,从迭代中演进和完 ...

  6. k8s:概念以及搭建高可用集群

    一.k8s概念和架构 1.k8s概述 k8s是谷歌在2014年开源的容器化集群管理系统 使用k8s进行容器化应用部署 使用k8s利于应用扩展 k8s目标实施让容器化应用程序更加简洁高效 2.特性 (1 ...

  7. 搭建高可用mongodb集群(二)—— 副本集

    2019独角兽企业重金招聘Python工程师标准>>> 在上一篇文章<搭建高可用MongoDB集群(一)--配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能 ...

  8. 方案 mysql 优点_mysql高可用方案分析

    低读低写并发.低数据量方案 方案一:双机高可用方案 1.数据库架构图 2.特点 一台机器A作为读写库,另一台B作为备份库:A库故障后B库作为读写库:A库恢复后A作为备库. 3.开发说明 此种情况下,数 ...

  9. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

最新文章

  1. 嵌入式学习笔记--网络打流补充笔记(iperf3应用)
  2. python蜡烛图预测_python tushare股票K线蜡烛图绘制
  3. Win7实用技巧之四拯救桌面行动之Jumplist
  4. 【Lolttery】项目开发日志 (二) 数据库的二三事
  5. i2c通信的详细讲解_【博文连载】SCCB(I2C)初始化时序介绍
  6. Python+tkinter实现任意多层级关系的组合框
  7. C++开发的应用方向有哪些?
  8. python rabitmq_python中RabbitMQ的使用(安装和简单教程)
  9. 图像压缩工具ImageOptim介绍
  10. CO-PA: 获利能力分析配置和业务实践
  11. KDL轨迹规划总结:(1)
  12. 深度学习模型部署学习一
  13. wps不能打印_除了office/wps,还有一些好用的办公软件推荐给你
  14. 眼球追踪技术是VR下一个突破口?
  15. 解决电脑安装mathtype后microsoft office 2016的.ppt文件打不开问题
  16. #Visio#教会你怎么安装和使用 Visio 哦 ~ ~
  17. 数组可以存放实数吗?
  18. JS使用htef访问html文件,法语TEF考试语法及词汇练习.docx
  19. G - A/B Matrix CodeForces - 1360G
  20. 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码

热门文章

  1. AEAI ESB路由转换机制说明
  2. ZOJ3772_Calculate the Function
  3. IOC容器特性注入第一篇:程序集反射查找
  4. 创新式开发探索(一) —— 开篇
  5. 华测服务器进不去系统,华测rtk单点到固定怎么操作步骤
  6. 中公教育计算机网络,计算机考试题库:计算机网络模拟练习题(2)
  7. 探索初级算法学习笔记-快速排序法
  8. 共轭梯度法求解线性方程组
  9. jquery在thymeleaf循环的按钮元素中不能直接用id选择器
  10. 【C++】利用Visual Studio 2008编写C++,Visual Studio 2008的基本使用