blob: c67fca7a39b980d109c4ebcaec1f23833e6457b9 [file] [log] [blame]
brooklyn.catalog:
version: 1.0.0-SNAPSHOT
iconUrl: https://avatars0.githubusercontent.com/u/6764390?v=3&s=400
license: Apache-2.0
issues_url: https://github.com/brooklyncentral/brooklyn-elk/issues # TODO move this there
itemType: template
item:
type: org.apache.brooklyn.entity.stock.BasicApplication
name: ELK Stack
id: ELK-Stack
description: |
Simple ELK stack deployment: provisions Elasticsearch, Kibana and Logstash as a child of Apache Tomcat 8
brooklyn.parameters:
- name: elasticsearch.cluster.initial.size
type: integer
label: Initial Size of the ElasticSearch Cluster
description: The initial size of the cluster of ElasticSearch nodes
default: 5
services:
- type: elasticsearch
id: es
name: Elasticsearch Cluster
brooklyn.config:
install.version: 2.4.0
- type: kibana-standalone
id: kibana
name: Kibana Server
latch.customize: $brooklyn:component("es").attributeWhenReady("service.isUp")
brooklyn.config:
kibana.elasticsearch.ip: $brooklyn:component("es").attributeWhenReady("host.address.first")
kibana.elasticsearch.port: $brooklyn:component("es").config("elasticsearch.http.port")
provisioning.properties:
minRam: 8gb
minDisk: 100gb
minCores: 4
osFamily: ubuntu
imageNameRegex: .*16.04.*
templateOptions:
portSpeed: 1000
diskType: "LOCAL"
domainName: example.com
groupId: kibana
- type: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
id: tomcat
latch.customize: $brooklyn:entity("es").attributeWhenReady("service.isUp")
brooklyn.config:
wars.root: https://search.maven.org/remotecontent?filepath=org/apache/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.12.0/brooklyn-example-hello-world-sql-webapp-0.12.0.war # BROOKLYN_VERSION
children.startable.mode: background_late
provisioning.properties:
minRam: 8gb
minDisk: 100gb
minCores: 4
osFamily: ubuntu
imageNameRegex: .*16.04.*
templateOptions:
portSpeed: 1000
diskType: "LOCAL"
domainName: example.com
groupId: logstash
brooklyn.children:
- type: logstash-child
name: Logstash
brooklyn.config:
logstash.elasticsearch.hosts: $brooklyn:entity("es").attributeWhenReady("urls.http.withBrackets")
logstash.config.input:
$brooklyn:formatString:
- |
input {
file {
path => "%s/logs/localhost_access_log.*"
start_position => "beginning"
}
}
- $brooklyn:entity("tomcat").attributeWhenReady("run.dir")
logstash.config.filter: |
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}