From b1138fd9a0d052973c9350bcac65dfd5e2551220 Mon Sep 17 00:00:00 2001 From: diandian Date: Thu, 14 Dec 2023 23:33:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'MD'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MD/Logstash-过滤.md | 89 +-------------------------- MD/互联网公司架构规模.md | 38 ++++++++++++ MD/日志分析集群面试题.md | 53 ++++++++++++++++ MD/项目案例.md | 126 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 218 insertions(+), 88 deletions(-) create mode 100644 MD/互联网公司架构规模.md create mode 100644 MD/日志分析集群面试题.md create mode 100644 MD/项目案例.md diff --git a/MD/Logstash-过滤.md b/MD/Logstash-过滤.md index 66132cc..5441a67 100644 --- a/MD/Logstash-过滤.md +++ b/MD/Logstash-过滤.md @@ -48,94 +48,7 @@ output { } ``` -注意: - -```shell -USERNAME [a-zA-Z0-9._-]+ -USER %{USERNAME} -EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+ -EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME} -INT (?:[+-]?(?:[0-9]+)) -BASE10NUM (?[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+))) -NUMBER (?:%{BASE10NUM}) -BASE16NUM (?(?"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``)) -UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12} -# URN, allowing use of RFC 2141 section 2.3 reserved characters -URN urn:[0-9A-Za-z][0-9A-Za-z-]{0,31}:(?:%[0-9a-fA-F]{2}|[0-9A-Za-z()+,.:=@;$_!*'/?#-])+ -# Networking -MAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC}) -CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4}) -WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}) -COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}) -IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)? -IPV4 (?[A-Za-z]+:|\\)(?:\\[^\\?*]*)+ -URIPROTO [A-Za-z]([A-Za-z0-9+\-.]+)+ -URIHOST %{IPORHOST}(?::%{POSINT:port})? -# uripath comes loosely from RFC1738, but mostly from what Firefox -# doesn't turn into %XX -URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%&_\-]*)+ -#URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)? -URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]<>]* -URIPATHPARAM %{URIPATH}(?:%{URIPARAM})? -URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})? -# Months: January, Feb, 3, 03, 12, December -MONTH \b(?:[Jj]an(?:uary|uar)?|[Ff]eb(?:ruary|ruar)?|[Mm](?:a|ä)?r(?:ch|z)?|[Aa]pr(?:il)?|[Mm]a(?:y|i)?|[Jj]un(?:e|i)?|[Jj]ul(?:y)?|[Aa]ug(?:ust)?|[Ss]ep(?:tember)?|[Oo](?:c|k)?t(?:ober)?|[Nn]ov(?:ember)?|[Dd]e(?:c|z)(?:ember)?)\b -MONTHNUM (?:0?[1-9]|1[0-2]) -MONTHNUM2 (?:0[1-9]|1[0-2]) -MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9]) -# Days: Monday, Tue, Thu, etc... -DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?) -# Years? -YEAR (?>\d\d){1,2} -HOUR (?:2[0123]|[01]?[0-9]) -MINUTE (?:[0-5][0-9]) -# '60' is a leap second in most time standards and thus is valid. -SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?) -TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9]) -# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it) -DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR} -DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR} -ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE})) -ISO8601_SECOND (?:%{SECOND}|60) -TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}? -DATE %{DATE_US}|%{DATE_EU} -DATESTAMP %{DATE}[- ]%{TIME} -TZ (?:[APMCE][SD]T|UTC) -DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ} -DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE} -DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR} -DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND} -# Syslog Dates: Month Day HH:MM:SS -SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME} -PROG [\x21-\x5a\x5c\x5e-\x7e]+ -SYSLOGPROG %{PROG:program}(?:\[%{POSINT:pid}\])? -SYSLOGHOST %{IPORHOST} -SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}> -HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT} -# Shortcuts -QS %{QUOTEDSTRING} -# Log formats -SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}: -``` + diff --git a/MD/互联网公司架构规模.md b/MD/互联网公司架构规模.md new file mode 100644 index 0000000..3d542e2 --- /dev/null +++ b/MD/互联网公司架构规模.md @@ -0,0 +1,38 @@ +

互联网公司架构规模

+ +作者:行癫(盗版必究) + +------ + +小型互联网公司的IT架构规模会因公司的具体需求和业务模式而有所不同,但通常包括以下基本组件和规模: + +1. **硬件基础设施**: + - 服务器:小型公司可能会使用数台物理服务器或虚拟机来托管其应用程序和数据库。 + - 存储:通常采用网络附加存储(NAS)或云存储服务,以存储数据和备份。 + - 网络设备:包括路由器、交换机和防火墙,以确保网络的稳定性和安全性。 +2. **云服务**: + - 很多小型公司选择采用云计算服务(如AWS、Azure、Google Cloud)来托管应用程序和存储数据,这样可以减少硬件成本和提高可伸缩性。 +3. **操作系统和虚拟化**: + - 服务器通常运行Linux或Windows操作系统,并可能使用虚拟化技术(如VMware或Docker)来隔离应用程序和服务。 +4. **应用程序**: + - Web应用程序:用于公司的在线业务,如网站、电子商务平台等。 + - 数据库:通常会使用关系型数据库(如MySQL、PostgreSQL)或NoSQL数据库(如MongoDB)来存储数据。 + - 通信工具:如电子邮件服务器、即时消息应用程序等。 + - 协作工具:如文档管理、项目管理、团队聊天工具等。 +5. **安全性**: + - 防火墙和入侵检测系统(IDS):用于保护公司的网络和数据。 + - 访问控制:确保只有授权用户能够访问敏感数据和系统。 +6. **监控和日志**: + - 监控工具:如Prometheus、Grafana等,用于实时监控系统性能和健康。 + - 日志管理:用于记录应用程序和系统事件,如Elasticsearch和Logstash。 +7. **备份和灾难恢复**: + - 定期备份数据,以确保在数据丢失或硬件故障时能够快速恢复。 + - 制定灾难恢复计划,以准备面对更严重的系统中断。 +8. **网络拓扑**: + - 常见的网络拓扑包括单层或多层架构,以确保网络流量的流畅和安全。 +9. **可伸缩性**: + - IT架构应具备可伸缩性,以应对业务增长。这可能包括负载均衡器和自动扩展机制。 +10. **成本控制**: + - 确保IT支出在公司的预算范围内,并考虑采用开源软件或云计算服务来减少成本。 + +需要强调的是,每家公司的IT架构都会根据业务需求和预算来定制,所以在规划和实施IT架构时,需要综合考虑多个因素。随着公司的发展,IT架构可能需要不断优化和升级。 \ No newline at end of file diff --git a/MD/日志分析集群面试题.md b/MD/日志分析集群面试题.md new file mode 100644 index 0000000..6ee6552 --- /dev/null +++ b/MD/日志分析集群面试题.md @@ -0,0 +1,53 @@ +

日志分析集群面试题

+ +作者:行癫(盗版必究) + +------ + +1.请解释ELK日志分析集群的组件,以及它们各自的作用是什么 + +答案:ELK日志分析集群由三个主要组件组成: + +Elasticsearch:用于存储和索引大量的日志数据,并提供高度可扩展的搜索和分析功能。 + +Logstash:用于数据收集、处理和转换,以将各种日志数据源标准化并发送到Elasticsearch。 + +Kibana:用于可视化和查询存储在Elasticsearch中的日志数据,提供用户友好的界面。 + +2.什么是Logstash,它的主要功能是什么 + +答案:Logstash是一个开源的数据收集和传输工具,用于将不同格式的日志数据从各种源头(如文件、网络、数据库等)收集、转换和发送到Elasticsearch或其他目的地。它的主要功能包括数据收集、数据处理和数据转换,以确保日志数据在存储和分析过程中的一致性和可用性 + +3.如何处理日志数据中的结构化和非结构化信息 + +答案:Logstash可以处理结构化和非结构化信息。对于结构化数据,您可以使用已知的解析器和过滤插件(如grok插件)来提取字段和值。对于非结构化数据,您可以使用正则表达式、JSON解析器或其他自定义插件来提取有用的信息。一旦数据被提取,它可以被标准化并发送到Elasticsearch以供进一步分析 + +4.什么是Elasticsearch索引模板,它的作用是什么 + +答案:Elasticsearch索引模板是一种用于定义索引配置的模板,它在新索引创建时自动应用。这可以用于确保新索引遵循特定的映射、设置和分片配置,以确保数据的一致性。索引模板通常基于索引名称、模式、别名等条件进行匹配 + +5.请解释Elasticsearch的分片和复制是什么,以及如何选择合适的分片和复制数 + +答案:Elasticsearch的分片是将索引数据分成更小的块,以实现并行处理和数据存储。复制是数据冗余的机制,用于提高高可用性和容错性。选择合适的分片和复制数取决于数据量、查询负载和性能需求。通常,分片数应该足够多,以充分利用集群中的节点,而复制数应该根据高可用性需求来配置 + +6.请解释Kibana的可视化仪表板是什么,以及如何创建自定义仪表板 + +答案:Kibana的可视化仪表板允许用户创建和定制各种图表、表格和信息窗口,以可视化和监控日志数据。用户可以将多个可视化元素组合成仪表板,并应用筛选器、时间范围等,以探索和分析数据。要创建自定义仪表板,用户可以在Kibana中使用仪表板编辑器,选择可视化元素并配置其属性 + +7.如何确保ELK集群的安全性和数据隐私 + +答案:确保ELK集群的安全性和数据隐私是至关重要的。措施包括: + +访问控制:使用身份验证和授权机制限制对ELK组件的访问。 + +数据加密:配置TLS/SSL来加密数据传输。 + +安全插件:使用Elastic Stack的X-Pack或其他安全插件来提供安全特性,如角色和权限管理、审计日志等。 + +防火墙规则:配置防火墙规则以限制集群的网络访问。 + +定期更新:及时更新ELK组件和操作系统以修补已知的安全漏洞。 + +日志审计:启用审计日志以跟踪对集群的操作和访问。 + +监控和警报:监控ELK集群的安全性,设置警报以应对潜在的威胁。 \ No newline at end of file diff --git a/MD/项目案例.md b/MD/项目案例.md new file mode 100644 index 0000000..536a7de --- /dev/null +++ b/MD/项目案例.md @@ -0,0 +1,126 @@ +

项目案例

+ +作者:行癫(盗版必究) + +------ + +#### 项目一 + +​ 某公司业务逻辑层Mysql数据库集群架构优化 + +项目描述: + +​ 根据公司业务需求需要对MySQL数据库进行主从复制实时备份,同时为了相应提升 MySQL数据库的读写性能, 决定采用 Mycat 中间件对 MySQL 数据库做读写分离。公司的数据库主库没有做高可用,如果数据库主库宕机那么会导致网站无法正常使用,从而影响业务和用户体验,最终决定使用MHA(mysql+keepalived)高可用方案来解决主库问题。 + +责任描述: + +​ 负责服务器的部署和环境初始化完成对服务的配置 + +​ 高可用集群构建 + +​ 集群环境测试,整理测试过程中的问题 + +​ 编写自动化脚本,撰写技术文档等 + +#### 项目二 + +​ 某公司业务自动化上线 + +项目描述: + +​ 随着公司业务的发展,项目更新迭代逐渐频繁,测试及生产环境代码上线频繁,为了提高开发效率,决定搭建企业级自动化系统CI/CD;实现测试环境和生产环境的持续集成和持续交付 + +项目职责: + +​ 制定项目实施方案 + +​ 确定所需服务器的数量及配置 + +​ 进行系统优化及搭建基础环境 + +​ 构建CI/CD服务并进行配置 + +​ 测试自动化部署系统 + +​ 编写自动化脚本和技术文档 + +#### 项目三 + +​ 架构升级构建日志分析系统EFK + +项目描述: + +​ 随着公司规模不断扩大,业务日志数据不断增长,日志量大增、文本搜索缓慢、多维度查询,定位分析变得越来越困难,无法实时获取或展示业务的具体情况;为了更好的对日志进行分析和处理,公司决定上线EFK日F志分析系统;ELK是一套完整的日志收集、展示解决方案;通过Filebeat数据采集代理(Agent)将获取到的数据发给ES或者通过Logstash发给ES,然后进行后续的数据分析活动,用Kibana分析并展示。 + +项目职责: + +​ 参与系统的规划和实施,EFK简单、轻量、易扩展 + +​ 通过ELK可分布式的收集,检索以及完美的展示功能,解决集群运维中海量日志的收集,监控、预警和分析的问题 + +​ 测试服务的可用性,交付使用 + +​ 总结实施文档、项目实施和维护手册 + +#### 项目四 + +​ 业务逻辑层架构升级Redis缓存服务器部署 + +项目描述: + +​ 由于业务逻辑层集群的数据访问量很多,直接访问后端Mysql服务器,导致数据库压力过大,访问速度很慢。为了缓解数据库的压力,加快访问速度。需要添加缓存服务器,对常用数据进行缓存,提高访问速度。而Redis支持的数据类型多,且支持数据持久化存储,是当前比较火的缓存服务器软件,所以决定采用Redis。 + +项目职责: + +​ 设计架构升级方案 + +​ 构建redis高可用架构 + +​ 集群可行性测试 + +​ 上线生产环境并入业务逻辑层 + +​ 编写自动化脚本及项目维护手册 + +#### 项目五 + +​ 基于zabbix构建企业级监控平台 + +项目描述: + +​ 根据日常运维具体业务需求,完善公司运维体系,现需要对原有监控系统进行升级,实现部署zabbix监控系统平台;利用zabbix实现监控各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的问题; 利用zabbix实现对远程服务器/网络状态的监视,数据收集等。 + +项目职责: + +​ 对现有监控进行总结,完善zabbix监控系统方案 + +​ 构建zabbix监控高可用平台 + +​ 规划监控指标,明确告警媒介 + +​ 规划通知策略,并编写项目文档 + +#### 项目六 + +​ kubernetes云原生平台构建 + +项目描述: + +​ 随着公司的发展,使得业务逐渐的迁移Docker容器上,随着容器越来越多,为了更方便对应用进行管理,在非生产环境构建Kubernetes云原生集群,实现对Docker容器的管理,因设计到业务逻辑层业务调整,故需完成非生产环境的测试,确保业务逻辑层所有业务均可正常运行后,进行生产环境升级。 + +项目职责: + +​ 非生产环境构建kubernetes云原生集群 + +​ 生产环境迁移方案定制 + +​ 测试应用是否可在kubernetes集群运行 + +​ 编写项目文档和自动化运维脚本 + + + + + + +