a. 系统监控,包括CPU、内存、磁盘、网络等,能够对系统级别的风险进行报警,目前已经实现并线上运行 b. 服务进程及端口监控,能够监控服务异常退出,目前已经实现并线上运行 c. 自定义脚本程序模拟接口登陆访问结合Zabbix监控日志文件功能,能够对自定义的错误进行报警,目前已经实现并线上运行 d. 以上默认系统监控会自动添加,服务进程端口及自定义监控有需要时添加
a. 日志包括服务正常访问日志及错误日志 b. 访问日志可以收集客户端IP、响应时间、HTTP状态码、发送字节、Referer、Agent等,也可以自定义字段 c. 错误日志可以收集自定义字段错误字段,例如登陆失败、连接超时、后端无响应等 d. 以上需要提前准备好日志及定义好日志字段
3. 指标分析
1 2 3
a. 访问日志指标,例如HTTP状态码统计、响应时间分布、其他字段统计 b. 错误日志指标,例如一段时间内某某错误出现的次数、一段时间内各项错误比例分布、错误出现趋势、错误出现时间、错误出现区域等 c. 以上都可以通过Elasticsearch支持的Lucene语言或者Kibana Dev Tools编辑DSL语言进行精确或模糊匹配来分析
4. 报表制作
1 2
a. Kibana通过visualize及dashboard来实现饼图、趋势图、表格、直方图、地图、Metric、热力图、Markdown等形式的报表 b. Grafana结合Data Sources及Plugins来实现饼图、趋势图、直方图、Html等形式的报表
5. 异常报警
1 2 3
a. Elastalert通过Elasticsearch Python API编辑报警策略实现报警,例如一段时间内匹配某项DSL语法结果出现的次数大于或小于某值报警、两段对比时间段内匹配结果的值对比后大于或者小于某一基数、一段时间内匹配的值进行聚合运算后大于或小于某值报警、其他自定义语法获得结果异常报警 b. Grafana可以对趋势设置Alert阈值并通过邮件报警 c. 以上工程量都比较大而且难度系数也不小但都能实现
二、应用防攻击
1.主要是基于Nginx与Iptables实现(目前CLB不支持这些配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
a. 限速 利用ngx_http_limit_conn_module及ngx_http_limit_req_module模块,首先在http区域里定义好限速限制连接数策略,再在具体的域名上使用,具体限速及限制连接数需要根据实际情况评估,超过的连接会默认直接返回503不转发到袁征 b. 屏蔽IP 方法一使用ngx_http_access_module模块allow、deny控制,缺点是通过remote_addr来屏蔽IP的,支持CIDR等格式地址 方法二使用自定义客户端IP变量$clientRealIp来屏蔽,IP需要写成正则形式的,支持IP穿透,所以通过CDN的域名这种方法也能生效 方法三自定义屏蔽IP,结合Elasticsearch查询异常IP可自动化屏蔽IP,前两种方法易于实现但是只能手动屏蔽 c. 屏蔽reffer 例如屏蔽某些流氓网站友情链接 d. 屏蔽agent 例如屏蔽爬虫agent e. 屏蔽url 例如屏蔽有漏洞url禁止外部访问 f. 其他自定义 设置故障域,怎样都防不住可以通过error_page功能,转发流量到备用源站