feat(zabbix): rework (#4046)

* feat(zabbix): rework

* finish web

* add some server vars

* add agent

* volume web

* lots of rework

* adjust persistence

* identation

* lint

* fix few things

* update common.yaml

* lint

* one more

* lets begin one by one

* fix typo

* fix some potential empty value

* fix java port

* fix some more emty values

* fix some ints in configmap and rename to frontend

* Add a lower default

* adjust some probes and fix configmap

* add 2 hostpaths to zabbix agent

* some more configmap fixes

* increase some sizes

* add probes

* hmm

* whops

* disable this env

* one more

* remove passive and active servers

* move somethings

* test different user

* enable java

* enable snmp

* enable webservice

* add services and volumes

* add javagw webservice and snmp questions

* add agent questions and remove some that don't apply

* add webui questions

* add some server questions

* add server questions

* remove todos

* rename to zabbix. as it;s not only the server
This commit is contained in:
Stavros Kois
2022-10-16 23:05:54 +03:00
committed by GitHub
parent 30931c9126
commit aaacea6d1b
21 changed files with 1809 additions and 1197 deletions
+30
View File
@@ -0,0 +1,30 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl
# docs folder
/docs
# icon
icon.png
+32
View File
@@ -0,0 +1,32 @@
apiVersion: v2
appVersion: "6.2.3"
dependencies:
- name: common
repository: https://library-charts.truecharts.org
version: 10.7.0
- condition: postgresql.enabled
name: postgresql
repository: https://charts.truecharts.org/
version: 8.0.97
description: Zabbix is an enterprise-class open source distributed monitoring solution.
home: https://truecharts.org/docs/charts/incubator/zabbix-server
icon: https://truecharts.org/img/hotlink-ok/chart-icons/zabbix-server.png
keywords:
- zabbix
- monitoring
kubeVersion: ">=1.16.0-0"
maintainers:
- email: info@truecharts.org
name: TrueCharts
url: https://truecharts.org
name: zabbix
sources:
- https://github.com/truecharts/charts/tree/master/charts/incubator/zabbix-server
- https://hub.docker.com/r/zabbix/zabbix-server-pgsql
- https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql
version: 1.0.0
annotations:
truecharts.org/catagories: |
- utilities
truecharts.org/SCALE-support: "true"
truecharts.org/grade: U
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,50 @@
{{- define "zabbix.agent2" -}}
image: {{ .Values.agent2Image.repository }}:{{ .Values.agent2Image.tag }}
imagePullPolicy: {{ .Values.agent2Image.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
capabilities:
add:
- SYS_TIME
volumeMounts:
- name: hostsys
mountPath: {{ .Values.persistence.hostsys.mountPath }}
- name: hostproc
mountPath: {{ .Values.persistence.hostproc.mountPath }}
- name: agentconf
mountPath: {{ .Values.persistence.agentconf.mountPath }}
- name: agentenc
mountPath: {{ .Values.persistence.agentenc.mountPath }}
- name: agentbuffer
mountPath: {{ .Values.persistence.agentbuffer.mountPath }}
envFrom:
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-agent-config'
ports:
- containerPort: {{ .Values.service.agent.ports.agent.port }}
name: agent
readinessProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
livenessProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
startupProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}}
@@ -0,0 +1,209 @@
{{/* Define the configmap */}}
{{- define "zabbix.config" -}}
{{- $serverConfigName := printf "%s-server-config" (include "tc.common.names.fullname" .) }}
{{- $commonConfigName := printf "%s-common-config" (include "tc.common.names.fullname" .) }}
{{- $frontendConfigName := printf "%s-frontend-config" (include "tc.common.names.fullname" .) }}
{{- $agentConfigName := printf "%s-agent-config" (include "tc.common.names.fullname" .) }}
{{- $javagatewayConfigName := printf "%s-javagateway-config" (include "tc.common.names.fullname" .) }}
{{- $webserviceConfigName := printf "%s-webservice-config" (include "tc.common.names.fullname" .) }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $commonConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
DB_SERVER_HOST: {{ printf "%v-%v" .Release.Name "postgresql" }}
DB_SERVER_PORT: "5432"
POSTGRES_USER: {{ .Values.postgresql.postgresqlUsername }}
POSTGRES_DB: {{ .Values.postgresql.postgresqlDatabase }}
---
{{- $server := .Values.zabbix.server }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $serverConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
ZBX_LISTENPORT: {{ .Values.service.server.ports.server.port | quote }}
{{- with $server.listen_backlog }}
ZBX_LISTENBACKLOG: {{ . | quote }}
{{- end }}
ZBX_LOADMODULE: "{{ range initial $server.load_modules }}{{ . }},{{ end }}{{ with last $server.load_modules }}{{ . }}{{ end }}"
ZBX_DEBUGLEVEL: {{ $server.debug_level | quote }}
ZBX_TIMEOUT: {{ $server.timeout | quote }}
ZBX_WEBSERVICEURL: http://localhost:{{ .Values.service.webservice.ports.webservice.port }}
ZBX_SERVICEMANAGERSYNCFREQUENCY: {{ $server.service_manager_sync_freq | quote }}
ZBX_STARTREPORTWRITERS: {{ $server.start_report_writers | quote }}
ZBX_STARTPOLLERS: {{ $server.start_pollers | quote }}
ZBX_IPMIPOLLERS: {{ $server.start_ipmi_pollers | quote }}
ZBX_STARTPREPROCESSORS: {{ $server.start_preprocessors | quote }}
ZBX_STARTPOLLERSUNREACHABLE: {{ $server.start_pollers_unreachable | quote }}
ZBX_STARTTRAPPERS: {{ $server.start_trappers | quote }}
ZBX_STARTPINGERS: {{ $server.start_pingers | quote }}
ZBX_STARTDISCOVERERS: {{ $server.start_discoverers | quote }}
ZBX_STARTHISTORYPOLLERS: {{ $server.start_history_pollers | quote }}
ZBX_STARTHTTPPOLLERS: {{ $server.start_http_pollers | quote }}
ZBX_STARTODBCPOLLERS: {{ $server.start_obdc_pollers | quote }}
ZBX_STARTTIMERS: {{ $server.start_timers | quote }}
ZBX_STARTESCALATORS: {{ $server.start_escalators | quote }}
ZBX_STARTALERTERS: {{ $server.start_alerters | quote }}
ZBX_STARTJAVAPOLLERS: {{ $server.start_java_pollers | quote }}
ZBX_STARTVMWARECOLLECTORS: {{ $server.start_vmware_collectors | quote }}
ZBX_VMWAREFREQUENCY: {{ $server.vmware_frequency | quote }}
ZBX_VMWAREPERFFREQUENCY: {{ $server.vmware_perf_frequency | quote }}
ZBX_VMWARECACHESIZE: {{ $server.vmware_cache_size }}
ZBX_VMWARETIMEOUT: {{ $server.vmware_timeout | quote }}
ZBX_HOUSEKEEPINGFREQUENCY: {{ $server.housekeeping_freq | quote }}
ZBX_MAXHOUSEKEEPERDELETE: {{ $server.max_housekeeper_delete | quote }}
ZBX_PROBLEMHOUSEKEEPINGFREQUENCY: {{ $server.problem_housekeeper_freq | quote }}
ZBX_CACHESIZE: {{ $server.cache_size }}
ZBX_CACHEUPDATEFREQUENCY: {{ $server.cache_update_freq | quote }}
ZBX_STARTDBSYNCERS: {{ $server.start_db_syncers | quote }}
ZBX_HISTORYCACHESIZE: {{ $server.history_cache_size }}
ZBX_HISTORYINDEXCACHESIZE: {{ $server.history_index_cache_size}}
ZBX_HISTORYSTORAGEDATEINDEX: {{ ternary "1" "0" $server.history_storage_date_index | quote }}
ZBX_TRENDCACHESIZE: {{ $server.trend_cache_size }}
ZBX_TRENDFUNCTIONCACHESIZE: {{ $server.trend_function_cache_size }}
ZBX_VALUECACHESIZE: {{ $server.value_cache_size }}
ZBX_TRAPPERTIMEOUT: {{ $server.trapper_timeout | quote }}
ZBX_UNREACHABLEPERIOD: {{ $server.unreachable_period | quote }}
ZBX_UNAVAILABLEDELAY: {{ $server.unavailable_delay | quote }}
ZBX_UNREACHABLEDELAY: {{ $server.unreachable_delay | quote }}
ZBX_LOGSLOWQUERIES: {{ $server.log_slow_queries | quote }}
ZBX_STARTPROXYPOLLERS: {{ $server.start_proxy_pollers | quote }}
ZBX_PROXYCONFIGFREQUENCY: {{ $server.proxy_config_freq | quote }}
ZBX_PROXYDATAFREQUENCY: {{ $server.proxy_data_freq | quote }}
ZBX_STARTLLDPROCESSORS: {{ $server.start_lld_processors | quote }}
ZBX_EXPORTFILESIZE: {{ $server.export_file_size }}
ZBX_EXPORTTYPE: "{{ range initial $server.export_type }}{{ . }},{{ end }}{{ with last $server.export_type }}{{ . }}{{ end }}"
ZBX_STATSALLOWEDIP: "{{ range initial $server.stats_allowed_ips }}{{ . }},{{ end }}{{ with last $server.stats_allowed_ips }}{{ . }}{{ end }}"
ZBX_ENABLE_SNMP_TRAPS: {{ .Values.zabbix.snmptraps.enabled | quote }}
ZBX_JAVAGATEWAY_ENABLE: {{ .Values.zabbix.javagateway.enabled | quote }}
ZBX_JAVAGATEWAY: localhost
ZBX_JAVAGATEWAYPORT: {{ .Values.service.javagateway.ports.javagateway.port | quote }}
---
{{- $agent := .Values.zabbix.agent }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $agentConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
ZBX_SERVER_HOST: localhost
ZBX_SERVER_PORT: {{ .Values.service.server.ports.server.port | quote }}
{{/* If hostname is set, hostname_item is ignored.*/}}
{{- if not $agent.hostname_item }}
ZBX_HOSTNAME: "{{ range initial $agent.hostname }}{{ . }},{{ end }}{{ with last $agent.hostname }}{{ . }}{{ end }}"
{{- end }}
{{- with $agent.hostname_item }}
ZBX_HOSTNAMEITEM: {{ . | quote }}
{{- end }}
{{/* If metadata is set, metadata_item is ignored.*/}}
{{- if not $agent.metadata_item }}
{{- with $agent.metadata }}
ZBX_METADATA: {{ . }}
{{- end }}
{{- end }}
{{- with $agent.metadata_item }}
ZBX_METADATAITEM: {{ . | quote }}
{{- end }}
ZBX_TIMEOUT: {{ $agent.timeout | quote }}
ZBX_ENABLEPERSISTENTBUFFER: {{ $agent.enable_persistent_buffer | quote }}
ZBX_PERSISTENTBUFFERPERIOD: {{ $agent.persistent_buffer_period }}
ZBX_LISTENPORT: {{ .Values.service.agent.ports.agent.port | quote }}
ZBX_REFRESHACTIVECHECKS: {{ $agent.refresh_active_checks | quote }}
ZBX_BUFFERSEND: {{ $agent.buffer_send | quote }}
ZBX_BUFFERSIZE: {{ $agent.buffer_size | quote }}
ZBX_UNSAFEUSERPARAMETERS: {{ ternary "1" "0" $agent.unsafe_user_parameters | quote }}
ZBX_TLSCONNECT: {{ $agent.tls_connect }}
ZBX_TLSACCEPT: "{{ range initial $agent.tls_accept }}{{ . }},{{ end }}{{ with last $agent.tls_accept }}{{ . }}{{ end }}"
{{- with $agent.psk_identity }}
ZBX_TLSPSKIDENTITY: {{ . }}
{{- end }}
{{- with $agent.psk_file }}
ZBX_TLSPSKFILE: {{ . }}
{{- end }}
{{- with $agent.allow_key }}
ZBX_ALLOWKEY: {{ . | quote }}
{{- end }}
{{- with $agent.deny_key }}
ZBX_DENYKEY: {{ . | quote }}
{{- end }}
---
{{- $frontend := .Values.zabbix.frontend }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $frontendConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
PHP_TZ: {{ .Values.TZ }}
ZBX_SERVER_HOST: localhost
ZBX_SERVER_PORT: {{ .Values.service.server.ports.server.port | quote }}
ZBX_SERVER_NAME: {{ $frontend.server_name }}
ENABLE_WEB_ACCESS_LOG: {{ $frontend.enable_access_logs | quote }}
ZBX_MAXEXECUTIONTIME: {{ $frontend.max_execution_time | quote }}
ZBX_MEMORYLIMIT: {{ $frontend.memory_limit }}
ZBX_POSTMAXSIZE: {{ $frontend.post_max_size }}
ZBX_UPLOADMAXFILESIZE: {{ $frontend.upload_max_file_size }}
ZBX_MAXINPUTTIME: {{ $frontend.max_input_time | quote }}
ZBX_SESSION_NAME: {{ $frontend.session_name }}
ZBX_DENY_GUI_ACCESS: {{ $frontend.deny_gui_access | quote }}
{{- if $frontend.access_ip_range }}
ZBX_GUI_ACCESS_IP_RANGE: '[{{ range initial $frontend.access_ip_range }}{{ . | quote }},{{ end }}{{ with last $frontend.access_ip_range }}{{ . | quote }}{{ end }}]'
{{- end }}
ZBX_GUI_WARNING_MSG: {{ $frontend.warning_message }}
{{- with $frontend.sso_settings }}
ZBX_SSO_SETTINGS: {{ . | quote }}
{{- end }}
PHP_FPM_PM: {{ $frontend.php_fpm_pm }}
PHP_FPM_PM_MAX_CHILDREN: {{ $frontend.php_fpm_pm_max_children | quote }}
PHP_FPM_PM_START_SERVERS: {{ $frontend.php_fpm_pm_start_servers | quote }}
PHP_FPM_PM_MIN_SPARE_SERVERS: {{ $frontend.php_fpm_pm_min_spare_servers | quote }}
PHP_FPM_PM_MAX_SPARE_SERVERS: {{ $frontend.php_fpm_pm_max_spare_servers | quote }}
PHP_FPM_PM_MAX_REQUESTS: {{ $frontend.php_fpm_pm_max_requests | quote }}
---
{{- $javagateway := .Values.zabbix.javagateway }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $javagatewayConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
ZBX_START_POLLERS: {{ $javagateway.start_pollers | quote }}
ZBX_TIMEOUT: {{ $javagateway.timeout | quote }}
ZBX_DEBUGLEVEL: {{ $javagateway.debug_level }}
ZBX_LISTEN_PORT: {{ .Values.service.javagateway.ports.javagateway.port | quote }}
---
{{- $webservice := .Values.zabbix.webservice }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $webserviceConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
ZBX_LISTENPORT: {{ .Values.service.webservice.ports.webservice.port | quote }}
ZBX_ALLOWEDIP: localhost
ZBX_DEBUGLEVEL: {{ $webservice.debug_level | quote }}
ZBX_TIMEOUT: {{ $webservice.timeout | quote }}
{{- end -}}
@@ -0,0 +1,43 @@
{{- define "zabbix.frontend" -}}
image: {{ .Values.frontendImage.repository }}:{{ .Values.frontendImage.tag }}
imagePullPolicy: {{ .Values.frontendImage.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
envFrom:
- secretRef:
name: '{{ include "tc.common.names.fullname" . }}-common-secret'
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-common-config'
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-frontend-config'
ports:
- containerPort: {{ .Values.service.main.ports.main.targetPort }}
name: main
readinessProbe:
httpGet:
path: /
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
livenessProbe:
httpGet:
path: /
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
startupProbe:
httpGet:
path: /
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}}
@@ -0,0 +1,39 @@
{{- define "zabbix.javagateway" -}}
image: {{ .Values.javaGatewayImage.repository }}:{{ .Values.javaGatewayImage.tag }}
imagePullPolicy: {{ .Values.javaGatewayImage.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
volumeMounts:
- name: javagatewaylibs
mountPath: {{ .Values.persistence.javagatewaylibs.mountPath }}
envFrom:
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-javagateway-config'
ports:
- containerPort: {{ .Values.service.javagateway.ports.javagateway.port }}
name: javagateway
readinessProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
livenessProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
startupProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}}
@@ -0,0 +1,18 @@
{{/* Define the secret */}}
{{- define "zabbix.secret" -}}
{{- $serverSecretName := printf "%s-server-secret" (include "tc.common.names.fullname" .) }}
{{- $commonSecretName := printf "%s-common-secret" (include "tc.common.names.fullname" .) }}
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: {{ $commonSecretName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
POSTGRES_PASSWORD: {{ .Values.postgresql.postgresqlPassword | trimAll "\"" | b64enc }}
{{- end }}
@@ -0,0 +1,38 @@
{{- define "zabbix.snmptraps" -}}
image: {{ .Values.snmptrapsImage.repository }}:{{ .Values.snmptrapsImage.tag }}
imagePullPolicy: {{ .Values.agent2Image.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
volumeMounts:
- name: snmptraps
mountPath: {{ .Values.persistence.snmptraps.mountPath }}
- name: snmpmibs
mountPath: {{ .Values.persistence.snmpmibs.mountPath }}
ports:
- containerPort: {{ .Values.service.snmptraps.ports.snmptraps.targetPort }}
name: snmptraps
readinessProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
livenessProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
startupProbe:
tcpSocket:
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}}
@@ -0,0 +1,39 @@
{{- define "zabbix.webservice" -}}
image: {{ .Values.webServiceImage.repository }}:{{ .Values.webServiceImage.tag }}
imagePullPolicy: {{ .Values.webServiceImage.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
envFrom:
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-webservice-config'
ports:
- containerPort: {{ .Values.service.webservice.ports.webservice.port }}
name: webservice
readinessProbe:
httpGet:
path: /report
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
livenessProbe:
httpGet:
path: /report
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
startupProbe:
httpGet:
path: /report
port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}}
@@ -0,0 +1,29 @@
{{/* Make sure all variables are set properly */}}
{{- include "tc.common.loader.init" . }}
{{/* Render secret */}}
{{- include "zabbix.secret" . }}
{{/* Render config */}}
{{- include "zabbix.config" . }}
{{- $_ := set .Values.additionalContainers "frontend" (include "zabbix.frontend" . | fromYaml) -}}
{{- if .Values.zabbix.agent.enabled -}}
{{- $_ := set .Values.additionalContainers "agent2" (include "zabbix.agent2" . | fromYaml) -}}
{{- end -}}
{{- if .Values.zabbix.webservice.enabled -}}
{{- $_ := set .Values.additionalContainers "webservice" (include "zabbix.webservice" . | fromYaml) -}}
{{- end -}}
{{- if .Values.zabbix.snmptraps.enabled -}}
{{- $_ := set .Values.additionalContainers "snmptraps" (include "zabbix.snmptraps" . | fromYaml) -}}
{{- end -}}
{{- if .Values.zabbix.javagateway.enabled -}}
{{- $_ := set .Values.additionalContainers "javagateway" (include "zabbix.javagateway" . | fromYaml) -}}
{{- end -}}
{{/* Render the templates */}}
{{ include "tc.common.loader.apply" . }}
+297
View File
@@ -0,0 +1,297 @@
image:
repository: tccr.io/truecharts/zabbix-server
tag: 6.2.3@sha256:8047806dbb02b779c1fa4dc47f96bc02f35836800ee21a260ccf2e88928c6e97
pullPolicy: IfNotPresent
frontendImage:
repository: tccr.io/truecharts/zabbix-web
tag: 6.2.3@sha256:b58cdcfe7ab5d8d80b46f6766aea7f44f5ce2ac8c80ecf0c5450e206fd692e1d
pullPolicy: IfNotPresent
agent2Image:
repository: tccr.io/truecharts/zabbix-agent2
tag: 6.2.3@sha256:5abdc777ae777b9941c45d4fe9c9cb73f5491550318430dffd1ab9c03af7ed60
pullPolicy: IfNotPresent
snmptrapsImage:
repository: tccr.io/truecharts/zabbix-snmptraps
tag: 6.2.3@sha256:46142f4717a8e8f27da16a82690a62f6bbb18dc5db423610faec53cedf7db8fe
pullPolicy: IfNotPresent
javaGatewayImage:
repository: tccr.io/truecharts/zabbix-java-gateway
tag: 6.2.3@sha256:d29d2025016a8e8a473be48020238edb89072a4adbb92af582a93216d5a76fd1
pullPolicy: IfNotPresent
webServiceImage:
repository: tccr.io/truecharts/zabbix-web-service
tag: 6.2.3@sha256:295b685c16794e8fd2318c3abb61bff26460fd87c66beeedc9bfeaba27b46b4a
pullPolicy: IfNotPresent
tty: true
securityContext:
readOnlyRootFilesystem: false
runAsNonRoot: false
podSecurityContext:
runAsUser: 1997
runAsGroup: 0
zabbix:
# -- https://www.zabbix.com/documentation/current/en/manual/appendix/config/zabbix_server
server:
listen_backlog: 0
debug_level: 3
load_modules: []
timeout: 4
service_manager_sync_freq: 60
start_report_writers: 0
start_pollers: 5
start_ipmi_pollers: 0
start_preprocessors: 3
start_pollers_unreachable: 1
start_trappers: 5
start_pingers: 1
start_discoverers: 1
start_history_pollers: 5
start_http_pollers: 1
start_obdc_pollers: 1
start_timers: 1
start_escalators: 1
start_alerters: 3
start_java_pollers: 5
start_proxy_pollers: 1
start_db_syncers: 4
start_lld_processors: 2
start_vmware_collectors: 0
vmware_frequency: 60
vmware_perf_frequency: 60
vmware_cache_size: 8M
vmware_timeout: 10
housekeeping_freq: 1
max_housekeeper_delete: 5000
problem_housekeeper_freq: 60
cache_size: 32M
cache_update_freq: 60
history_cache_size: 16M
history_index_cache_size: 4M
history_storage_date_index: false
trend_cache_size: 4M
trend_function_cache_size: 4M
value_cache_size: 8M
trapper_timeout: 300
unreachable_period: 45
unreachable_delay: 15
unavailable_delay: 60
log_slow_queries: 3000
proxy_config_freq: 3600
proxy_data_freq: 1
export_file_size: 1G
export_type: []
stats_allowed_ips: []
frontend:
server_name: My Zabbix Server
enable_access_logs: true
max_execution_time: 300
memory_limit: 128M
post_max_size: 16M
upload_max_file_size: 2M
max_input_time: 300
session_name: zbx_sessionid
deny_gui_access: false
warning_message: Zabbix Server is under maintenance
access_ip_range: []
# Advanced
sso_settings: ""
php_fpm_pm: dynamic
php_fpm_pm_max_children: 50
php_fpm_pm_start_servers: 5
php_fpm_pm_min_spare_servers: 5
php_fpm_pm_max_spare_servers: 35
php_fpm_pm_max_requests: 0
agent:
enabled: true
hostname:
- Zabbix server
hostname_item: ""
metadata: ""
metadata_item: ""
timeout: 3
enable_persistent_buffer: false
persistent_buffer_period: 1h
refresh_active_checks: 120
buffer_send: 5
buffer_size: 100
unsafe_user_parameters: false
tls_connect: unencrypted
tls_accept:
- unencrypted
psk_identity: ""
psk_file: ""
allow_key: ""
deny_key: ""
javagateway:
enabled: true
start_pollers: 5
timeout: 3
debug_level: info
webservice:
enabled: true
debug_level: 3
timeout: 10
snmptraps:
enabled: true
envFrom:
- secretRef:
name: '{{ include "tc.common.names.fullname" . }}-common-secret'
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-common-config'
- configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-server-config'
service:
main:
ports:
main:
port: 10211
protocol: HTTP
targetPort: 8080
server:
enabled: true
ports:
server:
enabled: true
port: 10051
javagateway:
enabled: true
ports:
javagateway:
enabled: true
port: 10052
snmptraps:
enabled: true
ports:
snmptraps:
protocol: UDP
enabled: true
port: 162
targetPort: 1162
agent:
type: ClusterIP
enabled: true
ports:
agent:
enabled: true
port: 10050
webservice:
type: ClusterIP
enabled: true
ports:
webservice:
enabled: true
protocol: HTTP
port: 10053
probes:
liveness:
port: "{{ .Values.service.server.ports.server.port }}"
readiness:
port: "{{ .Values.service.server.ports.server.port }}"
startup:
port: "{{ .Values.service.server.ports.server.port }}"
persistence:
# Server
serveralertscripts:
enabled: true
mountPath: "/usr/lib/zabbix/alertscripts"
size: 256Gi
serverexternalscripts:
enabled: true
mountPath: "/usr/lib/zabbix/externalscripts"
size: 256Gi
servermodules:
enabled: true
mountPath: "/var/lib/zabbix/modules"
size: 256Gi
serverenc:
enabled: true
mountPath: "/var/lib/zabbix/enc"
size: 256Gi
serversshkeys:
enabled: true
mountPath: "/var/lib/zabbix/ssh_keys"
size: 256Gi
serversslcerts:
enabled: true
mountPath: "/var/lib/zabbix/ssl/certs"
size: 256Gi
serversslkeys:
enabled: true
mountPath: "/var/lib/zabbix/ssl/keys"
size: 256Gi
serversslca:
enabled: true
mountPath: "/var/lib/zabbix/ssl/ssl_ca"
size: 256Gi
serverexport:
# Used with conjunction of .Values.zabbix.server.export_file_size
enabled: true
mountPath: "/var/lib/zabbix/export"
size: 256Gi
# SNMP Traps and Server
snmptraps:
enabled: true
mountPath: /var/lib/zabbix/snmptraps
size: 256Gi
snmpmibs:
enabled: true
mountPath: /var/lib/zabbix/mibs
size: 256Gi
# Agent2 Volumes
hostproc:
enabled: true
noMount: true
readOnly: true
type: hostPath
hostPath: /proc
mountPath: /host/proc
hostsys:
enabled: true
noMount: true
readOnly: true
type: hostPath
hostPath: /sys
mountPath: /host/sys
agentconf:
enabled: true
noMount: true
mountPath: /etc/zabbix/zabbix_agentd.d
size: 256Gi
agentenc:
enabled: true
noMount: true
mountPath: /var/lib/zabbix/enc
size: 256Gi
agentbuffer:
enabled: true
noMount: true
mountPath: /var/lib/zabbix/buffer
size: 256Gi
# Java Gateway
javagatewaylibs:
enabled: true
noMount: true
mountPath: /usr/sbin/zabbix_java/ext_lib
size: 256Gi
postgresql:
enabled: true
existingSecret: "dbcreds"
postgresqlUsername: zabbix
postgresqlDatabase: zabbix
portal:
enabled: true