diff options
author | 2019-10-31 15:46:37 -0700 | |
---|---|---|
committer | 2019-11-11 14:39:44 -0800 | |
commit | d11cb99fb101a6798fd57fa44d332737d6637e75 (patch) | |
tree | 0d7ae93ac67186a9bd4dd81db85eab9ccd64334f /vnfs/DAaaS/microservices/prom-kafka-writer/cmd | |
parent | 68d118176bb53c36b31a7060cfa16ad5acac1765 (diff) |
Prometheus Kafka Writer Microservice
This patch implents Prometheus to remote Kafka Writer Microservice
Added sample day-2 config to configure prometheus
PS4: Fixed Review comments
Issue-ID: ONAPARC-393
Signed-off-by: Dileep Ranganathan <dileep.ranganathan@intel.com>
Change-Id: I0bc77175593a165effd7bb1cb4802c988a5ef4ec
Diffstat (limited to 'vnfs/DAaaS/microservices/prom-kafka-writer/cmd')
-rw-r--r-- | vnfs/DAaaS/microservices/prom-kafka-writer/cmd/prom-kafka-writer/main.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/vnfs/DAaaS/microservices/prom-kafka-writer/cmd/prom-kafka-writer/main.go b/vnfs/DAaaS/microservices/prom-kafka-writer/cmd/prom-kafka-writer/main.go new file mode 100644 index 00000000..08dc38b5 --- /dev/null +++ b/vnfs/DAaaS/microservices/prom-kafka-writer/cmd/prom-kafka-writer/main.go @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 Intel Corporation. + * Licensed 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. + * + */ + +package main + +import ( + "context" + "net/http" + "os" + "os/signal" + "time" + + "prom-kafka-writer/pkg/api" + logger "prom-kafka-writer/pkg/config" + kw "prom-kafka-writer/pkg/kafkawriter" +) + +const defaultAddr = ":8686" + +// main starts an http server on the $PORT environment variable. +func main() { + log := logger.GetLoggerInstance() + + addr := defaultAddr + // $PORT environment variable is provided in the Kubernetes deployment. + if p := os.Getenv("PORT"); p != "" { + addr = ":" + p + } + + log.Infow("Starting Prometheus Kafka writer", "addr", addr) + defer log.Infow("Prometheus Kafka writer Terminated") + + s := &http.Server{ + Handler: api.NewRouter(), + Addr: addr, + } + + // shutdown hook. Wait for clean up if the pod/container is killed + shutdownChannel := make(chan struct{}) + go func() { + log.Debug("msg", "Creating shutdown hooks") + sigChan := make(chan os.Signal, 1) + signal.Notify(sigChan, os.Interrupt) + <-sigChan + log.Debug("msg", "Received os.Interrupt") + log.Debug("msg", "Initiate cleanup") + //TODO: Cleanup here + kw.Cleanup() + time.Sleep(time.Second * 3) + _ = s.Shutdown(context.Background()) + close(shutdownChannel) + }() + + err := s.ListenAndServe() + if err != nil { + log.Fatalw("Server Error - Shutting down", "error", err) + } + <-shutdownChannel +} |