建设监控¶
一、监控目标¶
明白监控的重要性以及使用监控要实现的业务目标
通常包括以下三点:
- 对目标系统进行实时监控
- 监控可以实时反馈目标系统的当前状态 目标系统硬件、软件、业务是否正常、目前处于何种状态
- 保证目标系统可靠性,业务可以持续稳定运行 有问题时间反馈出来,便于运维人员处理
二、监控方法¶
- 了解监控对象 例如:CPU如何工作?
- 性能基准指标 例如: CPU使用率、负载、用户态、内核态、上下文切换
- 报警阈值定义 例如: CPU负载高的定义,内核态、用户态多少算高
- 故障处理流程 如何更高效处理故障的流程
三、监控核心¶
- 发现问题
- 定位问题
- 解决问题
- 总结问题,对故障原因及问题防范进行归纳总结,避免以后重复出现
四、监控工具¶
-
老牌监控
-
- Cacti
- Nagios
-
smokeping
-
流行监控
-
- Zabbix
- OpenFalcon
- Prometheus+Grafana
- 滴滴开源夜莺Nightingale
- smartping(专用于网络监控)
- LEPUS天兔(专用于监控数据库)
-
自研
-
第三方监控
-
- 监控宝
- 听云
- newrelic
五、监控流程¶
- 采集
通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集
- 存储
各类数据库服务,MySQL、PostgreSQL
- 分析
提供图形及时间线情况信息,方便我们定位故障所在
- 展示
指标信息、指标趋势展示
- 报警
电话、邮件、微信、短信、报警升级机制
- 处理
故障级别判定,找响应人员进行快速处理
六、监控指标¶
硬件监控¶
- 机器硬件:CPU温度、物理磁盘、虚拟磁盘、主板温度、磁盘阵列 IPMI工具无法获取到硬件的状态,可以借助MegaCli工具探测Raid磁盘队列状态 https://www.ibm.com/developerworks/cn/linux/l-ipmi/
系统监控¶
- 主机存活
- CPU、内存、硬盘、使用率
- inode
- 负载
- 网卡出入带宽
- TCP连接数
- 磁盘读写、只读
应用监控¶
MySQL
- 服务可用性
- 内存使用率
- 磁盘使用
- 主从不同步及延迟
- 备份情况
- 连接数
Redis、Redis Cluster
- 负载
- 内存使用率
- 连接数量
- qps
Nginx
-
状态码
-
连接状态信息
-
RabbitMQ
-
PHP-FPM
-
OpenLDAP
-
- 接入IP
-
调用次数
-
Zimbra
-
OpenVPN
-
- 版本信息、当前在线
-
用户、分配IP、客户端连接IP、通过IP获取地址位置、接收发送流量 连接时间 时长 连接ID
-
ELK
-
Graylog
-
GitLab
-
Jenkins
-
MongoDB
-
HAproxy
网络监控¶
- 网络质量
- 公网出口
- 专线带宽
- 网络设备
流量分析¶
日志监控¶
安全监控¶
- URL、API监控
- 自研
- 阿里云方案
性能监控(APM)java|php|go|nodejs|分布式链路追踪¶
- PinPoint
- Zipkin
- SkyWalking
- CAT、Jaeger
业务监控¶
电商业务为例:
- 每分钟产生多少订单
- 每分钟注册多少用户
- 每分钟多少活跃用户
- 每天有多少推广活动
- 推广活动引入多少用户
- 推广活动引入多少流量
- 推广活动引入多少利润
其他¶
- SSL证书监控
- 存活性 进程是否还在,端口监听、Log滚动
- 健康指标 MQ消息堆积量
- 接口监控 API成功率,延迟情况,QPS等等
七、监控报警¶
- 邮件
- 短信
- 钉钉、微信、企业微信等其他即时通信软件
- 电话
八、报警处理¶
故障自愈: 服务器宕机自动启动。利用软件机制supervisor,systemd或者自定义脚本实现
九、综合监控¶
硬件监控¶
通过SNMP来进行路由器交换机的监控、其他内容使用IPMI实现。如果都是公有云,可以忽略这部分内容。案例:Open-Falcon监控H3C-ER3260G2路由器
系统监控¶
服务监控¶
-
服务自带
-
- Nginx自带status模块
- PHP相应status模块
-
MySQL利用percona官方工具进行监控
-
通过自定义方法获取数据
-
- MySQL show global status xxx;
-
Redis info指令信息
-
网络监控(混合云架构)
-
- smokeping
-
smartping
-
安全监控
-
- 云服务直接用云安全组即可,或者补充本机iptables
- 硬件防火墙
-
Web服务使用Nginx+Lua实现Web层面的防火墙,或者Openresty
-
日志监控 ELK、Graylog实现异常日志,错误日志关键字的监控
-
业务监控 确定监控指标,监控起来,业务不同各不相同
-
流量分析 建议使用百度统计,google统计,商业,研发嵌入代码实现。
或者使用piwik
-
可视化 dashboard
-
自动化监控 通过API,批量操作
十、监控总结¶
完整的监控系统,需要对业务有详尽的了解,软件只是手段。