简单来说,就是如何通过如下的一些平台组合,满足运维的需求。目的:提高自动化、标准化,积累经验,减少人工投入,降低故障率。
有时候运维和监控平台的运行是一个矛盾体,如在变更时要求尽量减小对在线服务的影响,那么就要求占用资源尽量少(如网络、CPU、磁盘等);当出现故障需要处理时,
基本功能:日志审计、权限管理;高级功能:高可用、服务降级 (如OSS不可用) 。
基础运维基础平台,用于提供统一运维工具,提供运维、变更、应急标准化流程,其难点在于如何保证数据一致性。
元数据管理,主机管理、业务拓扑、资源池管理、网络设备。【高可用】
1. 元信息。产品、主机、IDC、网络,任务中心(IP扫描、数据同步等任务) Region->Category->Service->Component
1.1 主机元信息:
主机信息。Alias、Tags、SN、采购时间、过保时间、业务分组、备注。
业务状态(在线、离线)、物理状态(正常、故障、下架)、保修状态(在保、过保)。
操作系统。Hostname(主机名 uname -n)、Kernel(内核版本 uname -s + uname -r)、
Version(内核版本 uname -v)、Arch(内核平台 uname -m)、OperationSystem(操作系统 uname -o)
处理器。缓存大小、物理核、逻辑核、主频、型号、厂商。
内存。物理内存交换区。
磁盘信息。
网络。MAC、IP、网卡信息。
1.2 域名信息
URL、业务分组、主机地址、TTL、状态、备案情况、CDN类型。
1.3 公网IP信息
IP、服务商、业务分组、关联域名。
1.4 网络设备
SN、分类、主机名、业务分组。
1.5 业务信息
名称、类型、上线时间、资源使用数、服务依赖。
2. 提供REST-API接口供用户访问,例如当前主机的信息。
3. 任务管理。提供常见的基本任务操作,如:
3.1 网段周期扫描,自动发现未管理主机,通常是在业务已经发展一段时间之后。
3.2 数据采集。周期更新、校验CMDB数据,可以通过Agent采集,或者从其它服务同步。
4. 容量资源、资产管理。提供管道服务,执行命令、文件下发、信息采集、任务调度(服务端)。【稳定】 (开源产品有Ansible、SlatStack等)
1. 自管理,初始化(如通过Ansible安装、安装脚本)、自升级(通过简单稳定子程序监控)、状态、版本。
1.1 插件管理,支持场景包括:周期执行(命令、脚本);
1.2 进程管理,主要是子进程的管理(监控、日志、安全、文件等),包括启停、状态检测等;
1.3 数据查询,提供标准查询接口,例如:磁盘、内存、内核等;
1.4 应急处理,主要是自杀退出。
2. 特性,主要是自身的一些特性设置。
2.1 资源限制,优先使用cgroup做资源隔离,其次周期检测;
2.2 任务并发控制、优先级;
2.3 特殊权限的控制,可以通过Linux中的Capability机制;
2.4 签名机制、通讯管道密文加密;
2.5 IP白名单,命令白名单;
3. 状态检测,支撑状态视图(含子进程状态),一般有PING/AGENT/SUB-MODULES,其状态信息保存在缓存中,在升级时会有频繁更新。
4. 任务类型。
4.1 命令下发。同步任务、异步任务、标准查询(类似SaltStack的Grain)。
4.2 管理任务。自身配置管理、插件配置管理。
5. 提供统一接口查询系统信息。
5.1 用户信息。
A) 所用用户信息getpwent(),密码是否过期,用户是否被锁;
B) 非系统用户信息(默认);
C) 指定UID/GID,用户名、分组名查询getpwuid()/getgrgid()。
5.2 系统版本。
A) 内核指标信息 uname();
B) 主机名 gethostname()。
5.3 内存信息。A) RAM信息;B) Swap信息。
5.4 磁盘信息。
6. 测试用例。
6.1 资源继承,通过lsof;
6.2 文件描述符是否泄露;
6.3 命令执行超时、交互命令、返回内容过大、Unicode支持;
6.4 大批量操作。
7. 高级特性。
7.1 自动扩容,可以直接根据默认获取数据。作业管理,包括了任务下发、任务调度、并发管理、任务编排、巡检。【可降级】(Airflow)
1. 任务下发用于同时处理多台主机,建议提供【高可用】,在有其它脚本或者可替换工具时【可降级】。
2. 常见任务场景。
2.1 发布变更,服务器分组批量配置(分组规则包括版本、业务、机房等);
2.2 数据库自动备份;
2.3 大文件下发、用户管理;
2.4 巡检(账号扫描、安全扫描)。
3. 特性。超时重试、并发分组控制、密钥管理、装机服务、软件部署,一般在安装部署时使用。【可降级】
1. 部署标准流程控制,支持蓝绿部署、A/B测试、灰度发布等部署方式。
2. 针对不同的类型配置不同的安装模板,例如HAProxy、MySQL、PostgreSQL、Nginx等。软件仓库,包括了系统OS、CICD部署等。【可降级】
1. OS包基本仓库。配置管理,软件配置、主机自发现。【高可用】(Disconf)
监控平台,其目标是提高故障发现率;难点: 存储、告警;关键特性:提供可靠实时告警,故障回溯数据支撑,容量评估基础数据。
上报的指标通常用作告警设置以及数据展示;可以分为主机监控、应用监控(APM)、网络监控、公共组件监控。
按照优先级可以按照如下步骤执行:1. 主机单机监控、告警、通知;2. 组件对比、环比、APM;3. NOC(监控大屏)、故障树;4. 智能监控运维。
监控客户端。【稳定】(Collectd)
1. 系统监控指标上包。
1.1 只有一个.so即可,内置types.db以及默认配置;可以通过命令行保存成配置文件。
1.2 支持参数动态修改。
1.3 支持插件启停。
1.4 插件的动态加载。
2. 数据采集异常上报。
3. SuperAgent 内网拨测。Agent(Active/Inactive)、SNMP、JMX、SSH、HTTP、UDP、TCP。
4. StatsD 协议。每次只能上报一个指标,对于类似成功率无法计算。
4.1 上报是嵌套在代码逻辑中的,通过UDP协议,即使StatsD服务不可用,不会影响原有代码逻辑。日志采集客户端。【稳定】(Logstash)
1. 基于Inotify。告警,告警规则、告警过滤。【高可用、不降级】(Zabbix)
1. 告警规则。主机名支持前缀匹配,考虑性能不支持全文匹配;通过tag设置规则。
1.1 简单阈值判断。
1.2 移动平均处理。
2. 告警聚合。预告警信息保存,方便回溯。
2.1 迟滞处理,用于过滤掉在阈值范围内的波动情况。
2.2 多次命中,实际就是连续预告警多次后发送告警,用于过滤噪声。可使用时序数据库 InfluxDB、OpenTSDB 等。
通知,邮件、SMN、手机。【高可用、不降级】
1. 通知确保可达,信息不重复,消息中间件可以采用RabbitMQ。视图展示,主机视图、服务视图、组件视图。【可降级】
1. 视图。主机视图、服务视图(调用链)、组件视图(数据库)。
1.1 组件通常是针对一些公用服务的监控,不同类型通常展示的视角也有所不同,例如HAProxy、Nginx、MySQL等。
2. DashBoard 大盘展示,包括了业务大盘、报错大盘。
3. 配置中心。包括了监控的绑定。
4. 告警中心。可以处理告警回溯、抑制等。业务调用链,基本都是参考 Google 的 Dapper 论文实现,业界按照侵入性排序为 Pinpoint->Zipkin(Java)->CAT,其它的参考 Zipkin 的 Jaeger(Golang) 。
This Site was built by Rimond, generated with Jekyll, and hosted on GitHub Pages
©2013-2018 – Rimond