首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

使用elk+redis搭建nginx日志分析平台(转)

logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队列,redis的list结构正好可以作为队列使用。然后分析使用elasticsearch就可以进行分析和查询了。 我们需要的是一个分布式的,日志收集和分析系统。logstash有agent和indexer两个角色。对于agent角色,放在单独的web机器上面,然后这个agent不断地读取nginx的日志文件,每当它读到新的日志信息以后,就将日志传送到网络上的一台redis队列上。对于队列上的这些未处理的日志,有不同的几台logstash indexer进行接收和分析。分析之后存储到elasticsearch进行搜索分析。再由统一的kibana进行日志web界面的展示。 下面我计划在一台机器上实现这些角色。 准备工作 安装了redis,开启在6379端口 安装了elasticsearch, 开启在9200端口 安装了kibana, 开启了监控web logstash安装在/usr/local/logstash nginx开启了日志,目录为:/usr/share/nginx/logs/test.access.log 设置nginx日志格式 在nginx.conf 中设置日志格式:logstash log_format logstash '$http_host $server_addr $remote_addr [$time_local] "$request" ' '$request_body $status $body_bytes_sent "$http_referer" "$http_user_agent" ' '$request_time $upstream_response_time'; 在vhost/test.conf中设置access日志: access_log /usr/share/nginx/logs/test.access.log logstash; 开启logstash agent 注:这里也可以不用logstash,直接使用rsyslog 创建logstash agent 配置文件 vim /usr/local/logstash/etc/logstash_agent.conf 代码如下: input { file { type => "nginx_access" path => ["/usr/share/nginx/logs/test.access.log"] } } output { redis { host => "localhost" data_type => "list" key => "logstash:redis" } } 启动logstash agent /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_agent.conf 这个时候,它就会把test.access.log中的数据传送到redis中,相当于tail -f。 开启logstash indexer 创建 logstash indexer 配置文件 vim /usr/local/logstash/etc/logstash_indexer.conf 代码如下: input { redis { host => "localhost" data_type => "list" key => "logstash:redis" type => "redis-input" } } filter { grok { match => [ "message", "%{WORD:http_host} %{URIHOST:api_domain} %{IP:inner_ip} %{IP:lvs_ip} \[%{HTTPDATE:timestamp}\] \"%{WORD:http_verb} %{URIPATH:baseurl}(?:\?%{NOTSPACE:request}|) HTTP/%{NUMBER:http_version}\" (?:-|%{NOTSPACE:request}) %{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{NUMBER:time_duration:float} (?:%{NUMBER:time_backend_response:float}|-)" ] } kv { prefix => "request." field_split => "&" source => "request" } urldecode { all_fields => true } date { type => "log-date" match => ["timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"] } } output { elasticsearch { embedded => false protocol => "http" host => "localhost" port => "9200" index => "access-%{+YYYY.MM.dd}" } } 这份配置是将nginx_access结构化以后塞入elasticsearch中。 对这个配置进行下说明: grok中的match正好匹配和不论是GET,还是POST的请求。 kv是将request中的A=B&C=D的key,value扩展开来,并且利用es的无schema的特性,保证了如果你增加了一个参数,可以立即生效 urldecode是为了保证参数中有中文的话进行urldecode date是为了让es中保存的文档的时间为日志的时间,否则是插入es的时间 好了,现在的结构就完成了,你可以访问一次test.dev之后就在kibana的控制台看到这个访问的日志了。而且还是结构化好的了,非常方便查找。 使用kibana进行查看 依次开启es,logstash,kibana之后,可以使用es的head插件确认下es中有access-xx.xx.xx索引的数据,然后打开kibana的页面,第一次进入的时候会让你选择mapping,索引名字填写access-*,则kibana自动会创建mapping http://www.cnblogs.com/yjf512/p/4199105.html

优秀的个人博客,低调大师

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-涉及的数据定义

以往回顾 我在之前的文章中都着重从AgileEAS.NET平台的介绍和开发指南两方面入手,参看AgileEAS.NET应用开发平台-系列目录和AgileEAS.NET平台开发指南-系列目录,但是对于开发者来说,看了还是会有太多的恍惚,从本文开发,我按照开发应用中的由简单到复杂的开发进阶逐步深入的讲解基于AgileEAS.NET平台的应用开发。 数据库 AgileEAS.NET平台所擅长的是基于数据库支撑的管理信息系统应用,所以在本系列开发过程中就会涉及到数据表定义,基于一个确定的限定,我在本系统中使用一个极其微小的产品入库处理业务所设计的三个表,产品字典、入库记录表和库存记录表,其结构定义如下: Ødbo.PRODUCT(产品字典) 表名 PRODUCT 所有者 dbo 列名 数据类型 空 说明 IDN INT Y 记录编号 CODE NVARCHAR(16) Y 产品编码 NAME NVARCHAR(128) Y 产品名称 SPEC NVARCHAR(64) Y 产品规格 UNIT NVARCHAR(32) Y 单位 DESCRIPTION NVARCHAR(256) N 说明 Ødbo.PIN(产品入库) 表名 PIN 所有者 dbo 列名 数据类型 空 说明 IDN INT Y ID BillCode VARCHAR(16) Y 单根号 Code VARCHAR(16) Y 产品编码 Name VARCHAR(128) Y 产品名称 Spec VARCHAR(64) N 规格 Unit VARCHAR(32) N 单位 Price DECIMAL(18,4) Y 价格 Number INT Y 数量 Operator VARCHAR(64) Y 入库员 InTime DATETIME N 和库时间 Ødbo.PSTORE(产品库存) 表名 PSTORE 所有者 dbo 列名 数据类型 空 说明 IDN INT Y ID Code VARCHAR(16) Y 产品编码 Name VARCHAR(128) Y 产品名称 Spec VARCHAR(64) N 规格 Unit VARCHAR(32) N 单位 Price DECIMAL(18,4) Y 价格 Number INT Y 数量 表结构由AgileEAS.NET平台对象设计器生成,基于SQL2000,在文末我会提供模块文件,Excel、Html格式的表结构定义以及DDL脚步,测试数据的插入脚本。对象模型定义文件、文档及SQL脚本下载http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar。 链接 AgileEAS.NET平台开发指南-系列目录 AgileEAS.NET应用开发平台介绍-文章索引 AgileEAS.NET平台应用开发教程-案例计划 AgileEAS.NET官方网站 敏捷软件工程实验室 QQ群:116773358 作者:魏琼东出处:http://www.cnblogs.com/eastjade关于作者:有13年的软件从业经历,专注于中小软件企业软件开发过程研究,通过在技术与管理帮助中小软件企业实现技术层面开源节流的目的。熟悉需求分析、企业架构、项目管理。现主要从事基于AgileEAS.NET平台的技术咨询工作,主要服务于医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。如有问题或建议,请多多赐教!本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过mail.james@qq.com联系我,也可以加入QQ群:113723486、199463175、116773358、116773358、212867943、147168308、59827496、193486983、15118502和大家共同讨论,非常感谢。 本文转自魏琼东博客园博客,原文链接:http://www.cnblogs.com/eastjade/archive/2010/09/17/1829441.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册