Skip to content

Commit

Permalink
Lap resurrection (#270)
Browse files Browse the repository at this point in the history
* lap resurection
* Print exceptions in the status logs
  • Loading branch information
xnull authored May 6, 2024
1 parent ce3989c commit f36e711
Show file tree
Hide file tree
Showing 12 changed files with 67 additions and 30 deletions.
2 changes: 1 addition & 1 deletion cloud/infrastructure/docker-elk/elk-down.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ set -e

cd build/docker-elk

docker-compose down
docker compose down
docker image rm docker-elk_kibana
docker image rm docker-elk_elasticsearch
2 changes: 1 addition & 1 deletion cloud/infrastructure/docker-elk/elk-up.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ set -e

cd build/docker-elk

docker-compose up -d
docker compose up -d
8 changes: 7 additions & 1 deletion cloud/infrastructure/docker-elk/init.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
#!/usr/bin/env bash

set -ex

#download docker-elk repo into a build directory
rm -rf build/docker-elk/

git clone https://github.com/deviantony/docker-elk.git build/docker-elk

cd build/docker-elk
git checkout 1bee7e1c097d3c2f9d72995d5ca2d6051f29381b
cd ../../

# do not delete elastic volume
#docker volume rm docker-elk_elasticsearch
docker volume rm docker-elk_elasticsearch || true

#copy configs into a build dir
cp -v docker-compose.yml build/docker-elk
Expand Down
6 changes: 2 additions & 4 deletions cloud/infrastructure/docker-elk/kibana/config/kibana.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@
#
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: false
elasticsearch.hosts: [ "http://10.173.65.105:9200" ]
#monitoring.ui.container.elasticsearch.enabled: false

## X-Pack security credentials
#
elasticsearch.username: elastic
elasticsearch.password: changeme
6 changes: 6 additions & 0 deletions cloud/infrastructure/filebeat/filebeat/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
FROM docker.elastic.co/beats/filebeat:7.10.0

USER root

RUN yum install -y yum-utils \
&& yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo \
&& yum install -y docker-ce-cli

ADD filebeat.yml /usr/share/filebeat/filebeat.yml

CMD filebeat -e --strict.perms=false --once run
14 changes: 13 additions & 1 deletion cloud/infrastructure/integration-tools/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
FROM openjdk
FROM openjdk:21-bullseye

RUN apt update \
&& apt install -y ca-certificates curl \
&& install -m 0755 -d /etc/apt/keyrings \
&& curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
&& chmod a+r /etc/apt/keyrings/docker.asc \
&& echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null

RUN apt update && apt install -y docker-ce-cli

ADD ./lib /app/lib/
ADD ./*.jar /app/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import java.nio.channels.FileChannel
import java.nio.file.Path
import java.nio.file.Paths
import java.nio.file.StandardOpenOption
import java.util.*
import java.util.EnumSet

class DownloadCommand : CliktCommand(name = "download") {
private val aggregationUnit: String by argument(help = "In this case An aggregation unit is an equivalent " +
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package org.corfudb.cloud.infrastructure.integration.kv

import com.fasterxml.jackson.databind.ObjectMapper
import org.rocksdb.*
import org.rocksdb.ColumnFamilyDescriptor
import org.rocksdb.ColumnFamilyHandle
import org.rocksdb.DBOptions
import org.rocksdb.Options
import org.rocksdb.RocksDB
import org.rocksdb.WriteOptions
import java.time.Instant
import java.time.format.DateTimeFormatter

Expand All @@ -23,9 +28,9 @@ object RocksDbManager {
}

class RocksDbProvider(
private val config: RocksDbConfig,
val db: RocksDB,
private val cfHandles: MutableList<ColumnFamilyHandle>
private val config: RocksDbConfig,
val db: RocksDB,
private val cfHandles: MutableList<ColumnFamilyHandle>
) {

fun findColumnFamily(name: String): ColumnFamilyHandle? {
Expand All @@ -45,15 +50,15 @@ class RocksDbProvider(
}

class RocksDbConfig(
val dbDir: String = "/data/processing.db",
val opts: Options = Options().setCreateIfMissing(true)
val dbDir: String = "/data/processing.db",
val opts: Options = Options().setCreateIfMissing(true)
) {
val dbOpts = DBOptions(opts)

fun listColumnFamilies(): List<ColumnFamilyDescriptor> {
var columnFamilies = RocksDB
.listColumnFamilies(opts, dbDir)
.map { cf -> ColumnFamilyDescriptor(cf) }
.listColumnFamilies(opts, dbDir)
.map { cf -> ColumnFamilyDescriptor(cf) }

if (columnFamilies.isEmpty()) {
columnFamilies = listOf(ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY))
Expand Down Expand Up @@ -94,9 +99,9 @@ class KvStore(private val provider: RocksDbProvider, private val mapper: ObjectM
}

data class ProcessingKey(
val aggregationUnit: String,
val timestamp: Long = System.currentTimeMillis(),
val date: String = DateTimeFormatter.ISO_INSTANT.format(Instant.ofEpochMilli(timestamp))
val aggregationUnit: String,
val timestamp: Long = System.currentTimeMillis(),
val date: String = DateTimeFormatter.ISO_INSTANT.format(Instant.ofEpochMilli(timestamp))
)

data class ProcessingMessage(val key: ProcessingKey, val message: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ class LoaderManager(
"--name ${aggregationUnit}-${archive.name} " +
"-v log-aggregation-data:/data " +
"${toolConfig.filebeatImage} " +
"filebeat -e --strict.perms=false " +
"filebeat" +
" -e --strict.perms=false " +
"-E fields.server=${archive.name} " +
"-E fields.aggregation_unit=${aggregationUnit} " +
"-E BASE_DIR=/data/${aggregationUnit}/${archive.name} " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ import io.ktor.routing.get
import io.ktor.routing.post
import io.ktor.routing.routing
import io.ktor.util.KtorExperimentalAPI
import java.io.File
import java.io.PrintWriter
import java.io.StringWriter
import kotlinx.coroutines.async
import org.corfudb.cloud.infrastructure.integration.ArchiveConfig
import org.corfudb.cloud.infrastructure.integration.IntegrationToolConfig
import org.corfudb.cloud.infrastructure.integration.kv.KvStore
import org.corfudb.cloud.infrastructure.integration.kv.ProcessingMessage
import org.corfudb.cloud.infrastructure.integration.kv.RocksDbManager
import org.corfudb.cloud.infrastructure.integration.processing.ProcessingManager
import java.io.File
import java.io.PrintWriter
import java.io.StringWriter

@KtorExperimentalAPI
@kotlin.jvm.JvmOverloads
Expand Down Expand Up @@ -107,7 +107,12 @@ fun Application.module(testing: Boolean = false) {
try {
ProcessingManager(kvStore, request.aggregationUnit, config).execute()
} catch (ex: Exception) {
kvStore.put(ProcessingMessage.new(request.aggregationUnit, "Processing error"))
val sw = StringWriter()
val pw = PrintWriter(sw)
ex.printStackTrace(pw)
val sStackTrace = sw.toString()
val errStr = "Processing error: $sStackTrace"
kvStore.put(ProcessingMessage.new(request.aggregationUnit, errStr))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ package org.corfudb.cloud.infrastructure.integration.processing


import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.corfudb.cloud.infrastructure.integration.kv.*
import org.corfudb.cloud.infrastructure.integration.kv.KvStore
import org.corfudb.cloud.infrastructure.integration.kv.ProcessingKey
import org.corfudb.cloud.infrastructure.integration.kv.ProcessingMessage
import org.corfudb.cloud.infrastructure.integration.kv.RocksDbConfig
import org.corfudb.cloud.infrastructure.integration.kv.RocksDbProvider
import org.junit.Test
import org.rocksdb.ColumnFamilyDescriptor
import org.rocksdb.ColumnFamilyHandle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import org.apache.commons.lang3.RandomStringUtils
import org.slf4j.LoggerFactory
import java.nio.file.Path
import java.nio.file.Paths
import java.util.*
import java.util.UUID

data class DashboardConfig(
var aggregationUnit: String = "corfu",
var configFiles: List<Path> = listOf(),
var aggregationUnit: String = "corfu",
var configFiles: List<Path> = listOf(),

val indexPatternConfigFile: Path = Paths.get("index-pattern.json")
val indexPatternConfigFile: Path = Paths.get("index-pattern.json")
)

class Dashboards(private val config: DashboardConfig) {
Expand Down

0 comments on commit f36e711

Please sign in to comment.