服务稳定性及应用防护方案

服务稳定性及应用防护方案

一、 服务稳定性

1. 基本监控

基本监控推荐使用Zabbix,开源分布式企业级监控系统,能满足目前我们监控的需求

a.  系统监控,包括CPU、内存、磁盘、网络等,能够对系统级别的风险进行报警,目前已经实现并线上运行
b.  服务进程及端口监控,能够监控服务异常退出,目前已经实现并线上运行
c.  自定义脚本程序模拟接口登陆访问结合Zabbix监控日志文件功能,能够对自定义的错误进行报警,目前已经实现并线上运行
d.  以上默认系统监控会自动添加,服务进程端口及自定义监控有需要时添加

2. 日志收集

日志收集推荐使用Elastic Stack协议栈,可以满足收集海量日志需求,而且便于后续分析、报表、报警操作

a.  日志包括服务正常访问日志及错误日志
b.  访问日志可以收集客户端IP、响应时间、HTTP状态码、发送字节、Referer、Agent等,也可以自定义字段
c.  错误日志可以收集自定义字段错误字段,例如登陆失败、连接超时、后端无响应等
d.  以上需要提前准备好日志及定义好日志字段

3. 指标分析

a.  访问日志指标,例如HTTP状态码统计、响应时间分布、其他字段统计
b.  错误日志指标,例如一段时间内某某错误出现的次数、一段时间内各项错误比例分布、错误出现趋势、错误出现时间、错误出现区域等
c.  以上都可以通过Elasticsearch支持的Lucene语言或者Kibana Dev Tools编辑DSL语言进行精确或模糊匹配来分析

4. 报表制作

a.  Kibana通过visualize及dashboard来实现饼图、趋势图、表格、直方图、地图、Metric、热力图、Markdown等形式的报表
b.  Grafana结合Data Sources及Plugins来实现饼图、趋势图、直方图、Html等形式的报表

5. 异常报警

a.  Elastalert通过Elasticsearch Python API编辑报警策略实现报警,例如一段时间内匹配某项DSL语法结果出现的次数大于或小于某值报警、两段对比时间段内匹配结果的值对比后大于或者小于某一基数、一段时间内匹配的值进行聚合运算后大于或小于某值报警、其他自定义语法获得结果异常报警
b.  Grafana可以对趋势设置Alert阈值并通过邮件报警
c.  以上工程量都比较大而且难度系数也不小但都能实现

二、应用防***

1.主要是基于Nginx与Iptables实现(目前CLB不支持这些配置)

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功能,转发流量到备用源站

2.第三方腾讯云产品通过网站管家WAF与大禹BGP高防包实现

a.  网站管家WAF高级版放在CLB前面
b.  大禹BGP高防放在WAF前面

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术翻译

Elasticsearch文档和映射

在Elasticsearch的说法中,文档是序列化的JSON数据。在典型的ELK设置中,当您发送日志或度量标准时,它通常会发送到Logstash,Logstas...

1901
来自专栏向治洪

百度地图android studio导入开发插件

百度地图SDK v3.5.0开发包下载地址:http://lbsyun.baidu.com/sdk/download?selected=location 开...

1.1K8
来自专栏逸鹏说道

【推荐】C#线程篇---你所不知道的线程池(4)

线程的创建和销毁都要耗费大量的时间,有什么更好的办法?用线程池! 太多的线程浪费内存资源,有什么更好的办法?用线程池! 太多线程有损性能,有什么更好的办法?用线...

3768
来自专栏owent

理解Raft算法

之前已经有Paxos算法,用于解决分布式系统最终一致性问题,而且已经有了zookeeper这个成熟的开源实现。那么这个Raft算法有啥用呢?按照Raft官网的说...

5233
来自专栏JavaEdge

漫谈缓存更新之道

许多人在更新缓存时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载入缓存中。

2342
来自专栏挖掘大数据

如何高效地合并Spark社区PR到自己维护的分支

最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2...

3868
来自专栏linux驱动个人学习

Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管理与调度(十八)

因而内核提供了两个调度器主调度器,周期性调度器,分别实现如上工作, 两者合在一起就组成了核心调度器(core scheduler), 也叫通用调度器(gener...

1732
来自专栏公有云大数据平台弹性 MapReduce

EMR上Zeppelin入门

简而言之,就是一个大数据分析平台。用户可以利用提供好的WEB UI,在线编写分析逻辑代码,输出结果,并且能够利用可视化工具,形象生动的在线展示结果。

1871
来自专栏Web项目聚集地

Javascript中的异步

832
来自专栏前端儿

【转】http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式详解

文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。

3251

扫码关注云+社区

领取腾讯云代金券