日志系列:
企业级日志平台新秀Graylog,比ELK轻量多了
日志系统新贵Loki,比ELK轻量多了
1 为什么需要集中的日志系统?
在分布式系统中,众多服务分散部署在数十台甚至是上百台不同的服务器上,要想快速方便的实现查找、分析和归档等功能,使用Linux命令等传统的方式查询到想要的日志就费时费力,更不要说对日志进行分析与归纳。
如果有一个集中的日志系统,便可以将各个不同的服务器上面的日志收集在一起,不仅能方便快速查找到相应的日志,还有可能在众多日志数据中挖掘到一些意想不到的关联关系。
作为DevOps工程师,会经常收到分析生产日志的需求。在机器规模较少、生产环境管理不规范时,可以通过分配系统账号,采用人肉的方式登录服务器查看日志。然而高可用架构中,日志通常分散在多节点,日志量也随着业务增长而增加。当业务达到一定规模、架构变得复杂,靠人肉登录主机查看日志的方式就会变得混乱和低效。解决这种问题的方法,需要构建一个日志管理平台:对日志进行汇聚和分析,并通过Web UI授权相关人员查看日志权限。
2 日志系统选择与对比
关于企业级日志管理方案,比较主流的是ELK stack和Graylog。
常见的分布式日志系统解决方案有经典的ELK和商业的splunk。为什么没有选择上面的两种方案呢,原因主要是如下两种:
ELK目前很多公司都在使用,是一种很不错的分布式日志解决方案,但是需要的组件多,部署和维护相对复杂,并且占用服务器资源多,此外kibana也在高版本中开始商业化。
splunk是收费的商业项目,不在考虑范围。
3 认识graylog
31 简介
graylog是一个简单易用、功能较全面的日志管理工具,graylog也采用Elasticsearch作为存储和索引以保障性能,MongoDB用来存储少量的自身配置信息,master-node模式具有很好的扩展性,UI上自带的基础查询与分析功能比较实用且高效,支持LDAP、权限控制并有丰富的日志类型和标准(如syslog,GELF)并支持基于日志的报警。
在日志接收方面通常是网络传输,可以是TCP也可以是UDP,在实际生产环境量级较大多数采用UDP,也可以通过MQ来消费日志。
32 优势
部署维护简单
资源占用较少
查询语法简单易懂(对比ES的语法…)
内置简单的告警
可以将搜索结果导出为 json
UI 比较友好
33 graylog单机架构图
34 graylog集群架构
4、基于 GrayLog & ELK 的日志监控
Collector
FileBeat:轻巧占用资源少,但是功能有点弱。「想起了一些东西,都是泪」
Fluentd:个人理解在Logstash与FileBeat中间,可以简单处理一些日志,插件丰富「要再研究下」
自己弄:架构图里面只是mysql调用了自己实现的解析工具,但是其实当日志大到一定的量的还是必须自己来的,类似日志抽样、降级、控制频率等功能,是要真真切切的花费大量时间精力下去的一个sidecar并非动动嘴巴就能搞定的。「都是泪」
Queue
Kafka:王者地位「量小的时候也可以不用这个直接朝后面输出,有很多中间方案大家自己脑补」,不同的日志分不同的topic,严格区分日志所属类型,为后续消费打下基础,比如A业务进入A Topic并在日志中打上所属语言类型的Tag。
Consumer
Logstash:其实这个东西也可以作为收集端来使用,就是比较耗费资源有点重,还会莫名其妙挂了「应该是我不会玩」
GrayLog:本人最喜欢的一个组件,集解析、报警、简单分析、Dashboard、日志TTL的综合体,有这个东西吧其实Kibana就没啥用了,毕竟谁没事天天去分析日志。
Storage
ElasticSearch:全文索引Engine,其实并没有官方说的那么牛,当到一定的并发写入、大量查询之后其实根本不是加机器能解决的,怎么分shard,是按照天保存还是按照条数保存「我比较喜欢按照条数保存,这样可以保证每个index都差不多大小,对于reblance是有好处的,重复利用多盘」如何保存是需要不断调整的。「我们这边不讨论MongoDB去存日志,看着都不靠谱」
规范
其实日志系统最关键的是怎么打、什么格式打、但是这个东西需要消耗大量的时间去定义与各个部门Pk,遇到过大量不讲理的输出,直接线上Debug,600k的并发写入,日志又大又臭谁能扛得住「阿里云的SLS是真的很牛」
卷起袖子加油干,少动嘴,多动手,日志很好玩。在容器化的大环境下也越发的重要。
Flunted + Elasticsearch + Kibana的方案,发现有几个缺点:
不能处理多行日志,比如Mysql慢查询,Tomcat/Jetty应用的Java异常打印
不能保留原始日志,只能把原始日志分字段保存,这样搜索日志结果是一堆Json格式文本,无法阅读。
不符合正则表达式匹配的日志行,被全部丢弃。
对比图
总结
虽然两种解决方案在功能上非常相似,但仍有一些差异需要考虑。
两者之间最重要的区别在于,从一开始,Graylog就定位为强大的日志解决方案,而ELK则是大数据解决方案。Graylog可以通过网络协议直接从应用程序接收结构化日志和标准syslog。相反,ELK是使用Logstash分析已收集的纯文本日志的解决方案,然后解析并将它们传递给ElasticSearch。
在ELK中,Kibana扮演仪表盘的角色并显示从Logstash收到的数据。Graylog在这点上更方便,因为它提供了单一应用程序解决方案(不包括ElasticSearch作为灵活的数据存储),具有几乎相同的功能。因此,部署所需的时间更短。此外,与ELK相比,Graylog开箱即用,且具有出色的权限系统,而Kibana则不具备此功能。作为Elasticsearch的粉丝,我更喜欢Graylog而不是ELK,因为它完全符合我在日志管理方面的需求。
Graylog具有直观的GUI,并提供警报、报告和自定义分析功能。最重要的是,它能在多个日志源和跨机房收集数TB的数据。基于这些优势,我更喜欢用Graylog而不是另一个具有类似功能的流行堆栈——ELK。
如果有需要领取免费资料的小伙伴们, 可以点击此处领取资料哦!
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台(开源实时日志分析ELK平台部署)
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 工作原理如下所示:
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到logstash indexer,logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
四大组件:
Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各类日志;
Kibana: web化接口用作查寻和可视化日志;
Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;
日志500状态码是说明内部服务器有问题,蜘蛛无法抓取你的网页,这个你要先检查你的服务器是否被攻击,如果你是非专业的,建议你去找专业程序员检查一下scshangjiecom为你解答!
对于大型的网站,比如说中关村在线,这样的网站,因为这样的项目很大,网站本身PR是7,流量也很大小,这样的网站,有一个好的SEO策略就显的非常重要,本人整理概括了以下六点精华,称之为大型SEO项目之六脉神剑:
一、关键词分析。
关键词分析是所有SEO必须掌握的一门功课,大型网站虽然有海量的数据,但是每个页面都需要进行关键词分析,除了SEO之外,策划、编辑也需要具备一定的关键词分析能力。
我们来看关键词分析的基本原则:
1、调查用户的搜索习惯:这是一个重要的方面,只有了解用户的搜索习惯,我们才能把我用户的搜索需求,用户喜欢搜索什么用什么搜索引擎等等
2、关键词不能过于宽泛:关键词过于宽泛会导致竞争激烈,耗费大量时间却不一定得到想要的效果,并且可能降低了关键词的相关性。
3、关键词不能过冷:想想,没有用户搜索的关键词,还值得去优化吗
4、关键词要与页面内容保持高度的相关性:这样既有利于优化又有利于用户。
我们再来看关键词挑选的步骤:
1、确定核心关键词:我们应该考虑的是哪一个词或者两个词能够最准确的描述网页的内容哪一个词用户搜索次数最多
2、核心关键词定义上的扩展:例如核心关键词的别名、仅次于核心关键词的组合等、核心关键词的辅助等。
3、模拟用户思维设计关键词:把自己假想为用户,那么我会去搜索什么关键词呢
4、研究竞争者的关键词:分析一下排名占有优势的竞争对手的网页,他们都使用了什么关键词
二、页面搜索引擎友好设计
1、首先我们来看UI设计的搜索引擎友好:主要是做到导航清晰,以及flash和等的使用,一般来说,导航以及带有关键词的部分不适合使用flash及,因为大多数搜索引擎无法抓取flash及中的文字。
2、然后是前端代码的搜索引擎友好:包含以下几点
a、代码的简洁性:搜索引擎喜欢简洁的html代码,这样更有利于分析。
b、重要信息靠前:指带关键词的及经常更新的信息尽量选择出现在html的靠前位置。
c、过滤干扰信息:大型网站的页面一般比较复杂,各种广告、合作、交换内容以及其他没有相关性的信息比较多,我们应该选择使用js、i等搜索引擎无法识别的代码过滤掉这一部分信息。
d、代码的基础SEO:这是基础的SEO工作,避免html错误以及语义化标签。
三、链接策略:
分为两部分:内链策略和外链策略
内链策略:
1、大型网站海量的数据使内链的优势远远大于外链。外链的数量可能几千几万几十万,但是大型网站拥有成百万上千万甚至上亿的海量网页内容,如果用这些海量的网页做内链的建设,优势是很明显的。
2、网站内的网页间导出链接是一件很容易的事情。
3、提高搜索引擎对网站的爬行索引效率,增强收录,也有利于PR的传递。
4、集中主题,使该主题的关键词在搜索引擎中具有排名优势。
在内链建设中,我们应该遵循以下原则:
1、控制文章内链数量:穿插于文章内的链接可以根据内容的多少控制在3—8个左右。
2、链接对象的相关性要高。
4、使用绝对路径。
外部链接策略:
我们强调大型网站的内链建设,但是我们同时也不能太忽视了外链的建设。外链的建设虽然没有中小网站那么重要,但是也具有很高的价值。我们通常可以通过交换链接、制造链接诱饵、投放带链接的软文等方法来建设外链。
1、我们来看交换链接应该要遵循哪些原则:
a、链接文字中包含关键词
b、尽量与相关性高的站点、频道交换链接
c、对方网站导出链接数量不能过多,过多的话没有太大的价值
d、避免与未被收录以及被搜索引擎惩罚的网站交换链接
2、制造链接诱饵:制造链接诱饵是一件省力的工作,这使得对方网站主动的为我们添加链接。制造链接诱饵的技巧很多,但是可以用两个字来概括:创意。
3、带链接的软文投放。指的是在商务推广或者为专门为了得到外链而进行的带链接的软文投放。
四、网站地图策略:
有很多大型网站不重视网站地图的建设,不少大型网站的网站地图只是敷衍了事,做一个摆设。其实网站对于大型网站是很重要的,大型网站海量的数据、复杂的网
站导航结构、极快的更新频率使得搜索引擎并不能完全抓取所有的网页。这就是为什么有的大型网站拥有百万千万甚至上亿级的数据量,但是却只被搜索引擎收录了
网站数据量的一半、三分之一甚至更少的一个重要原因。连收录都保证不了,怎么去做排名
Html地图:
1、为搜索引擎建立一个良好的导航结构。
2、Html地图中可以分为横向和纵向导航,横向导航主要是频道、栏目、专题等链接,纵向导航主要是针对关键词。
3、每个页面都有指向网站地图的链接。
Xml网站地图:
主要针对Google、yahoo、live等搜索引擎。因为大型网站数据量太大,单个的sitemap会导致sitemapxml文件太大,超过搜索
引擎的容忍度。所以我们要将sitemapxml拆分为数个,每个拆分后的sitemapxml则保持在搜索引擎建议的范围内。
五、内容策略:
搜索引擎友好写作是创造海量数据对取得好的搜索引擎排名的很关键的一部分。而SEO人员不可能针对每个网页都提出SEO建议或者方案,所以对写作人员的培训尤为重要。如果所有写作人员都按照搜索引擎友好的原则去写作,则产生的效果是很恐怖的。
1、对写作人员要进行反复SEO培训:写作人员不是SEO,没有经验,不可能一遍就领悟SEO的写作技巧。所以要对写作人员进行反复的培训才能达到效果。
2、创造内容先思考用户会去搜索什么,针对用户的搜索需求而写作。
3、重视title、写作:例如虽然在搜索引擎的权重已经很低,但是不好的写作例如堆积关键词、关键词与内容不相关等行为反而会产生负作用。而Title的权重较高,尽量在Title中融入关键词。
4、内容与关键词的融合:在内容中要适当的融入关键词,使关键词出现在适当的位置,并保持适当的关键词密度。
5、为关键词加入链接很重要:为相关关键词加入链接,或者为本网页出现的其他网页的关键词加入链接,可以很好的利用内链优势。
6、为关键词使用语义化标签:
为关键词创作专题:
除了最终页面,各种针对热门的关键词所制作的专题应该作为网站的第二大搜索引擎流量来源。我们在对热点数据进行挖掘后,就可以针对这些热门关键词制作专题
了。制作的专题页的内容从何而来我们一般通过程序实现对应关键词相关的信息进行筛选聚合,这样就使得内容与关键词高度匹配,为用户、为搜索引擎都提供了
所需要的内容。
当然,仅仅建立一个专题而没有辅助手段是很难保证专题的搜索引擎排名的,我们可以通过文章内链、频道页推荐、或者最终页的专题推荐来获得链接达到效果。
1、为热点关键词制作专题
2、关键词相关信息的聚合
3、辅以文章内链导入链接
六、日志分析与数据挖掘:
日志分析与数据挖掘常常被我们所忽视,其实不管是大型网站还是中小网站,都是一件很有意义的工作。只是大型网站的日志分析和数据挖掘工作难度要更高一些,因为数据量实在太大,所以我们要具备足够的耐心来做该项工作,并且要有的放矢。
1、网站日志分析:网站日志分析的的种类有很多,如访问来源、浏览器、客户端屏幕大小、入口、跳出率、PV等。跟SEO工作最相关的主要有以下三种:
a、搜索引擎流量导入
b、搜索引擎关键词分析
c、用户搜索行为统计分析
2、热点数据挖掘:我们可以通过自身的网站日志分析以及一些外在的工具和SEO自己对热点的把握能力来进行热点数据的挖掘。热点数据的挖掘主要有以下手段:
a、把握行业热点,可以由编辑与SEO共同完成
b、预测潜在热点,对信息的敏感度要求较高,能够预测潜在的热门信息。
c、自己创造热点,如炒作等
用户状态码是 :一个用户访问你网站时 的情况。 如404就是用户打开了你网站的一个地址 但是你网站没有这个地址。 这个可以搜集到你网站有哪些页面是打不开。但用户常点开了的。
蜘蛛状态码是:搜索引擎的抓取程序来抓你网站内容时 你网站相应页面给反回的情况。
错误码:
1>
以上就是关于分布式日志系统Graylog、Loki及ELK的分析和对比全部的内容,包括:分布式日志系统Graylog、Loki及ELK的分析和对比、如何搭建日志监控系统、网站日志分析里面的用户状态码出现了500我该怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)