ELK(,Logstash,Kibana)搭建实时日志分析平台(开源实时日志分析ELK平台部署)
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由、Logstash和Kiabana三个开源工具组成。官方网站:
85是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
85Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
85kibana也是一个开源和免费的工具,他Kibana可以为Logstash和提供的日志分析友好的Web界面,可以帮助您汇总、分析和搜索重要数据日志。工作原理如下所示:
在需要收集日志的所有服务上部署logstash,作为logstashagent(logstashshipper)用于监控并过滤收集日志,将过滤后的内容发送到logstashindexer,logstashindexer将日志收集在一起交给全文搜索服务,可以用进行自定义搜索通过Kibana来结合自定义搜索进行页面展示。
四大组件:
Logstash:logstashserver端用来搜集日志;
:存储各类日志;
Kibana:web化接口用作查寻和可视化日志;
LogstashForwarder:logstashclient端用来通过lumberjack网络协议发送日志到logstashserver;
你想用一台机器搜集,就建立共享文件夹,给每个人一个文件夹或文件(比如电子表),分配好权限,每天更新一下文件就是了。不用server版本(安装域)的话可能比较麻烦,但是人少用域也是大炮打蚊子的感觉。
或者用OA?感觉还不如一个电子表来的方便。
你们这边是做设计的么,写设计日志么,在部署状态页面日志,将会打开日志页面,下个图就是日志的输出页面。
简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮。哈哈哈哈,写不好前端的运维不是好DBA。
刚开始拿到这个需求,咋觉得很难。因为在服务器上我们看一个日志,经常会tail -f 看着刷屏的感觉倍爽。如何在web页面上实现tailf的效果呢?
后来想想这样实现是可行的。前端写一个js定时器,不断的发ajax请求到后台,每回取出一段日志。后台取日志可以直接调用系统命令,或者直接调取shell脚本,取日志,判断日志文件是否存在,是否为空,返回数据的起始位置等,都可以交给shell来做。事实上我就是这么干的。后台程序写一堆shell命令调用有点别扭。想到解决方案之后,实现的过程就比较简单了。我的开发环境是基于python的Django框架来做的,现在就展示这个功能的实现过程。
Django部分
日志的链接之后会调到views里的ajxGetLog方法,该方法需要两个参数,项目id和主机id,这两个参数主要是用来确定日志文件的位置。该方法返回行号。
execcommand是封装的一个subprocessPopen的一个工具函数,返回一个列表分别是标准输出,错误输出和shell returncode
def ajxGetLog(request,pid,hid):
project = Projectobjectsget(pk=pid)
host = Hostobjectsget(pk=hid)
scriptname = '%s%s'%(base_path,'get_logsh')
res = execcommand(['sh',scriptname,hosthostname,projectservicename])
#如果错误输出不为空,直接返回错误输出
if not res[1]:
try:
#res[0]为行号,如果大于20行,从当前行的上面20行开始输出,为了用户体验,你懂得
if int(res[0]) > 20:
line = int(res[0]) - 20
if int(res[0]) == 0:
line = 1
return render(request,'logshtml',{'pid':pid,'hid':hid,'line':line})
except Exception,e:
print e
return > *** 作步骤
1下载evtsys_exe_32zip,解压
2 拷贝解压文件
将解压后的文件拷贝到发送syslog的windows主机的%systemroot%\system32目录下。
3 配置evtsys
通过命令行输入:evtsys -i -h hostname
hostname为syslog服务器的主机名或IP地址,命令成功运行后会在系统增加EventLog to Syslog服务。
4 启动服务
通过命令行输入:net start evtsys来启动服务。
5 更改配置
如果要更改Syslog服务器的地址,则需要通过命令行输入: net stop evtsys evtsys -u
evtsys –i –h newhostname net start evtsys
6 安装3CDaemon
在syslog服务器上安装3CDaemon ,3CDaemon 也有绿色版,直接双击就可运行。
7 配置3CDaemon 的syslog服务
在syslog服务器上启动33CDaemon ,点左边syslog sever的菜单条,设置接收任意IP地址或指定IP地址的Syslog
8 验证
如果配置正确的话,在Syslog服务器上就能接收到客户端发送的Syslog了,客户端 *** 作系统启动时,也会有Syslog发送到Syslog服务器上。
在没有其它的软件可控制的情况下,建议使用 不过,这样你的日志文件会变得很大,而且在查询记录时会很麻烦!具体的 *** 作如下:
1选择"开始"->"运行";
2输入:gpeditmsc;
3选择"计算机配置"->"Windows 安全设置"->"本地策略"->"审核策略";
这中间有一项比如:"审核对象访问"双击打开:选择"成功"与"失败";其它的几项自己看是否需要;
4选择要共享的文件夹:在共享后选择"安全"->"高级"->"审核";
如果需要选择全部的人都记录;选择"添加"->输入everyone;
如果需要选择某一个用户,单选一个即可;
5选择确定一直确定然后退出即可
6选择"我的电脑"右击->"管理"->"事件管理"->"安全性";
即可看到你需要的内容
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)