<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/markdown/metron-deployment/development/centos6/index.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; Metron on CentOS 6</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 ">Metron on CentOS 6</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><a href="../../../Upgrading.html" title="Upgrading"><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-down"></span>Deployment</a>
    <ul class="nav nav-list">
    <li><a href="../../../metron-deployment/Kerberos-ambari-setup.html" title="Kerberos-ambari-setup"><span class="none"></span>Kerberos-ambari-setup</a></li>
    <li><a href="../../../metron-deployment/Kerberos-manual-setup.html" title="Kerberos-manual-setup"><span class="none"></span>Kerberos-manual-setup</a></li>
    <li><a href="../../../metron-deployment/amazon-ec2/index.html" title="Amazon-ec2"><span class="none"></span>Amazon-ec2</a></li>
    <li><a href="../../../metron-deployment/ansible/index.html" title="Ansible"><span class="icon-chevron-right"></span>Ansible</a></li>
    <li><a href="../../../metron-deployment/development/index.html" title="Development"><span class="icon-chevron-down"></span>Development</a>
    <ul class="nav nav-list">
    <li class="active"><a href="#"><span class="none"></span>Centos6</a></li>
    <li><a href="../../../metron-deployment/development/fastcapa/index.html" title="Fastcapa"><span class="none"></span>Fastcapa</a></li>
    <li><a href="../../../metron-deployment/development/ubuntu14/index.html" title="Ubuntu14"><span class="none"></span>Ubuntu14</a></li>
    </ul>
</li>
    <li><a href="../../../metron-deployment/other-examples/index.html" title="Other-examples"><span class="icon-chevron-right"></span>Other-examples</a></li>
    <li><a href="../../../metron-deployment/packaging/ambari/index.html" title="Ambari"><span class="icon-chevron-right"></span>Ambari</a></li>
    <li><a href="../../../metron-deployment/packaging/docker/ansible-docker/index.html" title="Ansible-docker"><span class="none"></span>Ansible-docker</a></li>
    <li><a href="../../../metron-deployment/packaging/docker/deb-docker/index.html" title="Deb-docker"><span class="none"></span>Deb-docker</a></li>
    <li><a href="../../../metron-deployment/packaging/docker/rpm-docker/index.html" title="Rpm-docker"><span class="none"></span>Rpm-docker</a></li>
    <li><a href="../../../metron-deployment/packaging/packer-build/index.html" title="Packer-build"><span class="none"></span>Packer-build</a></li>
    </ul>
</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>Metron on CentOS 6</h1>
<p>This project fully automates the provisioning and deployment of Apache Metron and all necessary prerequisites on a single, virtualized host running CentOS 6.</p>
<p>Metron is composed of many components and installing all of these on a single host, especially a virtualized one, will greatly stress the resources of the host.   The host will require at least 8 GB of RAM and a fair amount of patience.  It is highly recommended that you shut down all unnecessary services.</p>
<div class="section">
<h2><a name="Getting_Started"></a>Getting Started</h2>
<div class="section">
<h3><a name="Prerequisites"></a>Prerequisites</h3>
<p>The computer used to deploy Apache Metron will need to have the following components installed.</p>
<ul>

<li><a class="externalLink" href="https://github.com/ansible/ansible">Ansible</a> 2.4.0+</li>
<li><a class="externalLink" href="https://www.docker.com/community-edition">Docker</a></li>
<li><a class="externalLink" href="https://www.vagrantup.com">Vagrant</a> 2.0+</li>
<li><a class="externalLink" href="https://github.com/devopsgroup-io/vagrant-hostmanager">Vagrant Hostmanager Plugin</a></li>
<li><a class="externalLink" href="https://virtualbox.org">Virtualbox</a> 5.0+</li>
<li>Python 2.7</li>
<li>Maven 3.3.9</li>
<li>C++11 compliant compiler, like <a class="externalLink" href="https://gcc.gnu.org/projects/cxx-status.html#cxx11">GCC</a></li>
</ul>
<p>Running the following script can help validate whether you have all the prerequisites installed and running correctly.</p>

<div>
<div>
<pre class="source">  metron-deployment/scripts/platform-info.sh
</pre></div></div>

<div class="section">
<h4><a name="How_do_I_install_these_on_MacOS.3F"></a>How do I install these on MacOS?</h4>
<p>Any platform that supports these tools is suitable, but the following instructions cover installation on macOS.  The easiest means of installing these tools on a Mac is to use the excellent <a class="externalLink" href="http://brew.sh/">Homebrew</a> project.</p>
<ol style="list-style-type: decimal">

<li>

<p>Install Homebrew by following the instructions at <a class="externalLink" href="http://brew.sh/">Homebrew</a>.</p>
</li>
<li>

<p>Run the following command in a terminal to install all of the required tools.</p>

<div>
<div>
<pre class="source">brew cask install vagrant virtualbox docker ansible
brew cask install caskroom/versions/java8
brew install maven@3.3 git
vagrant plugin install vagrant-hostmanager
open /Applications/Docker.app
</pre></div></div>
</li>
</ol></div></div>
<div class="section">
<h3><a name="Deploy_Metron"></a>Deploy Metron</h3>
<ol style="list-style-type: decimal">

<li>

<p>Ensure that the Docker service is running.</p>
</li>
<li>

<p>Deploy Metron</p>

<div>
<div>
<pre class="source">cd metron-deployment/development/centos6
vagrant up
</pre></div></div>

<p>Should the process fail before completing the deployment, the following command will continue the deployment process without re-instantiating the host.</p>

<div>
<div>
<pre class="source">vagrant provision
</pre></div></div>
</li>
</ol></div>
<div class="section">
<h3><a name="Explore_Metron"></a>Explore Metron</h3>
<p>Navigate to the following resources to explore your newly minted Apache Metron environment.</p>
<ul>

<li><a class="externalLink" href="http://node1:4201">Metron Alerts</a> credentials: user/password</li>
<li><a class="externalLink" href="http://node1:8080">Ambari</a> credentials: admin/admin</li>
</ul>
<p>Connecting to the host through SSH is as simple as running the following command.</p>

<div>
<div>
<pre class="source">vagrant ssh
</pre></div></div>
</div>
<div class="section">
<h3><a name="Working_with_Metron"></a>Working with Metron</h3>
<p>In addition to re-running the entire provisioning play book, you may now re-run an individual Ansible tag or a collection of tags in the following ways.  The following commands will re-run the <tt>sensor-stubs</tt> role on the Vagrant image. This will install and start the sensor stub components.</p>

<div>
<div>
<pre class="source">vagrant --ansible-tags=&quot;sensor-stubs&quot; provision
</pre></div></div>

<p>Tags are listed in the playbooks.  Here are some frequently used tags:</p>
<ul>

<li><tt>hdp-install</tt> - Install HDP</li>
<li><tt>hdp-deploy</tt> - Deploy and Start HDP Services (will start all Hadoop Services)</li>
<li><tt>sensors</tt> - Deploy the sensors (see <a href="#Sensors">Sensors</a> for more details regarding this tag)</li>
<li><tt>sensor-stubs</tt> - Deploy and start the sensor stubs.</li>
</ul>
<div class="section">
<h4><a name="Sensors"></a>Sensors</h4>
<p>By default, the Metron development environment uses sensor stubs to mimic the behavior of the full sensors.  This is done because the full sensors take a significant amount of time and CPU to build, install, and run.</p>
<p>From time to time you may want to install the full sensors for testing (see the specifics of what that means <a href="../../ansible/playbooks/sensor_install.yml">here</a>).  This can be done by running the following command:</p>

<div>
<div>
<pre class="source">vagrant --ansible-skip-tags=&quot;sensor-stubs&quot; up
</pre></div></div>

<p>This will skip only the <tt>sensor-stubs</tt> tag, allowing the ansible roles with the <tt>sensors</tt> tag to be run.  This provisions the full sensors in a &#x2018;testing mode&#x2019; so that they are more active, and thus more useful for testing (more details on that <a href="../../ansible/roles/sensor-test-mode/index.html">here</a>).  <b>However</b>, when vagrant completes the sensors will NOT be running.  In order to start the sensors and simulate traffic through them (which will create a fair amount of load on your test system), complete the below steps:</p>

<div>
<div>
<pre class="source">vagrant ssh
sudo su -
service pcap-replay restart
service yaf restart
service snortd restart
service snort-producer restart
</pre></div></div></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>
