Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 27 min 37 sec ago

Drupal core announcements: BADCamp Sprint Weds 5 Nov to Mon 10 Nov

Wed, 10/22/2014 - 20:04
div class=field field-type-datestamp field-field-start7 div class=field-items div class=field-item odd div class=field-label-inline-first Start:nbsp;/div span class=date-display-start2014-11-05 09:00/spanspan class=date-display-separator - /spanspan class=date-display-end2014-11-10 18:00 America/Los_Angeles/span /div /div /div div class=field field-type-text field-field-event-type div class=field-items div class=field-item odd Sprint /div /div /div div class=field field-type-text field-field-url div class=field-items div class=field-item odd pa href= title= /div /div /div pimg src= /We have a great tradition of extended sprints around big Drupal events. Given that a lot of the Drupal core and contrib developers fly in for these events, it makes a lot of sense to use this opportunity to start sooner and/or extend our stay and work together in one space on the harder problems./p pa href= is next up! BADCamp organizers and sponsors continue to recognize the need for sprints as part of the schedule and are providing space on Wednesday (TBA), great sprint location Thursday through Sunday at the a href= of Fine Arts/a, and a space on Monday after also (TBA). There are already various sprints signed up including emMultilingual, Drupal 8 Criticals, Panopoly, and Frontend/em. We are really friendly and need all kinds of expertise!/p pstrongNow is the time to consider if you can be available and book your travel and hotel accordingly!/strong/p div style=text-align: center; margin: 2em; a href= class=link-buttonspanJoin the sprinters -- sign up now!/span/a/div !--break--!--break--div style=border: 1em solid #ffffcc; padding: 1em; margin-bottom: 2em; h3 class=contentPractical details/h3 dl dtDates/dt ddNov 5 to 10 (entire BADCamp and one extra day before and after)./dd dtTimes and locations/dt dd table tr thDay/Time/th thLocation/th /tr tr tdWeds Nov 5, 9am to TBA/td tdLocation, a href=TBA/a/td /tr tr tdThurs Nov 6 - Sun Nov 9, 9am to 6pm every day, only open daytime/td tdSprint room at the venue: a href= of Fine Arts/a, a href=address/a./td /tr tr tdMon Nov 10, 9am to TBA/td tdChapter Three, a href=TBA/a/td /tr /table /dd !-- dtSubscribe as calendar events/dtdd a href= even created a Google Calendar/a that you can subscribe to (a which contains all the sprint venue information at any point in time. /dd --!-- dtSubscribe as calendar events/dtdd a href= even created a Google Calendar/a that you can subscribe to (a which contains all the sprint venue information at any point in time. /dd --/dl /div h3 class=contentSponsors/h3 pa href= (a href= and a href= Three/a (a href= !-- h3 class=contentLooking for sponsors/h3 We are looking for more sponsors to be able to pay for extra expenses. If you are interested sponsoring or if you need sponsors to cover expenses, please contact me at a href= title= --!-- h3 class=contentLooking for sponsors/h3 We are looking for more sponsors to be able to pay for extra expenses. If you are interested sponsoring or if you need sponsors to cover expenses, please contact me at a href= title= --h3 class=contentFrequently asked questions/h3 h4What is a sprint?/h4 pDrupal sprints are opportunities to join existing teams and further Drupal the software, our processes, and so on./p h4Do I need to be a pro developer?/h4 pNo, not at all. First of all sprints include groups working on user experience, designs, frontend guidelines, software setup, testing improvements, figuring out policies, etc. However you can be more productive at most sprints if you have a laptop./p h4Why are there 6 consecutive days of sprints?/h4 pThis is a time when many people in the Drupal community get together. We try to use this time to share our knowledge as well as further the platform in all possible ways. Therefore there is almost always an opportunity and a place to participate in moving Drupal forward./p h4What if I'm new to Drupal and/or sprinting, how can I join?/h4 pIf you feel new and would love helping hands, please attend. It can take a day or a couple days to get set up and find something to work on. But, the great thing is, we have plenty of days to do that, find a group to work with, and get things really moved forward together./p h4Further questions?/h4 pa href= me (YesCT)/a, I am happy to answer./p style#node-427578 .picture, #node-427578 h3 { display: none; } #node-427578 .field-type-datestamp { margin: 0 0 2em 0; } #node-427578 dl { margin-bottom: 1em; } #node-427578 dd { margin-top: 0.5em; } #node-427578 h3.content { display: block; }/style

Modules Unraveled: 123 Planning Drupal Events with Bert Boerland and Imre Gmelig Meyling - Modules Unraveled Podcast

Wed, 10/22/2014 - 19:54
div class=field field--name-field-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item evenimg typeof=foaf:Image src= width=350 height=178 alt=Photo of Bert Boerland and Imre Gmelig //div/div/divspan class=submitted-byPublished: Wed, 10/22/14/spandiv class=field field--name-field-podcast-file field--type-file field--label-hiddendiv class=field__itemsdiv class=field__item evendiv class=mediaelement-audioaudio src= class=mediaelement-formatter-identifier-1414013214-0 controls=controls /audiodiv class=mediaelement-download-linka href= this episode/a/div/div/div/div/divdiv class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item even property=content:encodedh2Dutch Drupal Foundation/h2 ulliWhat is the Dutch Drupal Foundation? ulliDutch Drupal Foundation supports Dutch Drupal Community. We’re groing. Trying to handle work in a professional way in a voluntary way. Lead double lives: daytime job versus community commitments./li /ul/li liHow is this different from the Drupal Association?/li liHow has that been going for you?/li liWould you recommend other regional areas start something similar?/li /ulh2Events/h2 ulliWhat events have you organized recently? ulliDrupal Events in Dutch speaking part of EU (Belgium and Netherlands) became big. E.g. DrupalJam (350ppl), Drupal Training Day (250 students). Relatively large events become routine. Now ppl spreading cross border on tour to share experience/li /ul/li liTell me about DrupalJam. What is it, and how long have you been putting it on? ulliDrupalJam largest event in Netherlands. Started small in 2007 with 30 persons and some pizza boxes in a basement. Now 350 ppl / €25K. Outgrown study dorm and pizza’s. Also started Drupal Training Day (largest worldwide) and Drupal Splash Awards. Lot of work and commitment. Getting more serious. Growing pains expected/li /ul/li liWhat are some difference in paid events vs. free events?/li liWhat has the attendance been like for free events?/li liWhere does the income come from?/li liHow do you get sponsors?/li liWhen do you recommend charging a ticket price to attendees?/li liHow have you seen your community transition from coders who just come to code for fun, to people who are making their living using Drupal? ulliCome for Drupal, stay for code. Sounds fun. It is. But business side of things and commitment to making this work professionally is different cake./li liBalance between business side and community side, which is a recurring topic for everything we do in the community. Drupal has become enterprise platform, community still many smaller agencies w/ different values (see incline on Gartner oct. 2014)/li /ul/li liWhat does the Drupal landscape look like in europe ulliPan EU events: Frontend United, CxO, Drupal Government Days Brussels 2009/li liDrupalEU/li /ul/li /ul/div/div/divdiv class=field field--name-field-items-mentioned field--type-link-field field--label-abovediv class=field__labelEpisode Links:nbsp;/divdiv class=field__itemsdiv class=field__item evena href= rel=nofollow target=_blankBert Boerland on class=field__item odda href= rel=nofollow target=_blankImre Gmelig Meijling on class=field__item evena href= rel=nofollow target=_blankBert Boerland on Twitter/a/divdiv class=field__item odda href= rel=nofollow target=_blankImre Gmelig Meijling on Twitter/a/divdiv class=field__item evena href= rel=nofollow target=_blankBert on LinkedIn/a/divdiv class=field__item odda href= rel=nofollow target=_blankStitchting Drupal in Nederlands/a/divdiv class=field__item evena href= rel=nofollow target=_blankDrupalJam/a/divdiv class=field__item odda href= rel=nofollow target=_blankDrupal Training Day/a/div/div/divdiv class=field field--name-field-tags field--type-taxonomy-term-reference field--label-abovediv class=field__labelTags:nbsp;/divdiv class=field__itemsdiv class=field__item evena href=/tags/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal/a/divdiv class=field__item odda href=/tags/community typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=community/a/divdiv class=field__item evena href=/tags/events typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=events/a/divdiv class=field__item odda href=/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=planet-drupal/a/div/div/div

Acquia: DrupalCon Amsterdam Top Ten – Part 2 of 2 with Kris Vanderwater

Wed, 10/22/2014 - 18:41
div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-items div property=content:encoded class=field-item evenpstrongPart 2 of 2/strong – Kris Vanderwater (a href=, Acquia’s Developer Evangelist, and I got together in a Google Hangout to catch up on our impressions of DrupalCon Amsterdam. We prepared a list of our top ten sessions from the Con for you to catch up with at home (technically nine sessions and one “other cool thing”). In our list, there’s a little something for most everyone, from coders, to themers, to site builders, to those of us who pitch sell Drupal to clients – but we would recommend all of these sessions to anyone involved in Drupal. See how the other side lives!/p /div /div /div span property=dc:title content=DrupalCon Amsterdam Top Ten – Part 2 of 2 with Kris Vanderwater class=rdf-meta/span

CiviCRM Blog: BADCamp: November 6-9

Wed, 10/22/2014 - 17:37
div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-item even property=content:encodeddiv a href=https://badcamp.netBADCamp/a (a href=https://badcamp.netBay Area Drupal Camp/a) will take place at the Palace of Fine Arts, November 6-9. Kicking off with a href= summits/a, free a href= training/a, and a two full days of a href=, BADCamp is an excellent opportunity to immerse yourself in Drupal for several days and have a blast doing it./div div  /div div A number of CiviCRM developers and providers will participate in the non-profit summit on Thursday, November 6th (a href= now to attend!/a) and a CiviCRM BoF will be organized on Saturday, November 8 along with the scheduled sessions./div div  /div div If you plan to attend, let us know in the comments. Based on the participation we may organize a mini-sprint or a community get-together./div /div /div div class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-hidden clearfix ul class=field-items li class=field-item even a href=/category/civicrm-blog-categories/civicrm typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=CiviCRM/a /li li class=field-item odd a href=/category/civicrm-blog-categories/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a /li /ul /div

Bevan Rudge: Your Drupal website's backdoor

Wed, 10/22/2014 - 04:09
pI estimate hundreds of thousands of Drupal websites now have backdoors; between ten and fifty percent of all Drupal websites. Automated Drupageddon exploits were in the wild within hours of the announcement. strongUpdating or patching Drupal does not fix backdoors/strong that attackers installed before updating or patching Drupal. Backdoors give attackers admin access and allow arbitrary PHP execution./p pa href= target=_blankread more/a/p

Aten Design Group: Automating Drupal Configuration

Tue, 10/21/2014 - 23:42
img src= width=1000 height=600 alt= /pLast month at the a href= Denver Drupal meeting/a, Nick Switzer from Elevated Third showed how they are using a structured spreadsheet format for describing their Drupal configuration in a way that makes it easy to build. They based their spreadsheet format on a href= template Palantir published/a a while ago, and someone mentioned Lullabot has been using something similar. This looked to me a lot like what we were doing at Aten, even though we had missed the de facto standard that was developing. We are now using that de facto standard./p pThis was particularly interesting to me because I've been doing a lot of work lately around a href= interfaces/a and a href= Drupal configuration/a. Spreadsheets are declarative and a href= has a working YAML import, so when we got to the question and answer portion of the presentation, I knew exactly what I wanted to ask: Why are we still building Drupal sites manually when these spreadsheets contain everything we would need to automate it?/p pNo one offered a reason emnot/em to automate this process, so I volunteered to present at a href= month's meeting/a and show an automated process that did not yet exist. I have since built that process. It still needs a lot more testing and bug fixes, but it's already a compelling alternative to the traditional Drupal site building process./p h2Sheet2Module/h2 pa href= takes a Google spreadsheet and produces a Drupal module that will create the configuration described therein. The exported modules use YAML files for configuration, which works natively in Drupal 8, and works in Drupal 7 with the a href= YAML submodule/a. With a standard spreadsheet format, Sheet2Module, and CINC YAML, strongyou can build a reasonably complex Drupal site configuration in a few minutes/strong. The process looks like this:/p ol liDescribe your Drupal configuration in a Google spreadsheet./li liUse Sheet2Module to auto-generate a module from that spreadsheet./li liEnable that module to auto-generate your Drupal configuration./li li(Optional) Spend the hours you would otherwise spend on Drupal configuration helping improve this process./li /ol pBoth Sheet2Module and CINC YAML almost certainly have bugs, as they've had very limited testing. Both are open source (CINC on, a href= on GitHub/a), and patches and pull requests will be met with enthusiastic appreciation. Beyond my appreciation, I'm convinced custom-tailored interfaces like this are the future of Drupal configuration, and you have a lot to gain from helping shape that future./p pOutside code contributions, simply trying out the process and giving feedback is very useful, and a good way to make sure this works for your own workflow. Even the incomplete current solution will likely save you hours on your next Drupal build, and you can still manually add any configuration that doesn't work automatically. So you have nothing to lose and hours to gain by trying it out./p h2Drupal Spreadsheet Standard/h2 pI suspect there are more than a few shops already using a similar spreadsheet format to describe Drupal configuration, so before we go too far down the path of building tools around this format, we should turn this into a real, documented community standard. To that end, I've started creating a href= Drupal Configuration Spreadsheet Standard on GitHub/a. If you're already using spreadsheets to describe your Drupal configuration, take a look at the documentation and contribute your own format improvements to the wider community. If you're just getting started using spreadsheets to describe your Drupal configuration, this is a good place to start./p h2Own Your Process/h2 pEven if you're not using spreadsheets to describe Drupal configuration, it's worth taking a look at this automation for ideas on how you can improve your own process. I've mentioned before that a href= declarative format for Drupal configuration/a adopted in Drupal 8 (and available Drupal 7 with CINC) allows us all to customize our workflows. I'm going to keep mentioning it until this becomes common enough in the Drupal community that it's boring to mention. But for now, this is still a new and exciting space to be working in, and you should join the fun./p

Creative Juices: 27 Questions (and Answers) from My First Drupal 8 Site Build

Tue, 10/21/2014 - 19:10
span class=field field-node--title field-name-title field-type-string field-label-hidden data-quickedit-field-id=node/10/title/en/rss27 Questions (and Answers) from My First Drupal 8 Site Build/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden data-quickedit-field-id=node/10/body/en/rss div class=field-items div class=field-item property=schema:textI recently built my first site with Drupal 8, off of the public beta. It was a great experience. I kept a list of questions as I worked, and wrote down the answers when I found them./div /div /div span class=field field-node--uid field-name-uid field-type-entity-reference field-label-hidden data-quickedit-field-id=node/10/uid/en/rssspan lang= about=/user/1 typeof=schema:Person property=schema:name datatype=matt/span/span span class=field field-node--created field-name-created field-type-created field-label-hidden data-quickedit-field-id=node/10/created/en/rssTue, 10/21/2014 - 13:10/span

Code Karate: Drush Cheat Sheet

Tue, 10/21/2014 - 17:42
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpAs developers we always are looking for ways to become more efficient. After all, time is money./p/div/div/div Inline Entity Display

Tue, 10/21/2014 - 17:31
p At we love the Drupal ecosystem and it became very important to us to give back and Today we're proud to announce a new module that we hope will help you ! /p p Inline Entity Display module will help you handle the display of referenced entity fields directly in the parent entity. br For exemple if you reference a taxomony Tags to an Article node, you will be able directly in the manage display of the article to display tags' fields. It can become very usefull with more complex referenced entity like field collection for exemple. /p quoteVOIR LE MODULE : a href= target=_blank brbr img style=max-width:100% src= brbr p bFeatures/b brbr - You can control, for each compatible reference field instances, if the fields from the referenced entities would be available as extra fields. Disabled by default. brbr - You can manage the visibility of the referenced entities fields on the manage display form. Hidden by default. brbr - View modes are added to represent this context and manage custom display settings for the referenced entities fields in this context {entity_type}_{view_mode} Example: Node: Teaser is used to render referenced entities fields, when you reference an entity into a node, and you view this node as a teaser if there are no custom settings for this view mode, fields are rendered using the default view mode settings. brbr - Extra data attributes are added on the default fields markup, so the field of the same entity can be identified. brbr b Compatible with Field group on manage display form. brbr Compatible with Display Suite layouts on manage display form. /b brbr /p p bRequirements/b brbr - Entity APIbr - One of the compatible reference fields module. /p br p bTutorials/b brbr a href= br The install of this module will come automatically with these modules: entity_reference, field_collection, field_group, display suite. /p br quoteVOIR LE MODULE : a href= target=_blank brbrbr pbWe are currently developping a similar module for Drupal 8 but more powerful and more flexible, Stay tuned !/b/p

Blink Reaction: Blog and ebook Series; Responsive Content and Design

Tue, 10/21/2014 - 17:23
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpBlink Reaction's Director of IT, Kenny Silanskas takes a look at why content is crucial when it comes to creating responsive design. Here Kenny breaks it down with a few easy sports analogies. /p /div/div/div

Drupalize.Me: Including Image Styles With Your Drupal 8 Theme

Tue, 10/21/2014 - 15:21
div class=field field-name-body field-type-text-with-summary field-label-hidden text-content text-secondarydiv class=field-itemsdiv class=field-item evenpOne of many new features in Drupal 8, made possible by the configuration management system, is the ability to add a default image style to your theme, instead of needing to use a module in tandem with your theme, or creating the image style by hand. Here's a look at working with this new feature in Drupal 8./p /div/div/divdiv id=comment-wrapper-nid-1878/div

Cocomore: DrupalCon Amsterdam 2014

Tue, 10/21/2014 - 14:37
img src=/sites/default/files/img_20141001_152214-smile_0.jpg width=550 height=413 alt=img_20141001_152214-smile_0.jpg /br / pa href= target=_blankread more/a/p

undpaul: Make your styleguide a living styleguide!

Tue, 10/21/2014 - 08:09
div class=field field-name-field-blog-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/en/blog/2014/10/21/make-your-styleguide-living-styleguideimg src= width=220 height=224 alt= title=Generated styleguide //a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpDon't you know that, too? You or your team is building a site and during this process all implemented parts are styled through templates and CSS. The CSS files (at best you are using a CSS preprocessor like a href= are getting bigger, more sophisticated and even more confusing - not to mention that these files are getting almost unmaintainable and more and more error-prone./p/div/div/divdiv class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/en/blog/tags/drupal-planet-englishdrupal planet english/a/divdiv class=field-item odda href=/en/blog/tags/cssCSS/a/div/div/div

Drupal @ Penn State: Drupal speed tuning: analyzing and further optimizing Pressflow

Mon, 10/20/2014 - 22:46
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpTL;DR: I've created a fork of Pressflow for the purposes of conversation and analysis -- a href= pHistory lesson/p/div/div/div

Acquia: DrupalCon Amsterdam Top Ten – Part 1 of 2 with Kris Vanderwater

Mon, 10/20/2014 - 19:34
div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-items div property=content:encoded class=field-item evenpstrongPart 1 of 2/strong – Kris Vanderwater (a href=, Acquia’s Developer Evangelist, and I got together in a Google Hangout to catch up on our impressions of DrupalCon Amsterdam. We prepared a list of our top ten sessions from the Con for you to catch up with at home (technically nine sessions and one “other cool thing”). In our list, there’s a little something for most everyone, from coders, to themers, to site builders, to those of us who pitch sell Drupal to clients – but we would recommend all of these sessions to anyone involved in Drupal. See how the other side lives!/p /div /div /div span property=dc:title content=DrupalCon Amsterdam Top Ten – Part 1 of 2 with Kris Vanderwater class=rdf-meta/span

SitePoint PHP Drupal: Drupal 8 Hooks and the Symfony Event Dispatcher

Mon, 10/20/2014 - 18:00
ppWith the incorporation of a href= Symfony components into Drupal/a in its 8th version, we are seeing a shift away from many emDrupalisms/em towards more modern PHP architectural decisions. For example, the both loved and hated hook system is getting slowly replaced. Plugins and annotations are taking away much of the need for codeinfo/code hooks and the Symfony Event Dispatcher component is replacing some of the eminvoked/em hooks. Although they remain strong in Drupal 8, it’s very possible that with Drupal 9 (or maybe 10) hooks will be a href= removed/a. /p pimg src= alt= title=//p pIn this article we are going to primarily look at how the Symfony Event Dispatcher component works in Drupal. Additionally, we will see also how to invoke and then implement a hook in Drupal 8 to achieve similar goals as with the former. /p pTo follow along or to get quickly started, you can find all the code we work with here in a href= repository/a. You can just install the module and you are good to go. The version of Drupal 8 used is the first BETA release so it’s preferable to use that one to ensure compatibility. Alpha 15 should also work just fine. Let’s dive in./p h3 id=what-is-the-event-dispatcher-componentWhat is the Event Dispatcher component?/h3 pA very good definition of the Event Dispatcher component can be found on the a href= website/a:/p blockquote pThe EventDispatcher component provides tools that allow your application components to communicate with each other by dispatching events and listening to them./p /blockquote pI recommend reading up on that documentation to better understand the principles behind the event dispatcher. You will get a good introduction to how it works in Symfony so we will not cover that here. Rather, we will see an example of how you can use it in Drupal 8./p/ppemContinue reading %a rel=nofollow href= 8 Hooks and the Symfony Event Dispatcher/a%/em/p frontpage posts: Let's fix critical Drupal 8 issues together!

Mon, 10/20/2014 - 17:57
pEvery a href= at noon Pacific/a (3pm New York, 9pm Berlin, 6am Saturday in Sydney) I will be in #drupal-contribute helping people fix critical issues. I will prepare 2-3 issues with up to date, actionable issue summaries, familiarize myself with the problems and the suggested solution in the issue so that I can answer questions./p pIf you're someone who has already worked some in the issue queue (so are familiar with patches, coding standards, etc.), even if your experience is not in the core queue, please come by! It's helpful if you know something of Drupal 8 as well, but not necessary./p pIf you're new to contributing to Drupal in general, you can go to a href= title= for a session or two to learn the skills you need to fix critical issues. If you're new to Drupal 8, a href= title= is a great starting point./p pHope to see you there!/p

Phase2: Simplify Your Logstash Configuration

Mon, 10/20/2014 - 16:16
div id=mmeditor div id=preview_div pAs I mentioned in my a href= post/a, I got a chance to upgrade the ELK stack last week. In doing so, I got to take a look at a Logstash configuration that I created over a year ago, and in the course of doing so, clean up some less-than-optimal configurations based on a year worth of experience and simplify the configuration file a great deal./p h2 id=the-drupalorg-logging-setupThe Logging Setup/h2 is served by a large (and growing) number of servers. They all ship their logs to a central logging server for archival, and around a month#8217;s worth are kept in the ELK stack for analysis./p pLogs for Varnish, Apache, and syslog are forwarded to a centralized log server for analysis by Logstash. Drupal messages are output to syslog using Drupal core#8217;s syslog module so that logging does not add writes to;s busy database servers. (@TODO: Check if these paths can be published.) Apache logs end up incode/var/log/apache_logs/$MACHINE/$VHOST/transfer/$DATE.log/code, Varnish logs end up incode/var/log/varnish_logs/$MACHINE/varnishncsa-$DATE.log/code and syslog logs end up in code/var/log/HOSTS/$MACHINE/$DATE.log/code. All types of logs get gzipped 1 day after they are closed to save disk space./p h2 id=pulling-contextual-smarts-from-logsPulling Contextual Smarts From Logs/h2 pThe Varnish and Apache logs do not contain any content in the logfiles to identify which machine they are from, but the a href= input/a sets a codepath/code field that can be matched with grok to pull out the machine name from the path and put it into the codelogsource/code field, which Grok#8217;s a href= pattern will set when analyzing syslog logs./p pFiltering on the codelogsource/code field can be quite helpful in the Kibana web UI if a single machine is suspected of behaving weirdly./p h2 id=using-grok-overwriteUsing Grok Overwrite/h2 pConsider this snippet from the original version of the Varnish configuration. As I mentioned in my presentation, Varnish logs are nice in that they inclue the HTTP Host header so that you can see exactly which hostname or IP was requested. This makes sense for a daemon like Varnish which does not necessarily have a native concept of virtual hosts (vhosts,) whereas nginx and Apache default to logging by vhost./p pEach Logstash configuration snippet shown below assumes that Apache and Varnish logs have already been processed using thea href= codegrok/code pattern, like so./ppre class=crayon-plain-tagfilter { if [type] == quot;varnishquot; or [type] == quot;apachequot; { grok { match =amp;gt; [ quot;messagequot;, quot;%{COMBINEDAPACHELOG}quot; ] } } }/prepThe following snippet was used to normalize Varnish#8217;s request headers to not include https?:// and the Host header so that thecoderequest/code field in Apache and Varnish logs will be exactly the same and any filtering of web logs can be performed with the codevhost/code andcodelogsource/code fields./ppre class=crayon-plain-tagfilter { if [type] == quot;varnishquot; { grok { # Overwrite host for Varnish messages so that it's not always quot;loghostquot;. match =amp;gt; [ quot;pathquot;, quot;/var/log/varnish_logs/%{HOST:logsource}quot; ] } # Grab the vhost and a quot;requestquot; that matches Apache from the quot;requestquot; variable for now. mutate { add_field =amp;gt; [ quot;full_requestquot;, quot;%{request}quot; ] } mutate { remove_field =amp;gt; quot;requestquot; } grok { match =amp;gt; [ quot;full_requestquot;, quot;https?://%{IPORHOST:vhost}%{GREEDYDATA:request}quot; ] } mutate { remove_field =amp;gt; quot;full_requestquot; } } }/prepAs written, this snippet copies the coderequest/code field into a new field called codefull_request/code and then unsets the original coderequest/code field and then uses a codegrok/code filter to parse both the codevhost/code and coderequest/code fields out of that synthesized codefull_request/code field. Finally, it deletescodefull_request/code./p pThe original approach works, but it takes a number of step and mutations to work. The codegrok/code filter has a parameter calledcodeoverwrite/code that allows this configuration stanza to be considerably simlified. The codeoverwrite/code paramter accepts an array of values thatcodegrok/code should overwrite if it finds matches. By using codeoverwrite/code, I was able to remove all of the codemutate/code filters from my configuration, and the enture thing now looks like the following./ppre class=crayon-plain-tagfilter { if [type] == quot;varnishquot; { grok { # Overwrite host for Varnish messages so that it's not always quot;loghostquot;. # Grab the vhost and a quot;requestquot; that matches Apache from the quot;requestquot; variable for now. match =amp;gt; { quot;pathquot; =amp;gt; quot;/var/log/varnish_logs/%{HOST:logsource}quot; quot;requestquot; =amp;gt; quot;https?://%{IPORHOST:vhost}%{GREEDYDATA:request}quot; } overwrite =amp;gt; [ quot;requestquot; ] } } }/prepMuch simpler, isn#8217;t it? 2 codegrok/code filters and 3 codemutate/code filters have been combined into a single codegrok/code filter with two matching patterns and a single field that it can overwrite. Also note that this version of the configuration passes a hash into the codegrok/code filter. Every example I#8217;ve seen just passes an array to codegrok/code, but a href= documentation for the grok filter/a states that it takes a hash, and this works fine./p h2 id=ensuring-field-typesEnsuring Field Types/h2 pRecent versions of Kibana have also gotten the useful ability to do statistics calculations on the current working dataset. So for example, you can have Kibana display the mean number of bytes sent or the standard deviation of backend response times (if you are capturing them #8211; see a href= DrupalCon Amsterdam slides for more information on how to do this and how to normalize it between Apache, nginx, and Varnish/a.) Then, if you filter down to all requests for a single vhost or a set of paths, the statistics will update./p pKibana will only show this option for numerical fields, however, and by default any data that has been parsed with a codegrok/code filter will be a string. Converting string fields to other types is a much better use of the codemutate/code filter. Here is an example of converting the bytes and the response code to integers using a mutate filer./p p@TODO: Test that hash syntax works here!/ppre class=crayon-plain-tagfilter { if [type] == quot;varnishquot; or [type] == quot;apachequot; { mutate { convert =amp;gt; { [ quot;bytesquot;, quot;responsequot; ] =amp;gt; quot;integerquot;, } } } }/prep/p h2 id=lessons-learnedLessons Learned/h2 pLogstash is a very powerful tool, and small things like the codegrok/codecodeoverwrite/code parameter and the codemutate/code codeconvert/code parameter can help make your log processing configuration simpler and result in more usefulness out of your ELK cluster. Check out Chris Johnson#8217;s post about adding a title=Permalink to Adding MySQL Slow Query Logs to Logstash href= rel=bookmarkMySQL Slow Query Logs to Logstash/a!/p pIf you have any other useful Logstash tips and tricks, leave them in the comments!/p pnbsp;/p /div /div Drupal Blog: Major Drupal 7 Security Vulnerability - Update Now!

Mon, 10/20/2014 - 16:13
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpLast week the Drupal security team a href= the existence of a major security vulnerability in all versions of Drupal 7. This vulnerability is rated as ldquo;highly criticalrdquo; because it allows an attacker to take full control of your site remotely, without needing to log in as a privileged user. Attacks using this vulnerability are already being a href= target=_blankreported/a./ppIf 4Site built your Drupal 7 site, if we handle your site maintenance, or if you#39;re just looking for someone to help you apply the update on your site and keep your site secure, please a href= us/a!/p/div/div/div

Bluespark Labs: Uninstalling and purging field modules all at once

Mon, 10/20/2014 - 13:14
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even pSometimes we want to uninstall a module from our Drupal site but we can't do it because we get this dependency: emRequired by: Drupal (Field type(s) in use - see Field list)/em. Even if you delete the fields provided by the module via the UI or programmatically by executing strongfield_delete_field() /strongfunction you will get a new dependency emRequired by: Drupal (Fields pending deletion)/em./p pThese dependencies are created by Drupal core to avoid that a module is uninstalled until all the data related to its fields is removed from the database, in order to maintain consistency./p pThis has several drawbacks, the first one being that you can't uninstall your module when you want, and you have to wait until all the field data values are removed from the database (The rather strangely named strongfield_deleted_data_XX/strong and strongfield_deleted_revision_XX/strong tables) and the meta-information stored in field_config and field_config_instance tables is removed. And most importantly, nobody actually knows when this is going to happen! These database rows are removed in batches on each cron task execution. So depending on our cron regularity and the amount of data stored in our field tables, this tasks can last for minutes to weeks./p pThis is a problem because, naturally, we want to uninstall our module now and not be forced to check periodically our production database to see if we are allowed to uninstall the module once all that information has been removed from the database./p pTo avoid such situations and regain control, you can perform all these tasks in a stronghook_update_N()/strong function, forcing the deletion of all the information and finally uninstalling the module. You can check the code in the gist below:/p pscript src= pThe job is divided in three parts: The data definition, field data purge and module list clean./p pIn the data definition task we provide all the required data we need to perform the task, the name of the field to delete, and given that information, we get the field_info array and the name of the module to be uninstalled. Finally, field_delete_field() is executed./p pAfter that the field data is purged in the batch body, and since we don't know how much data we will have to purge, we remove just 100 database rows per batch execution. After each purge we check if all the data has been removed to decide if we have to remove more data from the database or continue to the final part./p pOnce all the data and metadata related to the module is removed from the database, the Drupal field types dependency is gone and we are granted the ability to disable and uninstall our module cleanly. Finally, we can drop the empty field_deleted_data_XX and field_deleted_revision_XX tables to keep clean our database./p pUsing this approach, we have two key benefits: stronga./strong we are sure that the module is disabled and our database is clean, and strongb./strong we are confident that we can remove the module from our repository, given that in the next deploy we won't get any dependency conflict with that module./p /div/div/divdiv class=field field-name-field-blog-tags field-type-taxonomy-term-reference field-label-abovediv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/blog/drupal-planetDrupal Planet/a/div/div/div