首页 文章 精选 留言 我的

精选列表

搜索[模版共享],共10006篇文章
优秀的个人博客,低调大师

使用Logstash创建ES映射模版并进行数据默认的动态映射规则

本文配置为 ELK 即(Elasticsearch、Logstash、Kibana)5.5.1。 Elasticsearch 能够自动检测字段的类型并进行映射,例如引号内的字段映射为 String,不带引号的映射为数字,日期格式的映射为日期等等,这个机制方便了我们快速上手 ELK,但是后期我们经常需要对一些特定的字段进行定制,之前本人有一篇文章进行这方面的尝试Logstash中如何处理到ElasticSearch的数据映射,但对于默认映射规则没有介绍,本文就来探讨一些默认的动态映射规则。 开始之前 先拿一个 logstash 的配置文件来看一下 output { elasticsearch { hosts => “localhost:9200" index => "my_index" template => "/data1/cloud/logstash-5.5.1/filebeat-template.json" template_name => "my_index" template_overwrite => true } stdout { codec => rubydebug } } 再看一个ES模板配置文件 { "template" : "logstash*", "settings" : { "index.number_of_shards" : 5, "number_of_replicas" : 1, "index.refresh_interval" : "60s" }, "mappings" : { "_default_" : { "_all" : {"enabled" : true}, "dynamic_templates" : [ { "string_fields" : { "match" : "*", "match_mapping_type" : "string", "mapping" : { "type" : "string", "index" : "not_analyzed", "omit_norms" : true, "doc_values": true, "fields" : { "raw" : {"type": "string", "index" : "not_analyzed", "ignore_above" : 256,"doc_values": true} } } } } ], "properties" : { "@version": { "type": "string", "index": "not_analyzed" }, "geoip" : { "type" : "object", "dynamic": true, "path": "full", "properties" : { "location" : { "type" : "geo_point" } } } } } } } 这里关注几个属性index、template_name、以及模板文件中的 template。index是索引的名称,我们经常会有诸如 index => "logstash-%{+YYYY.MM.dd}”这样的索引名称,可以按照日期来分割不同的索引。template_name对应的是模板名称,template这是比较关键的,因为决定了索引是否能够匹配到模板配置,这里应该与 index相匹配。比如固定的 index 名称,这里就可以是固定名称。对于按日期分隔的,可以使用通配符,例如logstash-*。 我就是因为没搞明白这几个属性的对应关系,导致自己的配置没有生效查了很长时间。 参考资料 1、Logstash中配置默认索引映射(_default_属性) 2、关于动态Mapping和templates

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

基于Redis的Session共享示例

在单机情况下,Session可由部署在服务器上的Web容器来管理 (如Tomcat、JBoss)。 在负载均衡的集群环境下,负载均衡可能将请求分发到不同的服务器上去,在这种情况,需要将有状态的session统一管理起来。 本文将给出一个简单的示例,将session存放到Redis统一管理。因为只是一个示例,所以Nginx只用1台,Tomcat使用2台,Redis一个或者简单的主从。 环境准备 准备Redis 下载redis-3.2.3.tar.gz (Redis.io下载) 解压缩redis tar-zvxfredis-3.2.3.tar.gz 将解压缩后的redis文件名改成好记点的6379(可以不重命名)。 然后使用make && make install完成安装。 [root@dev18redis]#mvredis-3.2.36379 [root@dev18redis]#cd6379 [root@dev186379]#make&&makeinstall 安装成功之后,出现如下显示: 因为本版本使用的Redis版本是3.2.3, 在这个版本中,有protected mode的属性(默认是yes),进入6379目录,修改redis.conf配置文件。从而,其它网段的程序可以去访问,否则可能会出现如下的错误。 Exceptioninthread"main"redis.clients.jedis.exceptions.JedisDataException:DENIEDRedisisrunninginprotectedmodebecauseprotectedmodeisenabled,nobindaddresswasspecified,noauthenticationpasswordisrequestedtoclients.Inthismodeconnectionsareonlyacceptedfromtheloopbackinterface.IfyouwanttoconnectfromexternalcomputerstoRedisyoumayadoptoneofthefollowingsolutions:1)Justdisableprotectedmodesendingthecommand'CONFIGSETprotected-modeno'fromtheloopbackinterfacebyconnectingtoRedisfromthesamehosttheserverisrunning,howeverMAKESURERedisisnotpubliclyaccessiblefrominternetifyoudoso.UseCONFIGREWRITEtomakethischangepermanent.2)AlternativelyyoucanjustdisabletheprotectedmodebyeditingtheRedisconfigurationfile,andsettingtheprotectedmodeoptionto'no',andthenrestartingtheserver.3)Ifyoustartedtheservermanuallyjustfortesting,restartitwiththe'--protected-modeno'option.4)Setupabindaddressoranauthenticationpassword.NOTE:Youonlyneedtodooneoftheabovethingsinorderfortheservertostartacceptingconnectionsfromtheoutside. atredis.clients.jedis.Protocol.processError(Protocol.java:117) atredis.clients.jedis.Protocol.process(Protocol.java:151) atredis.clients.jedis.Protocol.read(Protocol.java:205) atredis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297) atredis.clients.jedis.Connection.getIntegerReply(Connection.java:222) atredis.clients.jedis.Jedis.sadd(Jedis.java:1057) atjedis.example.Main.main(Main.java:36) 修改后保存。 进入src目录,启动Redis服务 [root@dev186379]#cdsrc [root@dev18src]#./redis-server 成功启动显示如下: [root@dev18src]#./redis-server 10051:C22Dec09:50:59.653#Warning:noconfigfilespecified,usingthedefaultconfig.Inordertospecifyaconfigfileuse./redis-server/path/to/redis.conf _._ _.-``__''-._ _.-```.`_.''-._Redis3.2.3(00000000/0)64bit .-``.-```.```\/_.,_''-._ (',.-`|`,)Runninginstandalonemode |`-._`-...-`__...-.``-._|'`_.-'|Port:6379 |`-._`._/_.-'|PID:10051 `-._`-._`-./_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'|http://redis.io `-._`-._`-.__.-'_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'| `-._`-._`-.__.-'_.-'_.-' `-._`-.__.-'_.-' `-.__.-' `-.__.-' 10051:M22Dec09:50:59.656#Serverstarted,Redisversion3.2.3 10051:M22Dec09:50:59.656#WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit_memory=1'to/etc/sysctl.confandthenrebootorrunthecommand'sysctlvm.overcommit_memory=1'forthistotakeeffect. 10051:M22Dec09:50:59.656#WARNINGyouhaveTransparentHugePages(THP)supportenabledinyourkernel.ThiswillcreatelatencyandmemoryusageissueswithRedis.Tofixthisissuerunthecommand'echonever>/sys/kernel/mm/transparent_hugepage/enabled'asroot,andaddittoyour/etc/rc.localinordertoretainthesettingafterareboot.RedismustberestartedafterTHPisdisabled. 10051:M22Dec09:50:59.656*Theserverisnowreadytoacceptconnectionsonport6379 准备Tomcat 下载tomcat,并解压缩为两个tomcat,并修改各自server.xml中的端口,保证两者不冲突。 本示例中,tomcat_1的端口为8082 <Connectorport="8082"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> tomcat_2的端口为8083 <Connectorport="8083"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 准备Session-Manager 大家可以通过如下路径获取Session-Manager的jar包和相关的依赖包,包括common-pool2和Jedis。 https://pan.baidu.com/s/1geZVozx 下载好之后,我们首先将这三个jar包,放到Tomcat目录下的lib文件夹中。 配置Context.xml,添加如下内容,具体的host和port由自己的环境决定。 <ValveclassName="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> <ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="xxx.xx.xx.xxx" port="6379" database="0" maxInactiveInterval="60"/> 然后准备一个项目,为了方便,我直接将测试的war中的文件替换了 Tomcat_Home/webapps中的ROOT的内容。也可以通过tomcat自带的examples示例来测试session。 如:http://localhost:8082/examples/servlets/servlet/SessionExample 至此,两个测试的tomat就准备好了,并且已经配置了session管理,由redis来存储。接下来,我们就需要一个Nginx用于负载,配置两个tomcat的信息即可。 准备Nginx 下载Nginx,解压,然后进入Nginx的conf目录,修改nginx.conf文件内容,找到http的部分,添加upstream,就是我们上述提到的两个tomcat。 http{ upstreamtomcat{ serverlocalhost:8082; serverlocalhost:8083; } 本文Nginx的端口为8899, 自己设定了一个。 server{ listen8899; 至此Nginx, Tomcat, Session-Manager, Redis相关的环境就全部准备好了。 接下来,要做的就是启动Nginx, Tomcat, Redis,来看看 session是否存入到Redis中,自己的Web工程能不能正常运行等。 启动Nginx和Tomcat 进入NGINX_HOME/使用nginx命令启动Nginx服务器。 进入两个tomcat_1和tomcat_2,分别启动tomcat。登录自己在ROOT中放置的WEB工程,可以看到session在Redis中存储下来了。 通过Redis-Desktop Manager查看Redis中session的信息。 配置一个Redis从服务器 通过Redis-Desktop Manager查看Redis中session的信息。 为上面的6379主服务器配置一个从服务器6380。 在6380的redis.conf中指定 是6379的slave,如: slaveof127.0.0.16379 启动从服务器: [root@dev18src]#./redis-server../redis.conf _._ _.-``__''-._ _.-```.`_.''-._Redis3.2.3(00000000/0)64bit .-``.-```.```\/_.,_''-._ (',.-`|`,)Runninginstandalonemode |`-._`-...-`__...-.``-._|'`_.-'|Port:6380 |`-._`._/_.-'|PID:14302 `-._`-._`-./_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'|http://redis.io `-._`-._`-.__.-'_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'| `-._`-._`-.__.-'_.-'_.-' `-._`-.__.-'_.-' `-.__.-' `-.__.-' 14302:S22Dec12:02:55.810#Serverstarted,Redisversion3.2.3 14302:S22Dec12:02:55.810#WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit_memory=1'to/etc/sysctl.confandthenrebootorrunthecommand'sysctlvm.overcommit_memory=1'forthistotakeeffect. 14302:S22Dec12:02:55.810#WARNINGyouhaveTransparentHugePages(THP)supportenabledinyourkernel.ThiswillcreatelatencyandmemoryusageissueswithRedis.Tofixthisissuerunthecommand'echonever>/sys/kernel/mm/transparent_hugepage/enabled'asroot,andaddittoyour/etc/rc.localinordertoretainthesettingafterareboot.RedismustberestartedafterTHPisdisabled. 14302:S22Dec12:02:55.810*Theserverisnowreadytoacceptconnectionsonport6380 14302:S22Dec12:02:55.810*ConnectingtoMASTER127.0.0.1:6379 14302:S22Dec12:02:55.810*MASTER<->SLAVEsyncstarted 14302:S22Dec12:02:55.810*NonblockingconnectforSYNCfiredtheevent. 14302:S22Dec12:02:55.811*MasterrepliedtoPING,replicationcancontinue... 14302:S22Dec12:02:55.811*Partialresynchronizationnotpossible(nocachedmaster) 14302:S22Dec12:02:55.815*Fullresyncfrommaster:c5038d1cbe197bbd8c8fee0e719370eac42bd6bc:1 14302:S22Dec12:02:55.865*MASTER<->SLAVEsync:receiving2741bytesfrommaster 14302:S22Dec12:02:55.865*MASTER<->SLAVEsync:Flushingolddata 14302:S22Dec12:02:55.865*MASTER<->SLAVEsync:LoadingDBinmemory 14302:S22Dec12:02:55.866*MASTER<->SLAVEsync:Finishedwithsuccess 使用Redis-Desktop Manager 可以看到,主服务6379和从服务6380都包含session的相关信息。 文章转自:https://my.oschina.net/wangmengjun/blog/810179

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

tomcat8 redis session共享

备注:项目需要由原本的单机扩容到多机服务,历史原因项目里使用session传参的地方比较多。每一处去修改session,改动量较大,回归测试麻烦,也太耗时间,于是想到用redis存储session的方案。主要是使用了开源方案:redisson github地址: https://github.com/redisson/redisson/tree/master/redisson-tomcat redisson.conf 文件配置: https://github.com/redisson/redisson/wiki/2.-Configuration#26-single-instance-mode 使用方法: 第一步:下载对应的jdk、tomcat版本jar包,一共两个,我下载的是jdk8和tomcat8的:redisson-all-3.7.0.jar、redisson-tomcat-8-3.7.0.jar 第二步:将下载好的jar包上传到tomcat的lib目录下: /usr/local/src/tomcat8/lib 第三步:在/usr/local/src/tomcat8/conf/context.xml 配置redisson.conf 文件目录 <Context> <!-- Default set of monitored resources. If one of these changes, the --> <!-- web application will be reloaded. --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- <Manager className="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/redisson.conf" readMode="MEMORY" updateMode="DEFAULT"/> --> <Manager className="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/redisson.conf" readMode=" REDIS " updateMode="DEFAULT"/> </Context> 备注:配置属性里的readMode和updateMode需要注意(选用redis存储session时,需要将readMode改为REDIS): readMode- read attributes mode. Two modes are available: MEMORY- read attributes stored in local Tomcat Session. Default mode. REDIS- read directly from Redis. updateMode- attributes update mode. Two modes are available: DEFAULT- session attributes are stored into Redis only through setAttribute method. Default mode. AFTER_REQUEST- all session attributes are stored into Redis after each request. 第四步:配置redisson需要的数据信息(参考redisson的wiki文档,我使用的单节点模式,找到相应的配置内容): vi /usr/local/src/tomcat8/redisson.conf (context.xml里配置的 catalina.base 是tomcat的根目录) { "singleServerConfig":{ "idleConnectionTimeout":10000, "pingTimeout":1000, "connectTimeout":10000, "timeout":3000, "retryAttempts":3, "retryInterval":1500, "password":"368902***********************62", "subscriptionsPerConnection":5, "clientName":null, "address": "redis://127.0.0.1:6379", "subscriptionConnectionMinimumIdleSize":1, "subscriptionConnectionPoolSize":50, "connectionMinimumIdleSize":32, "connectionPoolSize":64, "database":0, "dnsMonitoringInterval":5000 }, "threads":0, "nettyThreads":0, "codec":{ "class":"org.redisson.codec.JsonJacksonCodec" }, "transportMode":"NIO" } 第五步:重启tomcat后就可以看到redis里有redisson为key的session缓存数据了

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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部分的功能。

用户登录
用户注册