<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2017-06-27
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20170627" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Metron &#x2013; Upgrading</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

                          
        
<script type="text/javascript">$( document ).ready( function() { $( '.carousel' ).carousel( { interval: 3500 } ) } );</script>
          
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                    <a href="http://metron.apache.org/" id="bannerLeft">
                                                                                                <img src="images/metron-logo.png"  alt="Apache Metron" width="148px" height="48px"/>
                </a>
                      </div>
        <div class="pull-right">  </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="http://metron.apache.org/" class="externalLink" title="Metron">
        Metron</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="index.html" title="Documentation">
        Documentation</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Upgrading</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2017-06-27</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 0.4.0</li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">User Documentation</li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
      <li>
    
                          <a href="index.html" title="Metron">
          <i class="icon-chevron-down"></i>
        Metron</a>
                    <ul class="nav nav-list">
                      
      <li class="active">
    
            <a href="#"><i class="none"></i>Upgrading</a>
          </li>
                                                                                                                                                      
      <li>
    
                          <a href="metron-analytics/index.html" title="Analytics">
          <i class="icon-chevron-right"></i>
        Analytics</a>
                  </li>
                                                                                                                                                                                                                                                                                                                                                                                    
      <li>
    
                          <a href="metron-deployment/index.html" title="Deployment">
          <i class="icon-chevron-right"></i>
        Deployment</a>
                  </li>
                      
      <li>
    
                          <a href="metron-docker/index.html" title="Docker">
          <i class="none"></i>
        Docker</a>
            </li>
                      
      <li>
    
                          <a href="metron-interface/metron-config/index.html" title="Config">
          <i class="none"></i>
        Config</a>
            </li>
                      
      <li>
    
                          <a href="metron-interface/metron-rest/index.html" title="Rest">
          <i class="none"></i>
        Rest</a>
            </li>
                                                                                                                                                                                                                                                
      <li>
    
                          <a href="metron-platform/index.html" title="Platform">
          <i class="icon-chevron-right"></i>
        Platform</a>
                  </li>
                                                                                                            
      <li>
    
                          <a href="metron-sensors/index.html" title="Sensors">
          <i class="icon-chevron-right"></i>
        Sensors</a>
                  </li>
              </ul>
        </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <h1>Upgrading</h1>
<p><a name="Upgrading"></a></p>
<p>This document constitutes a per-version listing of changes of configuration which are non-backwards compatible.</p>
<div class="section">
<h2><a name="a0.3.1_to_0.4.0"></a>0.3.1 to 0.4.0</h2>
<div class="section">
<h3><a name="METRON-671:_Refactor_existing_Ansible_deployment_to_use_Ambari_MPack"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-671">METRON-671: Refactor existing Ansible deployment to use Ambari MPack</a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p>Since the Ansible Deployment uses the MPack, RPMs must be built prior to deployment. As a result, <a class="externalLink" href="https://www.docker.com/">Docker</a> is required to perform a Quick-Dev, Full-Dev or Ansible deployment. This effectively limits the build environment to Docker supported <a class="externalLink" href="https://docs.docker.com/engine/installation/#platform-support-matrix">platforms</a>.</p></div></div></div>
<div class="section">
<h2><a name="a0.3.0_to_0.3.1"></a>0.3.0 to 0.3.1</h2>
<div class="section">
<h3><a name="METRON-664:_Make_the_index_configuration_per-writer_with_enableddisabled"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-664">METRON-664: Make the index configuration per-writer with enabled/disabled</a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p>As of 0.3.0 the indexing configuration</p>

<ul>
  
<li>Is held in the enrichment configuration for a sensor</li>
  
<li>Has properties which control every writers (i.e. HDFS, solr or elasticsearch).</li>
</ul>
<p>In the 0.3.1 release, this configuration has been broken out and control for individual writers are separated.</p>
<p>Please see the description of the configurations in the indexing <a class="externalLink" href="https://github.com/apache/metron/tree/Metron_0.3.1/metron-platform/metron-indexing#sensor-indexing-configuration">README</a></p></div>
<div class="section">
<h4><a name="Migration"></a>Migration</h4>
<p>Migrate the configurations from each sensor enrichment configuration and create appropriate configurations for indexing.</p>
<p>For instance, if a sensor enrichment config for sensor <tt>foo</tt> is in <tt>$METRON_HOME/config/zookeeper/enrichments/foo.json</tt> and looks like</p>

<div class="source">
<div class="source">
<pre>{
  &quot;index&quot; : &quot;foo&quot;,
  &quot;batchSize&quot; : 100
}
</pre></div></div>
<p>You would create a file to configure each writer for sensor <tt>foo</tt> called <tt>$METRON_HOME/config/zookeeper/indexing/foo.json</tt> with the contents</p>

<div class="source">
<div class="source">
<pre>{
  &quot;elasticsearch&quot; : {
    &quot;index&quot; : &quot;foo&quot;,
    &quot;batchSize&quot; : 100,
    &quot;enabled&quot; : true
  },
  &quot;hdfs&quot; : { 
    &quot;index&quot; : &quot;foo&quot;,
    &quot;batchSize&quot; : 100,
    &quot;enabled&quot; : true
  }
}
</pre></div></div></div></div>
<div class="section">
<h3><a name="METRON-675:_Make_Threat_Triage_rules_able_to_be_assigned_names_and_comments"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-675">METRON-675: Make Threat Triage rules able to be assigned names and comments</a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p>As of 0.3.0, threat triage rules were defined as a simple Map associating a Stellar expression with a score. As of 0.3.1, due to the fact that there may be many threat triage rules, we have made the rules more complex. To help organize these, we have made the threat triage objects in their own right that contain optional name and optional comment fields.</p>
<p>This essentially makes the risk level rules slightly more complex. The format goes from:</p>

<div class="source">
<div class="source">
<pre>&quot;riskLevelRules&quot; : {
    &quot;stellar expression&quot; : numeric score
}
</pre></div></div>
<p>to:</p>

<div class="source">
<div class="source">
<pre>&quot;riskLevelRules&quot; : [
     {
        &quot;name&quot; : &quot;optional name&quot;,
        &quot;comment&quot; : &quot;optional comment&quot;,
        &quot;rule&quot; : &quot;stellar expression&quot;,
        &quot;score&quot; : numeric score
     }
]
</pre></div></div></div>
<div class="section">
<h4><a name="Migration"></a>Migration</h4>
<p>For every sensor enrichment configuration, you will need to migrate the <tt>riskLevelRules</tt> section to move from a map to a list of risk level rule objects.</p></div></div>
<div class="section">
<h3><a name="METRON-283:_Migrate_Geo_Enrichment_outside_of_MySQL"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-283">METRON-283: Migrate Geo Enrichment outside of MySQL</a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p>As of 0.3.0, a MySQL database was used for storage and retrieval of GeoIP information during enrichment. As of 0.3.1, the MySQL database is removed in favor of using MaxMind&#x2019;s binary GeoIP files and stored on HDFS</p>
<p>After initial setup, this change is transparent and existing enrichment definitions will run as-is.</p></div>
<div class="section">
<h4><a name="Migration"></a>Migration</h4>
<p>While new installs will not require any additional steps, in an existing install a script must be run to retrieve and load the initial data.</p>
<p>The shell script <tt>geo_enrichment_load.sh</tt> will retrieve MaxMind GeoLite2 data and load data into HDFS, and update the configuration to point to this data. In most cases the following usage will grab the data appropriately:</p>

<div class="source">
<div class="source">
<pre>$METRON_HOME/bin/geo_enrichment_load.sh -z &lt;zk_server&gt;:&lt;zk_port&gt;
</pre></div></div>
<p>Additional options, including changing the source file location (which can be a file:// location if the GeoIP data is already downloaded), are available with the -h flag and are also detailed in the metron-data-management README.me  file.</p>
<p>One caveat is that this script will NOT update on disk config files. It is recommended to retrieve the configuration using</p>

<div class="source">
<div class="source">
<pre>$METRON_HOME/bin/zk_load_configs.sh -z &lt;zk_server&gt;:&lt;zk_port&gt; -m DUMP
</pre></div></div>
<p>The new config will be <tt>geo.hdfs.file</tt> in the global section of the configuration. Append this key-value into the global.json in the config directory. A PUSH is unnecessary</p></div></div>
<div class="section">
<h3><a name="METRON-684:_Decouple_Timestamp_calculation_from_PROFILE_GET"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-684">METRON-684: Decouple Timestamp calculation from PROFILE_GET</a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p>During 0.3.1 we decoupled specifying durations for calls to the profiler into a separate function. The consequence is that existing calls to <tt>PROFILE_GET</tt> will need to migrate.</p></div>
<div class="section">
<h4><a name="Migration"></a>Migration</h4>
<p>Existing calls to <tt>PROFILE_GET</tt> will need to change from <tt>PROFILE_GET('profile', 'entity', duration, 'durationUnits')</tt> to <tt>PROFILE_GET('profile', 'entity', PROFILE_FIXED(duration, 'durationUnits'))</tt></p></div></div></div>
<div class="section">
<h2><a name="a0.2.0BETA_to_0.3.0"></a>0.2.0BETA to 0.3.0</h2>
<div class="section">
<h3><a name="METRON-447:_Monit_fails_to_reload_when_upgrading_from_0.2.0BETA_to_master"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-447">METRON-447: Monit fails to reload when upgrading from 0.2.0BETA to master</a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p><tt>/etc/monit.d/enrichment-elasticsearch.monit</tt> was renamed to <tt>/etc/monit.d/indexing-elasticsearch.monit</tt>, however the old file isn&#x2019;t removed via ansible, which causes the below error during an upgrade: <tt>Starting monit: /etc/monit.d/enrichment-elasticsearch.monit:18: Service
name conflict, enrichment already defined
'/usr/local/monit/status_enrichment_topology.sh'</tt></p></div></div>
<div class="section">
<h3><a name="METRON-448:Upgrading_via_Ansible_deployment_does_not_add_topology.classpath"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-448">METRON-448:Upgrading via Ansible deployment does not add topology.classpath </a></h3>
<div class="section">
<h4><a name="Description"></a>Description</h4>
<p>When using Ansible to deploy the latest Metron bits to an existing installation, storm-site is not being updated with the new 0.2.1BETA parameter <tt>topology.classpath</tt>. Topologies are unable to find the client configs as a result.</p></div>
<div class="section">
<h4><a name="Workaround"></a>Workaround</h4>
<p>Set the <tt>topology.classpath</tt> property for storm in Ambari to <tt>/etc/hbase/conf:/etc/hadoop/conf</tt></p></div></div></div>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2017
                        <a href="https://www.apache.org">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

                          
        
                </div>
    </footer>
  </body>
</html>
