<!DOCTYPE html>

<html lang="en-US" prefix="og: http://ogp.me/ns#" ng-app="hortonWorksApp"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>
        
        <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
        <link rel="profile" href="http://gmpg.org/xfn/11">
        <title>Apache Metron Documentation</title>

        <style type="text/css">
            img.wp-smiley,
            img.emoji {
                display: inline !important;
                border: none !important;
                box-shadow: none !important;
                height: 1em !important;
                width: 1em !important;
                margin: 0 .07em !important;
                vertical-align: -0.1em !important;
                background: none !important;
                padding: 0 !important;
            }
        </style>

    <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-78972211-1', 'auto');
        ga('send', 'pageview');

    </script>

    <link rel="stylesheet" id="default-css" href="/css/default.css" type="text/css" media="all">
    <link rel="stylesheet" id="legacy-css" href="/css/legacy.css" type="text/css" media="all">
    <link rel="stylesheet" id="gravityforms-css" href="/css/gravityforms.css" type="text/css" media="all">
    <link rel="stylesheet" id="selectboxit-css" href="/css/selectBoxIt.css" type="text/css" media="all">
    <link href='http://fonts.googleapis.com/css?family=Roboto%20Condensed' rel='stylesheet' type='text/css'>

    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript" src="/js/jquery-migrate.min.js"></script>
    <script type="text/javascript" src="/js/jquery.mobile.custom.min.js"></script>
    <script type="text/javascript" src="/js/isotope.pkgd.min.js"></script>
    <script type="text/javascript" src="/js/navigation.js"></script>
    <script type="text/javascript" src="/js/slider.js"></script>
    <script type="text/javascript" src="/js/jquery.classyloader.js"></script>
    <script type="text/javascript" src="/js/hero-slider.js"></script>
    <script type="text/javascript" src="/js/footer.js"></script>
    <script type="text/javascript" src="/js/top-form.js"></script>
    <script type="text/javascript" src="/js/local6.js"></script>
    <script type="text/javascript" src="/js/select-list.js"></script>
    <script type="text/javascript" src="/js/legacy.js"></script>
    <script type="text/javascript" src="/js/paralax-scroll.js"></script>
    <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
    <script type="text/javascript" src="/js/jquery.selectBoxIt.min.js"></script>
    <script type="text/javascript" src="/js/scroll-slider.js"></script>
    <script type="text/javascript" src="/js/charts-animate.js"></script>
    <script type="text/javascript" src="/js/dotdotdot.js"></script>
    <script type="text/javascript" src="/js/products_scroll.js"></script>
    <script type="text/javascript" src="/js/parallax.min.js"></script>
    <script type="text/javascript" src="/js/parallax.js"></script>
    <script type="text/javascript" src="/js/shb0wjr.js"></script>

    <script>
    window.lsfDataLayer = window.lsfDataLayer || [];
    </script>
    
    <style>
      body {
        font-family: "roboto-condensed", sans-serif;
      }
    </style>

    <!-- Angular js files -->
    <script src="/js/angular.min.js"></script>
    <script src="/js/angular-animate.min.js"></script>
    <script src="/js/app.js"></script>
    <script src="/js/pressReleaseController.js"></script>
    <script src="/js/eventCtrl.js"></script>
    <!-- End Angular js files -->
    <link rel="stylesheet" type="text/css" href="/css/prettify.css">
    <script type="text/javascript" async="" src="/js/munchkin-beta.js"></script>
    <link type="text/css" href="/css/jquery-ui-insightera-custom-1.8.css" rel="stylesheet">
    <style id="style-1-cropbar-clipper">
    /* Copyright 2014 Evernote Corporation. All rights reserved. */
    
    .en-markup-crop-options {
        top: 18px !important;
        left: 50% !important;
        margin-left: -100px !important;
        width: 200px !important;
        border: 2px rgba(255, 255, 255, .38) solid !important;
        border-radius: 4px !important;
    }
    
    .en-markup-crop-options div div:first-of-type {
        margin-left: 0px !important;
    }
    </style>
</head>


<body class="wrap">
  <header>
    <div class="main-navigation" style="height: 85px;">
        <div class="main-nav fixed">
            <div class="wrapper">
                <div class="logo">
                    <a href=""><img src="/img/logo.png" alt="Logo"></a>
                </div>
                <nav>
                    <div class="toggle">
                        <span></span>
                        <span></span>
                        <span></span>
                    </div>
                    <div class="menu-wrapper" style="height: auto; display: block;">
                        <ul class="main-menu">
    <li class="products-menu"><a href="/">Home</a>
    </li>
    <li class="solutions-menu"><a href="/about/">About</a>
    </li>
    <li class="services-menu"><a href="/documentation/">Documentation</a>
    </li>
    <li class="services-menu"><a href="/community/">Community</a>
    </li>
    <li class="training-menu"><a href="/news/">News</a>
    </li>
    <li>
        <button class="button-default button-green" style="line-height:43px;"> <a>Download </a></button>
    </li>
</ul>

                    </div>
                </nav>
            </div>
        </div>
    </div>
</header>


  <section class="hero-second-level no-padding">
    <div class="bg-img">
        <img src="/img/metron_datacenter.jpg" alt="UNLOCK THE POWER OF YOUR DATA" style="width: 100%; left: 0px;" />
    </div>
    <div class="v-middle-wrapper">
        <div class="v-middle-inner">
            <div class="v-middle">
              <h1>real-time big data security </h1>
            </div>
        </div>
    </div>
</section>

<section class="no-padding">
      <div class="fixed-anchor" style="min-height: 99px;">
        <div class="fixed-links" style="top: 63px; transition: top 0.5s ease;">
            <ul>
                <li class="active"><a href="#quickstart">Quick Start</a></li>
                <li class=""><a href="#installation">Installation</a></li>
                <li class=""><a href="#docshome">DOCS Home</a></li>
                <li class=""><a href="#releases">Releases</a></li>
            </ul>
        </div>
    </div>
</section>

<section class="intro-block" id="quickstart">
    <div class="wrapper">
        <div class="text-center">
            <h2>Quick Start</h2>
        </div>
        <div class="content-960 hover-btn text-center">
            <p>The Quick Start installation fully automates the provisioning and deployment of Apache Metron and all necessary prerequisites on a single, virtualized host running on VirtualBox.</p>
            <br />
            <p> This image is designed for quick deployment of a single node Metron cluster running on VirtualBox. This platform is ideal for use by Metron developers. It uses a base image that has been pre-loaded with Ambari and HDP.</p>
            <a class="button-default" href="https://cwiki.apache.org/confluence/display/METRON/Quick+Start" target="_blank">LEARN MORE</a>
        </div>
    </div>
</section>

<section class="events-section info-block darken" id="installation">
    <div class="wrapper"><div class="text-center">
                <h2>Installation</h2>
            </div>
            <div class="col-two text-center">
                <h5 class="bold blue-text">Ansible-based Vagrant single node VM install</h5> <br />
                <p>This is the best place to play with Metron first. This approach uses the Quick Start installation which automates the provisioning and deployment of Apache Metron on a single, virtualized host running on VirtualBox.</p>
            </div>
            <div class="col-two text-center">
                <h5 class="bold blue-text">Fully automated 10 Node Ansible-based install on AWS using Ambari blueprints and AWS APIs</h5> <br />
                <p>If you want a more realistic setup of the Metron application, use this approach. This install creates a full-functioning, end-to-end, multi-node cluster running Apache Metron. Keep in mind that this install will spin up 10 m4.xlarge EC2 instances by default.</p>
            </div>
            </div>
<div class="hover-btn text-center">
    			<a class="button-default" href=" https://cwiki.apache.org/confluence/display/METRON/Installation" target="_blank">LEARN MORE</a>
    		</div>
</section>

<section class="intro-block" id="docshome">
    <div class="text-center">
        <h2>DOCS Home</h2>
    </div>
    <div class="content-960 hover-btn text-center">
        <p> Apache Metron documentation provides information on quickly getting started with Metron, performing a full installation, adding additional data sources, and using Metron to triage alerts. Metron documentation is currently a work in progress. Please check back again later as we continue to grow this documentation set.</p>
        <a class="button-default" href="https://metron.apache.org/current-book/index.html" target="_blank">LEARN MORE</a>
    </div>
</section>

<section class="events-section info-block darken" id="releases">
    <div class="wrapper downloads">
        <div class="text-center">
            <h4>Current Release: 0.7.1</h4>
        </div>
        <div class="content-960 hover-btn text-center">
            <ul>
                <li>
                <a href="http://www.apache.org/dyn/closer.cgi/metron/0.7.1/apache-metron_0.7.1.tar.gz" target="new">
                    apache-metron-0.7.1.tar.gz
                </a>
                 [ <a href="https://www.apache.org/dist/metron/0.7.1/apache-metron_0.7.1.tar.gz.asc" target="new">
                    PGP
                 </a>]
                 [ <a href="https://www.apache.org/dist/metron/0.7.1/apache-metron_0.7.1.tar.gz.sha256" target="new">
                    SHA256
                 </a>]
                 [ <a href="https://www.apache.org/dist/metron/0.7.1/apache-metron_0.7.1.tar.gz.sha512" target="new">
                    SHA512
                 </a>]
                 [ <a href="/current-book/index.html" target="new"> Book </a>]
                </li>
            </ul>
        </div>
    </div>

    <div class="wrapper downloads">
        <div class="text-center">
            <h4>Older Releases</h4>
        </div>
        <div class="content-960 hover-btn text-center">
        If you need access to older releases they can be found in the <a href="https://archive.apache.org/dist/metron/">release archives</a>.
        </div>
    </div>
</section>


  </section>
<section class="intro-block darken" id="docshome">
    <div class="content-960 hover-btn text-center disclaimer">
        <p>Copyright © 2018, The Apache Software Foundation. Licensed under the <a class="white" href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
        <p>Apache Metron and its logo are trademarks of The Apache Software Foundation.</p>
    </div>
</section>

  <script>
  var anchorForId = function (id) {
    var anchor = document.createElement("a");
    anchor.className = "header-link";
    anchor.href      = "#" + id;
    anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
    anchor.title = "Permalink";
    return anchor;
  };

  var linkifyAnchors = function (level, containingElement) {
    var headers = containingElement.getElementsByTagName("h" + level);
    for (var h = 0; h < headers.length; h++) {
      var header = headers[h];

      if (typeof header.id !== "undefined" && header.id !== "") {
        header.appendChild(anchorForId(header.id));
      }
    }
  };

  document.onreadystatechange = function () {
    if (this.readyState === "complete") {
      var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
      if (!contentBlock) {
        return;
      }
      for (var level = 1; level <= 6; level++) {
        linkifyAnchors(level, contentBlock);
      }
    }
  };
</script>


</body>
</html>
