From 3604d8837bf3679371295f4f350c8659c99ae62c Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Mon, 3 Jan 2022 18:21:13 -0500 Subject: [PATCH] kubernetes: jambonz-monitoring namespace now has everything for standard install (grafana, influxdb, telegraf, homer) --- .../jambonz/sbc-rtp/sbc-rtp-daemonset.yaml | 4 +- .../jambonz/sbc-sip/sbc-sip-daemonset.yaml | 2 +- .../homer/heplify-server-configmap.yaml | 78 ++++++++++ .../homer/heplify-server-service.yaml | 20 +++ .../homer/heplify-server-statefulset.yaml | 39 +++++ .../monitoring/homer/postgres-service.yaml | 15 ++ .../homer/postgres-statefulset.yaml | 42 +++++ .../monitoring/homer/webapp-configmap.yaml | 143 ++++++++++++++++++ .../monitoring/homer/webapp-deployment.yaml | 46 ++++++ .../monitoring/homer/webapp-ingress.yaml | 18 +++ .../monitoring/homer/webapp-service.yaml | 15 ++ .../influxdb/influxdb-statefulset.yaml | 2 +- .../manifests/monitoring/kustomization.yaml | 9 ++ .../telegraf/telegraf-configmap.yaml | 6 +- 14 files changed, 434 insertions(+), 5 deletions(-) create mode 100644 kubernetes/manifests/monitoring/homer/heplify-server-configmap.yaml create mode 100644 kubernetes/manifests/monitoring/homer/heplify-server-service.yaml create mode 100644 kubernetes/manifests/monitoring/homer/heplify-server-statefulset.yaml create mode 100644 kubernetes/manifests/monitoring/homer/postgres-service.yaml create mode 100644 kubernetes/manifests/monitoring/homer/postgres-statefulset.yaml create mode 100644 kubernetes/manifests/monitoring/homer/webapp-configmap.yaml create mode 100644 kubernetes/manifests/monitoring/homer/webapp-deployment.yaml create mode 100644 kubernetes/manifests/monitoring/homer/webapp-ingress.yaml create mode 100644 kubernetes/manifests/monitoring/homer/webapp-service.yaml diff --git a/kubernetes/manifests/jambonz/sbc-rtp/sbc-rtp-daemonset.yaml b/kubernetes/manifests/jambonz/sbc-rtp/sbc-rtp-daemonset.yaml index 29e9419..6f0d05a 100644 --- a/kubernetes/manifests/jambonz/sbc-rtp/sbc-rtp-daemonset.yaml +++ b/kubernetes/manifests/jambonz/sbc-rtp/sbc-rtp-daemonset.yaml @@ -31,13 +31,13 @@ spec: name: jambonz-env - name: rtpengine image: jambonz/rtpengine:latest - args: ['rtpengine'] + args: ['rtpengine', '--homer', 'heplify-server.jambonz-monitoring.svc.cluster.local:9060', '--homer-protocol', 'udp', '--homer-id', '11'] envFrom: - configMapRef: name: jambonz-env env: - name: LOGLEVEL - value: "7" + value: "5" - name: DRACHTIO_SECRET valueFrom: secretKeyRef: diff --git a/kubernetes/manifests/jambonz/sbc-sip/sbc-sip-daemonset.yaml b/kubernetes/manifests/jambonz/sbc-sip/sbc-sip-daemonset.yaml index 41cf6ca..29c4196 100644 --- a/kubernetes/manifests/jambonz/sbc-sip/sbc-sip-daemonset.yaml +++ b/kubernetes/manifests/jambonz/sbc-sip/sbc-sip-daemonset.yaml @@ -33,7 +33,7 @@ spec: containers: - name: drachtio image: drachtio/drachtio-server:k8s - args: ['drachtio', '--loglevel', 'info', '--cloud-deployment', '--sofia-loglevel', '3'] + args: ['drachtio', '--loglevel', 'info', '--cloud-deployment', '--sofia-loglevel', '3', '--homer', 'heplify-server.jambonz-monitoring.svc.cluster.local:9060', '--homer-id', '10'] envFrom: - configMapRef: name: jambonz-env diff --git a/kubernetes/manifests/monitoring/homer/heplify-server-configmap.yaml b/kubernetes/manifests/monitoring/homer/heplify-server-configmap.yaml new file mode 100644 index 0000000..345c95e --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/heplify-server-configmap.yaml @@ -0,0 +1,78 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: jambonz-monitoring + name: heplify-server-conf +data: + heplify-server.toml: | + HEPAddr = "0.0.0.0:9060" + HEPTCPAddr = "" + HEPTLSAddr = "0.0.0.0:9060" + HEPWSAddr = "0.0.0.0:3000" + ESAddr = "" + ESDiscovery = true + LokiURL = "" + LokiBulk = 200 + LokiTimer = 4 + LokiBuffer = 100000 + LokiHEPFilter = [1,5,100] + ForceHEPPayload = [] + PromAddr = "0.0.0.0:9096" + PromTargetIP = "" + PromTargetName = "" + DBShema = "homer7" + DBDriver = "postgres" + DBAddr = "postgres:5432" + DBUser = "root" + DBPass = "homerSeven" + DBDataTable = "homer_data" + DBConfTable = "homer_config" + DBBulk = 200 + DBTimer = 4 + DBBuffer = 400000 + DBWorker = 8 + DBRotate = true + DBPartLog = "2h" + DBPartSip = "1h" + DBPartQos = "6h" + DBDropDays = 14 + DBDropDaysCall = 0 + DBDropDaysRegister = 0 + DBDropDaysDefault = 0 + DBDropOnStart = false + DBUsageProtection = true + DBUsageScheme = "percentage" + DBPercentageUsage = "80%" + DBMaxSize = "30MB" + Dedup = false + DiscardMethod = [] + AlegIDs = ["X-CID"] + CustomHeader = ["X-Application-Sid", "X-Originating-Carrier", "X-MS-Teams-Tenant-FQDN", "X-Authenticated-User"] + SIPHeader = [] + LogDbg = "" + LogLvl = "info" + LogStd = false + LogSys = false + Config = "./heplify-server.toml" + ConfigHTTPAddr = "" + + # Examples: + # ------------------------------------- + # ESAddr = "http://127.0.0.1:9200" + # DBShema = "homer7" + # DBDriver = "postgres" + # LokiURL = "http://localhost:3100/api/prom/push" + # LokiHEPFilter = [1,5,100] + # PromAddr = "0.0.0.0:8899" + # PromTargetIP = "10.1.2.111,10.1.2.4,10.1.2.5,10.1.2.6,10.12.44.222" + # PromTargetName = "sbc_access,sbc_core,kamailio,asterisk,pstn_gateway" + # AlegIDs = ["X-CID","P-Charging-Vector,icid-value=\"?(.*?)(?:\"|;|$)","X-BroadWorks-Correlation-Info"] + # DiscardMethod = ["OPTIONS","NOTIFY"] + # CustomHeader = ["X-CustomerIP","X-Billing"] + # SIPHeader = ["callid","callid_aleg","method","ruri_user","ruri_domain","from_user","from_domain","from_tag","to_user","to_domain","to_tag","via","contact_user"] + # LogDbg = "hep,sql,loki" + # LogLvl = "warning" + # ConfigHTTPAddr = "0.0.0.0:9876" + # ------------------------------------- + # To hot reload PromTargetIP and PromTargetName run: + # killall -HUP heplify-server \ No newline at end of file diff --git a/kubernetes/manifests/monitoring/homer/heplify-server-service.yaml b/kubernetes/manifests/monitoring/homer/heplify-server-service.yaml new file mode 100644 index 0000000..84c38cd --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/heplify-server-service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: heplify-server + name: heplify-server + namespace: jambonz-monitoring +spec: + ports: + - name: "heplify-server" + port: 9060 + targetPort: 9060 + protocol: UDP + - name: "stats-scraper" + port: 9096 + targetPort: 9096 + protocol: TCP + selector: + app: heplify-server + clusterIP: None diff --git a/kubernetes/manifests/monitoring/homer/heplify-server-statefulset.yaml b/kubernetes/manifests/monitoring/homer/heplify-server-statefulset.yaml new file mode 100644 index 0000000..b67c91d --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/heplify-server-statefulset.yaml @@ -0,0 +1,39 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: heplify-server + labels: + app: heplify-server + namespace: jambonz-monitoring +spec: + serviceName: heplify-server + replicas: 1 + selector: + matchLabels: + app: heplify-server + template: + metadata: + labels: + app: heplify-server + spec: + containers: + - name: heplify-server + image: sipcapture/heplify-server:master + args: ['./heplify-server', '-config', '/etc/heplify-server.toml'] + ports: + - containerPort: 9060 + protocol: UDP + - containerPort: 9096 + protocol: TCP + resources: {} + volumeMounts: + - mountPath: /etc/heplify-server.toml + name: heplify-server-conf + subPath: heplify-server.toml + volumes: + - name: heplify-server-conf + configMap: + name: heplify-server-conf + items: + - key: heplify-server.toml + path: heplify-server.toml diff --git a/kubernetes/manifests/monitoring/homer/postgres-service.yaml b/kubernetes/manifests/monitoring/homer/postgres-service.yaml new file mode 100644 index 0000000..688652a --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/postgres-service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: postgres + name: postgres + namespace: jambonz-monitoring +spec: + ports: + - name: "postgres" + port: 5432 + targetPort: 5432 + selector: + app: postgres + clusterIP: None diff --git a/kubernetes/manifests/monitoring/homer/postgres-statefulset.yaml b/kubernetes/manifests/monitoring/homer/postgres-statefulset.yaml new file mode 100644 index 0000000..7f50e67 --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/postgres-statefulset.yaml @@ -0,0 +1,42 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app: postgres + name: postgres + namespace: jambonz-monitoring +spec: + serviceName: postgres + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + name: postgres + labels: + app: postgres + spec: + containers: + - image: postgres:11-alpine + name: postgres + env: + - name: POSTGRES_PASSWORD + value: homerSeven + - name: POSTGRES_USER + value: root + ports: + - containerPort: 5432 + resources: {} + volumeMounts: + - mountPath: /var/lib/postgresql + name: postgres-claim + restartPolicy: Always + volumeClaimTemplates: + - metadata: + name: postgres-claim + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 30Gi diff --git a/kubernetes/manifests/monitoring/homer/webapp-configmap.yaml b/kubernetes/manifests/monitoring/homer/webapp-configmap.yaml new file mode 100644 index 0000000..1efbfbf --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/webapp-configmap.yaml @@ -0,0 +1,143 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: jambonz-monitoring + name: webapp-conf +data: + bootstrapped: | + bootstrapping + webapp_config.json: | + { + "auth_settings": { + "_comment": "The type param can be internal, ldap, http_auth", + "token_expire": 1200, + "type": "internal" + }, + "database_config": { + "help": "Settings for PGSQL Database (settings)", + "host": "postgres", + "keepalive": true, + "name": "homer_config", + "node": "LocalConfig", + "pass": "homerSeven", + "user": "root" + }, + "database_data": { + "localnode": { + "help": "Settings for PGSQL Database (data)", + "host": "postgres", + "keepalive": true, + "name": "homer_data", + "node": "LocalNode", + "pass": "homerSeven", + "user": "root" + } + }, + "decoder_shark": { + "_comment": "Here you can do packet decoding to using tshark application. Please define uid, gid if you run the app under root", + "active": false, + "bin": "/usr/bin/tshark", + "protocols": [ + "1_call", + "1_registration", + "1_default" + ] + }, + "grafana_config": { + "help": "Settings for Grafana", + "host": "http://grafana:3000", + "path": "/grafana", + "token": "" + }, + "hep_relay": { + "help": "UDP socket to send HEP data on", + "host": "heplify-server", + "port": 9060 + }, + "http_auth": { + "skipverify": true, + "url": "http://localhost:1323" + }, + "http_settings": { + "debug": false, + "gzip": true, + "gzip_static": true, + "help": "Settings for the HOMER Webapp Server. If you have gzip_static = false, please be sure that your dist directory has uncompressed .js files", + "host": "0.0.0.0", + "port": 80, + "root": "/usr/local/homer/dist" + }, + "https_settings": { + "cert": "/usr/local/homer/tls/cert.pem", + "enable": false, + "help": "SSL settings for homer-app", + "host": "0.0.0.0", + "key": "/usr/local/homer/tls/key.pem", + "port": 443 + }, + "influxdb_config": { + "database": "homer", + "help": "Settings for InfluxDB Database (optional)", + "host": "http://influxdb:8086", + "name": "homer_config", + "pass": "influx_password", + "policy": "autogen", + "user": "influx_user" + }, + "ldap_config": { + "admingroup": "admin", + "adminmode": true, + "anonymous": false, + "attributes": [ + "dn", + "givenName", + "sn", + "mail", + "uid" + ], + "base": "dc=example,dc=com", + "binddn": "uid=readonlysuer,ou=People,dc=example,dc=com", + "bindpassword": "readonlypassword", + "groupattribute": "cn", + "groupfilter": "(memberUid=%s)", + "host": "ldap.example.com", + "port": 389, + "skiptls": true, + "skipverify": true, + "userdn": "uid=%s,ou=People,dc=example,dc=com", + "userfilter": "(uid=%s)", + "usergroup": "HOMER_user", + "usermode": true, + "usessl": false + }, + "loki_config": { + "api": "loki/api/v1", + "help": "Settings for LOKI Database (optional)", + "host": "http://127.0.0.1:3100", + "param_query": "query_range", + "pass": "admin", + "user": "admin" + }, + "prometheus_config": { + "api": "api/v1", + "help": "Settings for Prometheus Database (optional)", + "host": "http://127.0.0.1:9090", + "pass": "admin", + "user": "admin" + }, + "system_settings": { + "_loglevels": "can be: fatal, error, warn, info, debug, trace", + "help": "Settings for HOMER logs", + "hostname": "ip-172-31-23-156", + "loglevel": "debug", + "logname": "homer-app.log", + "logpath": "/usr/local/homer/log", + "logstdout": true, + "uuid": "4bd92b25-0dd8-4326-a984-08da79dcc569" + }, + "transaction_settings": { + "deduplicate": { + "global": false + } + } + } \ No newline at end of file diff --git a/kubernetes/manifests/monitoring/homer/webapp-deployment.yaml b/kubernetes/manifests/monitoring/homer/webapp-deployment.yaml new file mode 100644 index 0000000..151b611 --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/webapp-deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: homer-webapp + name: homer-webapp + namespace: jambonz-monitoring +spec: + replicas: 1 + selector: + matchLabels: + app: homer-webapp + template: + metadata: + labels: + app: homer-webapp + spec: + containers: + - name: homer-webapp + image: sipcapture/webapp:latest + ports: + - containerPort: 80 + resources: {} + env: + - name: DB_HOST + value: postgres + - name: DB_USER + value: root + - name: DB_PASS + value: homerSeven + volumeMounts: + - mountPath: /usr/local/homer/etc/webapp_config.json + name: webapp-conf + subPath: webapp_config.json + - mountPath: /homer-semaphore/.bootstrapped + name: webapp-conf + subPath: bootstrapped + volumes: + - name: webapp-conf + configMap: + name: webapp-conf + items: + - key: webapp_config.json + path: webapp_config.json + - key: bootstrapped + path: bootstrapped \ No newline at end of file diff --git a/kubernetes/manifests/monitoring/homer/webapp-ingress.yaml b/kubernetes/manifests/monitoring/homer/webapp-ingress.yaml new file mode 100644 index 0000000..298a87b --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/webapp-ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: homer-webapp + namespace: jambonz-monitoring +spec: + rules: + - host: homer.k8s-gcp.jambonz.org + http: + paths: + - backend: + service: + name: homer-webapp + port: + number: 80 + path: / + pathType: Prefix + diff --git a/kubernetes/manifests/monitoring/homer/webapp-service.yaml b/kubernetes/manifests/monitoring/homer/webapp-service.yaml new file mode 100644 index 0000000..e53b2fb --- /dev/null +++ b/kubernetes/manifests/monitoring/homer/webapp-service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: homer-webapp + name: homer-webapp + namespace: jambonz-monitoring +spec: + ports: + - name: homer-webapp + port: 80 + targetPort: 80 + type: NodePort + selector: + app: homer-webapp diff --git a/kubernetes/manifests/monitoring/influxdb/influxdb-statefulset.yaml b/kubernetes/manifests/monitoring/influxdb/influxdb-statefulset.yaml index fa4449f..7fd318c 100644 --- a/kubernetes/manifests/monitoring/influxdb/influxdb-statefulset.yaml +++ b/kubernetes/manifests/monitoring/influxdb/influxdb-statefulset.yaml @@ -22,7 +22,7 @@ spec: name: influxdb env: - name: INFLUXDB_LOGGING_LEVEL - value: debug + value: info ports: - containerPort: 8086 resources: {} diff --git a/kubernetes/manifests/monitoring/kustomization.yaml b/kubernetes/manifests/monitoring/kustomization.yaml index 258ae2a..9fdead6 100644 --- a/kubernetes/manifests/monitoring/kustomization.yaml +++ b/kubernetes/manifests/monitoring/kustomization.yaml @@ -13,4 +13,13 @@ resources: - telegraf/telegraf-statefulset.yaml - telegraf/telegraf-service.yaml - telegraf/telegraf-configmap.yaml +- homer/postgres-statefulset.yaml +- homer/postgres-service.yaml +- homer/heplify-server-configmap.yaml +- homer/heplify-server-statefulset.yaml +- homer/heplify-server-service.yaml +- homer/webapp-configmap.yaml +- homer/webapp-deployment.yaml +- homer/webapp-service.yaml +- homer/webapp-ingress.yaml - namespace.yaml diff --git a/kubernetes/manifests/monitoring/telegraf/telegraf-configmap.yaml b/kubernetes/manifests/monitoring/telegraf/telegraf-configmap.yaml index 748b35e..73e950f 100644 --- a/kubernetes/manifests/monitoring/telegraf/telegraf-configmap.yaml +++ b/kubernetes/manifests/monitoring/telegraf/telegraf-configmap.yaml @@ -215,7 +215,6 @@ data: [[inputs.kernel]] # no configuration - # Read metrics about memory usage [[inputs.mem]] # no configuration @@ -257,6 +256,11 @@ data: service_address = "tcp://127.0.0.1:8094" data_format = "influx" + # scrape stats from heplify-server + [[inputs.prometheus]] + urls = ["http://heplify-server:9096/metrics"] + namedrop = ["go*","process*","promhttp*"] + # # Statsd UDP/TCP Server [[inputs.statsd]] protocol = "tcp"