blob: eedcbda61be1ea56aa1e4994b4539710eaf132fb [file] [log] [blame]
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/markdown/Upgrading.md at 2019-05-14
| Rendered using Apache Maven Fluido Skin 1.7
-->
<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="20190514" />
<meta http-equiv="Content-Language" content="en" />
<title>Metron &#x2013; Upgrading</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.7.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.7.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><span class="divider">/</span></li>
<li class=""><a href="http://metron.apache.org/" class="externalLink" title="Metron">Metron</a><span class="divider">/</span></li>
<li class=""><a href="index.html" title="Documentation">Documentation</a><span class="divider">/</span></li>
<li class="active ">Upgrading</li>
<li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2019-05-14</li>
<li id="projectVersion" class="pull-right">Version: 0.7.1</li>
</ul>
</div>
<div class="row-fluid">
<div id="leftColumn" class="span2">
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">User Documentation</li>
<li><a href="index.html" title="Metron"><span class="icon-chevron-down"></span>Metron</a>
<ul class="nav nav-list">
<li><a href="CONTRIBUTING.html" title="CONTRIBUTING"><span class="none"></span>CONTRIBUTING</a></li>
<li class="active"><a href="#"><span class="none"></span>Upgrading</a></li>
<li><a href="metron-analytics/index.html" title="Analytics"><span class="icon-chevron-right"></span>Analytics</a></li>
<li><a href="metron-contrib/metron-docker/index.html" title="Docker"><span class="none"></span>Docker</a></li>
<li><a href="metron-contrib/metron-performance/index.html" title="Performance"><span class="none"></span>Performance</a></li>
<li><a href="metron-deployment/index.html" title="Deployment"><span class="icon-chevron-right"></span>Deployment</a></li>
<li><a href="metron-interface/index.html" title="Interface"><span class="icon-chevron-right"></span>Interface</a></li>
<li><a href="metron-platform/index.html" title="Platform"><span class="icon-chevron-right"></span>Platform</a></li>
<li><a href="metron-sensors/index.html" title="Sensors"><span class="icon-chevron-right"></span>Sensors</a></li>
<li><a href="metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example"><span class="none"></span>Stellar-3rd-party-example</a></li>
<li><a href="metron-stellar/stellar-common/index.html" title="Stellar-common"><span class="icon-chevron-right"></span>Stellar-common</a></li>
<li><a href="metron-stellar/stellar-zeppelin/index.html" title="Stellar-zeppelin"><span class="none"></span>Stellar-zeppelin</a></li>
<li><a href="use-cases/index.html" title="Use-cases"><span class="icon-chevron-right"></span>Use-cases</a></li>
</ul>
</li>
</ul>
<hr />
<div id="poweredBy">
<div class="clear"></div>
<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="span10" >
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<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.7.0_to_0.7.1"></a>0.7.0 to 0.7.1</h2>
<div class="section">
<h3><a name="METRON-2100:_Update_developer_documentation_for_full_dev_management_UI_parser_aggregation_feature_gap"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-2100">METRON-2100: Update developer documentation for full dev management UI parser aggregation feature gap</a></h3>
<p>The original full_dev environment change was actually introduced in Metron 0.7.0. This Jira addresses missing user documentation for the Management UI feature gap for parser aggregation. See <a href="metron-deployment/index.html#Parser_Aggregation_Feature">Parser Aggregation Feature</a> for more details on how to work with and configure parsers with this feature change enabled in full_dev.</p></div>
<div class="section">
<h3><a name="METRON-2053:_Refactor_metron-enrichment_to_decouple_Storm_dependencies"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-2053">METRON-2053: Refactor metron-enrichment to decouple Storm dependencies</a></h3>
<p><tt>org.apache.metron.enrichment.writer.SimpleHbaseEnrichmentWriter</tt> has had its packaged changed to <tt>org.apache.metron.writer.hbase.SimpleHbaseEnrichmentWriter</tt>. It has also been moved from the <tt>metron-platform/metron-enrichment</tt> module to a more appropriate home in <tt>metron-platform/metron-writer</tt>.</p></div>
<div class="section">
<h3><a name="METRON-1929:_Build_GET_ASN_Stellar_function"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-1929">METRON-1929: Build GET_ASN Stellar function</a></h3>
<p>The script for <tt>geo_enrichment_load.sh</tt> has been renamed, and now is <tt>maxmind_enrichment_load.sh</tt>. A couple changes should happen for users who are upgrading.</p>
<ul>
<li>The MaxMind GeoLite2 ASN database should be loaded onto HDFS at /apps/metron/asn/default/GeoLite2-ASN.tar.gz OR the global configuration property <tt>asn.hdfs.file</tt> can be set to point to a custom HDFS location.</li>
<li>Any custom scripts or tasks that use this script should be updated. In addition, this updated script also retrieves the GeoLite2 ASN database. The <tt>-ra</tt> flag can be used to provide a custom location for this database if offline install is needed. Otherwise, it will retrieve the latest from MaxMind.</li>
</ul></div></div>
<div class="section">
<h2><a name="a0.6.0_to_0.7.0"></a>0.6.0 to 0.7.0</h2>
<div class="section">
<h3><a name="METRON-1834:_Migrate_Elasticsearch_from_TransportClient_to_new_Java_REST_API"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-1834">METRON-1834: Migrate Elasticsearch from TransportClient to new Java REST API</a></h3>
<p>The Elasticsearch Java client has now been migrated from TransportClient to the new Java REST client. The motivation for this change is that TransportClient will be deprecated in Elasticsearch 7.0 and removed entirely in 8.0. See <a class="externalLink" href="https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.6/client.html">ES Java API </a> for more details. The primary client-facing change for upgrades will be the new properties for configuring the new client. An explanation of the new properties as well as a mapping from the old properties to the new can be found in <a href="metron-platform/metron-elasticsearch/index.html#Properties">metron-elasticsearch</a> under <tt>es.client.settings</tt>.</p></div>
<div class="section">
<h3><a name="METRON-1855:_Make_unified_enrichment_topology_the_default_and_deprecate_split-join"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-1855">METRON-1855: Make unified enrichment topology the default and deprecate split-join</a></h3>
<p>The unified enrichment topology will be the new default in this release, and the split-join enrichment topology is now considered deprecated. If you wish to keep the deprecated split-join enrichment topology, you will need to make the following changes:</p>
<ul>
<li>In Ambari &gt; Metron &gt; Config &gt; Enrichment set the enrichment_topology setting to &#x201c;Split-Join&#x201d;</li>
<li>If running <tt>start_enrichment_topology.sh</tt> manually, pass in the parameters to start the Split-Join topology as follows
<div>
<div>
<pre class="source">$METRON_HOME/bin/start_enrichment_topology.sh --remote $METRON_HOME/flux/enrichment/remote-splitjoin.yaml --filter $METRON_HOME/config/enrichment-splitjoin.properties
</pre></div></div>
</li>
<li>
<p>Restart the enrichment topology</p>
</li>
</ul></div></div>
<div class="section">
<h2><a name="a0.4.2_to_0.5.0"></a>0.4.2 to 0.5.0</h2>
<div class="section">
<h3><a name="METRON-941:_native_PaloAlto_parser_corrupts_message_when_having_a_comma_in_the_payload"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-941">METRON-941: native PaloAlto parser corrupts message when having a comma in the payload</a></h3>
<p>While modifying the PaloAlto log parser to support logs from newer PAN-OS version and to not break when a message payload contains a comma, some field names were changed to extend the coverage, fix some duplicate names and change some field names to the Metron standard message format.</p>
<p>Installations making use of this parser should check, if the resulting messages still meet their expectations and adjust downstream configurations (i.e. ElasticSearch template) accordingly.</p>
<p><i>Note:</i> Previously, the samples for the test contained a full syslog line (including syslog header). This did - and will continue to - create a broken &#x201c;domain&#x201d; field in the parsed message. It is recommended to only feed the syslog message part to the parser for now.</p></div></div>
<div class="section">
<h2><a name="a0.4.1_to_0.4.2"></a>0.4.1 to 0.4.2</h2>
<div class="section">
<h3><a name="METRON-1277:_STELLAR_Add_Match_functionality_to_language"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-1277">METRON-1277: STELLAR Add Match functionality to language</a></h3>
<p>As we continue to evolve the Stellar language, it is possible that new keywords will be added to the language. This may cause compatablity issues where these reserved words and symbols are used in existing scripts.</p>
<p>Adding <tt>match</tt> to the Stellar lanaguage has introduced the following new reserved keywords and symbols:</p>
<p><tt>match</tt>, <tt>default</tt>, <tt>{</tt>, <tt>}</tt>, &#x2018;=&gt;&#x2019;</p>
<p>Any stellar expressions which use these keywords not in quotes will need to be modified.</p></div>
<div class="section">
<h3><a name="METRON-1158:_Build_backend_for_grouping_alerts_into_meta_alerts"></a><a class="externalLink" href="https://issues.apache.org/jira/browse/METRON-1158">METRON-1158: Build backend for grouping alerts into meta alerts</a></h3>
<p>In order to allow for meta alerts to be queries alongside regular alerts in Elasticsearch 2.x, it is necessary to add an additional field to the templates and mapping for existing sensors.</p>
<p>Two steps must be done for each sensor, but not on each index for each sensor.</p>
<p>First is to update the Elasticsearch template for each sensor, so any new indices have the field:</p>
<div>
<div>
<pre class="source">export ELASTICSEARCH=&quot;node1&quot;
export SENSOR=&quot;bro&quot;
curl -XGET &quot;http://${ELASTICSEARCH}:9200/_template/${SENSOR}_index*?pretty=true&quot; -o &quot;${SENSOR}.template&quot;
sed -i '2d;$d' ./${SENSOR}.template
sed -i '/&quot;properties&quot; : {/ a\
&quot;alert&quot;: { &quot;type&quot;: &quot;nested&quot;},' ${SENSOR}.template
curl -XPUT &quot;http://${ELASTICSEARCH}:9200/_template/${SENSOR}_index&quot; -d @${SENSOR}.template
</pre></div></div>
<p>To update existing indexes, update Elasticsearch mappings with the new field for each sensor. Make sure to set the ELASTICSEARCH variable appropriately.</p>
<div>
<div>
<pre class="source">curl -XPUT &quot;http://${ELASTICSEARCH}:9200/${SENSOR}_index*/_mapping/${SENSOR}_doc&quot; -d '
{
&quot;properties&quot; : {
&quot;alert&quot; : {
&quot;type&quot; : &quot;nested&quot;
}
}
}
'
rm ${SENSOR}.template
</pre></div></div>
<p>For a more detailed description, please see metron-platform/metron-elasticsearch/README.md</p></div>
<div class="section">
<h3><a name="Description"></a>Description</h3>
<p>In the 0.4.2 release,</p></div></div>
<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_enabled.2Fdisabled"></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>
<div>
<pre class="source">{
&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>
<div>
<pre class="source">{
&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>
<div>
<pre class="source">&quot;riskLevelRules&quot; : {
&quot;stellar expression&quot; : numeric score
}
</pre></div></div>
<p>to:</p>
<div>
<div>
<pre class="source">&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>
<div>
<pre class="source">$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 <a class="externalLink" href="file://">file://</a> 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>
<div>
<pre class="source">$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-fluid">
© 2015-2016 The Apache Software Foundation. Apache Metron, Metron, Apache, the Apache feather logo,
and the Apache Metron project logo are trademarks of The Apache Software Foundation.
</div>
</div>
</footer>
</body>
</html>