For more applications, see Applications.
Eagle has multiple distributed real-time frameworks for efficiently developing highly scalable monitoring applications.
Real-time: Apache Storm (Execution Engine) + Kafka (Message Bus)
Declarative Policy: SQL (CEP) on Streaming from hadoopJmxMetricEventStream [metric == “hadoop.namenode.fsnamesystemstate.capacityused” and value > 0.9] select metric, host, value, timestamp, component, site insert into alertStream;
Dynamical onboarding & correlation
No downtime migration and upgrading
Light-weight ORM Framework for HBase/RDMBS
@Table("HbaseTableName") @ColumnFamily("ColumnFamily") @Prefix("RowkeyPrefix") @Service("UniqueEntitytServiceName") @JsonIgnoreProperties(ignoreUnknown = true) @TimeSeries(false) @Indexes({ @Index(name="Index_1_alertExecutorId", columns = { "alertExecutorID" }, unique = true)}) public class AlertDefinitionAPIEntity extends TaggedLogAPIEntity{ @Column("a") private String desc;
Full-function SQL-Like REST Query
Query=UniqueEntitytServiceName[@site="sandbox"]{*}
Optimized Rowkey design for time-series data, optimized for metric/entity/log, etc. different storage types
Rowkey ::= Prefix | Partition Keys | timestamp | tagName | tagValue | …
Secondary Index Support @Indexes({@Index(name=“INDEX_NAME”, columns = { “SECONDARY_INDEX_COLUMN_NAME” }, unique = true/false)})
Native HBase Coprocessor org.apache.eagle.storage.hbase.query.coprocessor.AggregateProtocolEndPoint
Eagle UI is consist of following parts:
An “Application” or “App” is composed of data integration, policies and insights for one data source.
An “Application Descriptor” is a static packaged metadata information consist of basic information like type, name, version, description, and application process, configuration, streams, docs, policies and so on.
Here is an example ApplicationDesc of JPM_WEB_APP
{ type: "JPM_WEB_APP", name: "Job Performance Monitoring Web ", version: "0.5.0-incubating", description: null, appClass: "org.apache.eagle.app.StaticApplication", jarPath: "/opt/eagle/0.5.0-incubating-SNAPSHOT-build-20161103T0332/eagle-0.5.0-incubating-SNAPSHOT/lib/eagle-topology-0.5.0-incubating-SNAPSHOT-hadoop-2.4.1-11-assembly.jar", viewPath: "/apps/jpm", providerClass: "org.apache.eagle.app.jpm.JPMWebApplicationProvider", configuration: { properties: [{ name: "service.host", displayName: "Eagle Service Host", value: "localhost", description: "Eagle Service Host, default: localhost", required: false }, { name: "service.port", displayName: "Eagle Service Port", value: "8080", description: "Eagle Service Port, default: 8080", required: false }] }, streams: null, docs: null, executable: false, dependencies: [{ type: "MR_RUNNING_JOB_APP", version: "0.5.0-incubating", required: true }, { type: "MR_HISTORY_JOB_APP", version: "0.5.0-incubating", required: true }] }
Appilcation Provider is a package management and loading mechanism leveraging Java SPI.
For example, in file META-INF/services/org.apache.eagle.app.spi.ApplicationProvider
, place the full class name of an application provider:
org.apache.eagle.app.jpm.JPMWebApplicationProvider
Eagle requires the following dependencies:
Notice:
Storm 0.9.x does NOT support JDK8. You can replace asm-4.0.jar with asm-all-5.0.jar in the storm lib directory. Then restart other services(nimbus/ui/supervisor).
Download the latest version of Eagle source code.
git clone https://github.com/apache/incubator-eagle.git
Build the source code, and a tar.gz package will be generated under eagle-server-assembly/target
mvn clean install -DskipTests
Copy binary package to your server machine. In the package, you should find:
Change configurations under conf/
Run eagle-server.sh
./bin/eagle-server.sh start
Check eagle server
Placeholder for topic: Setup Your Monitoring Case