kubernetes: jambonz-monitoring namespace now has everything for standard install (grafana, influxdb, telegraf, homer)

This commit is contained in:
Dave Horton
2022-01-03 18:21:13 -05:00
parent 379431c339
commit 3604d8837b
14 changed files with 434 additions and 5 deletions
@@ -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:
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
}
}
}
@@ -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
@@ -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
@@ -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
@@ -22,7 +22,7 @@ spec:
name: influxdb
env:
- name: INFLUXDB_LOGGING_LEVEL
value: debug
value: info
ports:
- containerPort: 8086
resources: {}
@@ -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
@@ -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"