已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大数据时代里,运维工程师的自我修养i 2015-12-19 16:44:48标签:数据分析 Python ELK pandas seaborn elasticsearch-py 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/10513771/1726349 “凡是过去,皆为序曲” -莎士比亚 前言:本文其实是给公司写的一篇文章,不过因为时间仓促,当时文章并没有关于代码的分析,只是关于数据的展示,不过觉得很有价值,所以再做分享。 了解我的人,当然知道,本宝宝要大家跟我做的第一件事是什么 首先,大家跟我念,Python大fa好。本文皆是一家之言,如有偏颇还望指正。在笔者的看来,如果数据不能可视化话,那么很大程度来说就是在扯淡,当然数据可视化也仅仅是万里长征第一步。数据就像一堆堆的石子,也许不能就这一篇文章带领大家观其全貌,但至少管中窥豹,可见一斑。那么数据到底长什么样呢?它可能长这样。又或者是这样如果你Excel足够牛逼我想你是能够用excel做出足够厉害的图的,但也只是足够而已。在笔者看来数据至少是长这样。再或者是这样的。注:上面使用的是ELK套件ELK安装文档,参考:/10513771/1726338 但这只是冰山一角,还远远不够,工具谁能用,怎么用是一个层次,在这基础上再次利用则是另一个层次,为了文章篇幅,本文主要着重于后者并将视线锁定在日志数据,其他数据暂不考虑。日志的数据至少得有三个作用 一:数据应该能说明问题或者现象。 二:数据应该能解决问题。 三:数据应该能预测与预防问题。第一点很好理解那就是,数据在可视化的过程能够很直观的说明问题或者现象,即使通过最基本的提取过滤,我们能够知道在一段时间内多大的访问量,客户端的设备是什么,响应时间多少,在往下细化,应该是每个ip的访问次数,并且访问了什么内容,常访问什么内容,在知道响应时间的前提上,了解哪个访问链接耗时最长等等,以及一些可能职责之外的事,具体细节请自行脑洞。下面是简单的全球访问IP热点图:注:不要问我为什么不用ELK自带的热点图,两个字,任性第二点,既然日志能说明问题当然能解决问题,日志文件除了最基本的info记录,当然还有debug信息,通过debug信息我们知道程序运行到什么地方抛出了这个bug,为什么抛出这个bug,为了第一时间响应,我们还得快速定位到抛出bug的主机。通过简单的查询我们可以快速定位到404状态发生的主机,及其发生时间,以及客户端的使用设备为什么,以及在访问什么的时候抛出404。第三点,问题在一定程度上并不可怕,可怕的是不能及时处理以及反复出现却束手无策,所以怎样有效的利用数据的基础上再配合可靠并实时监控报警机制就显得至关重要了。而关于预测,可以通过的一定的算法数据都量化,然后评估以及模拟。谈完了基础,我们着重谈谈日志数据的再次利用。也主要分为三个部分:一:简单统计,无论通过rrdtool或者Excel,或者Python,只要有数据,通过预选及数据清洗,就能得到自己想要的数据,在拥有数据的情况下,可视化也就显得自然而然了。二:统计细化,数据的可视化可能只是数据分析的一部分,因为可视化只能展示很简单的结果,并不能听见数据内心中呐喊的声音,所以一定程度的统计技术以及编程基础相当重要,庆幸的是Python有足够的支持库。三:统计分析,这一方面可能较于大多数人并无用处,并且并不关心,所以在此略过。一:简单统计单日的Top IP,Top URL,Top City开始吧。 Top IPTopURL Top 城市由上面三个图,我们就能直观知道我们当日最常访问的IP,URL,以及城市,单个IP太频繁并次数过多我们需要注意,URL可以帮助我们评估,而城市可以让我们知道服务的受众分布情况,而最简单的一个作用可能就是CDN加速了,其他方面请大家自行脑洞,这里不做展开。二:统计细化我们在上面的基础上再次细化,比如每个城市中的终端设备使用情况,如下图当然也可以反过来看三:统计分析我们简单看看用户终端设备,安卓与苹果的相关系数。基本走势图分析 以及各终端相关关系,如下再或者相关关系。无论是从走势或者相关系数,当日安卓与苹果存在一定的的相关性。在第三部分的附图中,可能大多数人除了走势图,大都看不懂,在这里也不会过多的讲解各个参数以及所对应的关系,因为讲解这些内容的时间可能比这一篇文章还会长,虽然这并算不上大数据,但是还是想借用大数据时代里的一句话,作为本文的结尾。“大数据告诉我们“是什么”而不是“为什么”。在大数据时代,我们不必知道现象背后的原因,我们只要让数据自己发声。”注:因为是取的其中一天的数据,在误差存在的同时数据处理过程中也存在也有很多的不规范,但这篇文章主要是为了给大家一些关于数据的认识。 好吧,上面就是传说中的PPT了,就算你不看文字内容,但是你也大概能知道通过数据可视化,我们能够将数据的展现形式做到上面程度,而下面的内容只要就是关于其中一部分可视化的代码讲解。 因为本文的数据是基于Elasticsearch存储的,所以先决条件,你得有存在Elasticsearch里的数据内容,如果你对Pandas有所了解,你可能看看代码也就知道怎么回事了1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#-*-coding:utf-8-*-#=#用于生成TopIP,TopURL,历史TopIP,TopURL#=importpandasaspdfrompandasimportDataFrameimportmatplotlib.pyplotaspltimportnumpyasnpimportseabornassnsfromelasticsearchimportElasticsearchimportarrow#esapies=Elasticsearch(http:/IP:9200/)#时间设定#time_now=arrow.now().format(X)+000index_today=logstash-+arrow.now().format(YYYY.MM.DD)index_all=logstash-*#time_yesterday=arrow.now().replace(days=-1).format(X)+000#time_year=arrow.now().replace(years=-1).format(X)+000#查询字段q_url=xxx_urlq_ip=xxxx_ip#查询语句设定函数deftop_search(query_str):rets=size:0,query:filtered:filter:bool:must:term:type:xxxxx_access,query:query_string:query:!xxxxx,analyze_wildcard:true,aggs:%s:terms:field:%s,size:15%(query_str,query_str+.raw)returnrets#执行查询today_top_ip=es.search(index=index_today,body=top_search(q_ip)today_top_url=es.search(index=index_today,body=top_search(q_url)year_top_ip=es.search(index=index_all,body=top_search(q_ip)year_top_url=es.search(index=index_all,body=top_search(q_url)df_today_ip=DataFrame(today_top_ipaggregationsq_ipbuckets)df_today_url=DataFrame(today_top_urlaggregationsq_urlbuckets)df_all_ip=DataFrame(year_top_ipaggregationsq_ipbuckets)df_all_url=DataFrame(year_top_urlaggregationsq_urlbuckets)p1=sns.factorplot(x=key,y=doc_count,data=df_today_ip,kind=bar,palette=summer)p1.set_xticklabels(rotation=90)p1.set_titles(TodayTop15IP)p1.savefig(topip_today.png,dpi=100)p3=sns.factorplot(x=key,y=doc_count,data=df_all_ip,kind=bar,palette=summer)p3.set_xticklabels(rotation=90)p3.set_titles(Top15IP)p3.savefig(topip.png,dpi=100)通过上面的代码,我们能够生成当日的Top 15 IP以及历史Top 15 IP。值得注意的是,你是能够单纯通过Kibana过滤出这些数据的,并且也很好看,但是为什么用Python呢,因为通过Kibana能够数据可视化,不过对于数据的再利用就不那么理想了,比如生成报表或者一些更高级的可视化定制,这里主要是为了给大家一个通过Python调用Elasticsearch APi的基本认识。下面主要挑几个重要的部分讲解。首先安装依赖库:1pipinstallelasticsearch至于pandas之类的科学分析库安装请参考:/10513771/1711008然后基本调用。12345fromelasticsearchimportElasticsearchimportarrow#esapies=Elasticsearch(http:/IP:9200/)查询语句参考官方:https:/www.elastic.co/guide/en/elasticsearch/reference/1.7/search.html12345678910111213141516171819202122232425doc=size:0,query:filtered:filter:bool:must:term:type:xxxxx_access,query:query_string:query:!xxxxx,analyze_wildcard:true,aggs:ip:terms:field:xxx_ip,size:15 上面的语句的意思分别是返回查询结果0 =size = 0 然后查询条件type为“xxxx_access”的数据,并查询非xxxxx的内容,即过滤有xxxx的字符串。然后就是我们主要用到的aggs,aggs代表聚合,因为Elasticsearch的其中一个强大之处,就是关于数据的处理,我们有过aggs,聚合条件为xxx_ip,所以返回的结果是统计过的结果,比如这个IP一共多少次,而这里的我们设置size=15,即返回15条聚合过的数据。然后我们执行查询:1In19:es.search(index=index_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省广州市越秀区第二中学2024-2025学年九年级上学期期中考试英语试题(含答案)
- 高端台球桌制造行业2026-2030年产业发展现状及未来发展趋势分析研究
- 2025-2026学年广东省广州市天河区高三上学期一模政治试题
- 2025年上教师资格笔试考试试题与答案中学综合素质考生回忆版
- 2025年上海市长宁区新华地段医院医护人员招聘笔试备考试题及答案
- 班级组织管理试题及答案
- 高精度陶瓷材料在建筑装饰领域的应用
- 电动汽车电池技术材料研究及成本剖析
- 2025年高级政工师理论知识考试题库含答案
- 2026年建筑工程公司施工批次追溯管理制度
- 广州长隆调研报告
- 沁园春雪朗读技巧指导教案设计
- 温度检测及仪表
- 急需学科专业引导发展清单
- 国开电大应用写作(汉语)形考任务4参考答案
- 人教版四年级数学上册四年级数学上册典型例题系列之第4单元:面积问题专项练习(解析版)人教版
- 青少年心理健康教育课件
- JJF 1975-2022 光谱辐射计校准规范
- 布袋除尘器技术协议
- 危大工程验收记录表(模板工程)
- 短视频:策划+拍摄+制作+运营课件(完整版)
评论
0/150
提交评论