diff --git a/ansible/roles/traffic-engine/files/helm/conf/shaping.conf b/ansible/roles/traffic-engine/files/helm/conf/shaping.conf index 513c069b..0e4a66cc 100644 --- a/ansible/roles/traffic-engine/files/helm/conf/shaping.conf +++ b/ansible/roles/traffic-engine/files/helm/conf/shaping.conf @@ -30,13 +30,21 @@ SWARMKV_HEALTH_CHECK_PORT=8552 SWARMKV_HEALTH_CHECK_ANNOUNCE_PORT=HEALTH_CHECK_ANNOUNCE_PORT_LOCATION [METRIC] -DEVICE_GROUP= #TODO string_value -DEVICE_ID= #TODO string_value -DATA_CENTER= #TODO string_value -KAFKA_TOPIC= #TODO string_value -KAFKA_BROKERS= #TODO string_value -KAFKA_USERNAME= #TODO string_value -KAFKA_PASSWORD= #TODO string_value +{{- range .Values.device.tags -}} +{{- range $key,$val := . }} +{{- if eq $key "data_center" }} +DATA_CENTER={{ $val }} +{{- end }} +{{- if eq $key "device_group" }} +DEVICE_GROUP={{ $val }} +{{- end }} +{{- end }} +{{- end }} +DEVICE_ID="DEVICE_ID_PLACE_HOLDER_MARK" +KAFKA_TOPIC="POLICY-RULE-METRIC" +KAFKA_BROKERS="{{- include "traffic-engine.config.addresses.converter" (list .Values.external_resources.olap.kafka_brokers.addresses ",") }}" +KAFKA_USERNAME="{{ .Values.external_resources.olap.kafka_brokers.sasl_username }}" +KAFKA_PASSWORD="{{ .Values.external_resources.olap.kafka_brokers.sasl_password }}" [CONFIG] #PROFILE_QUEUE_LEN_PER_PRIORITY_MAX=128 diff --git a/ansible/roles/traffic-engine/files/helm/conf/telegraf_shaping.conf b/ansible/roles/traffic-engine/files/helm/conf/telegraf_shaping.conf deleted file mode 100644 index e5efa12c..00000000 --- a/ansible/roles/traffic-engine/files/helm/conf/telegraf_shaping.conf +++ /dev/null @@ -1,102 +0,0 @@ -# Telegraf Configuration -[global_tags] - device_id = "${device_id}" -{{- range .Values.device.tags -}} -{{- range $key,$val := . }} - {{ $key }} = {{ $val | quote }} -{{- end }} -{{- end }} -[agent] - interval = "1s" - round_interval = true - metric_batch_size = 1000 - metric_buffer_limit = 100000 - collection_jitter = "0s" - flush_interval = "1s" - flush_jitter = "0s" - precision = "" - debug = false - quiet = false - logfile = "" - hostname = "" - omit_hostname = true - - -[[inputs.socket_listener]] - service_address = "udp://:8200" - data_format = "influx" - read_buffer_size = "32MiB" - -#[[processors.converter]] -# [processors.converter.tags] -# measurement = ["topic"] - -[[processors.rename]] - [[processors.rename.replace]] - field = "active_sessions_sum" - dest = "active_sessions" - - [[processors.rename.replace]] - field = "in_drop_pkts_sum" - dest = "in_drop_pkts" - - [[processors.rename.replace]] - field = "in_max_latency_us_max" - dest = "in_max_latency_us" - - [[processors.rename.replace]] - field = "in_queue_len_sum" - dest = "in_queue_len" - - [[processors.rename.replace]] - field = "in_bytes_sum" - dest = "in_bytes" - - [[processors.rename.replace]] - field = "in_pkts_sum" - dest = "in_pkts" - - [[processors.rename.replace]] - field = "out_drop_pkts_sum" - dest = "out_drop_pkts" - - [[processors.rename.replace]] - field = "out_max_latency_us_max" - dest = "out_max_latency_us" - - [[processors.rename.replace]] - field = "out_queue_len_sum" - dest = "out_queue_len" - - [[processors.rename.replace]] - field = "out_bytes_sum" - dest = "out_bytes" - - [[processors.rename.replace]] - field = "out_pkts_sum" - dest = "out_pkts" - - [[processors.rename.replace]] - field = "queueing_sessions_sum" - dest = "queueing_sessions" - -[[aggregators.basicstats]] - period = "1s" - delay = "1s" - grace = "1s" - drop_original = true - stats = ["sum", "max"] - - -[[outputs.kafka]] - sasl_username = "{{ .Values.external_resources.olap.kafka_brokers.sasl_username }}" - sasl_password = "{{ .Values.external_resources.olap.kafka_brokers.sasl_password }}" - brokers = [ "{{- include "traffic-engine.config.addresses.converter" (list .Values.external_resources.olap.kafka_brokers.addresses "\",\"") }}" ] - topic = "POLICY-RULE-METRIC" - client_id = "POLICY-RULE-METRIC" - fielddrop = ["*pkts*max", "*bytes*max", "*session*max", "*queue*max", "*latency*sum"] - data_format = "json" - json_timestamp_units = "1ms" - json_transformation = ''' - $merge([$, { "timestamp_ms": timestamp}]) ~> |$|{}, ['timestamp']| - ''' diff --git a/ansible/roles/traffic-engine/files/helm/templates/configmap-shaping.yaml b/ansible/roles/traffic-engine/files/helm/templates/configmap-shaping.yaml index 87dc37fd..5b9298af 100644 --- a/ansible/roles/traffic-engine/files/helm/templates/configmap-shaping.yaml +++ b/ansible/roles/traffic-engine/files/helm/templates/configmap-shaping.yaml @@ -1,3 +1,4 @@ +{{- if eq .Values.shaping.enable .Values.define_enable_val_yes }} apiVersion: v1 kind: ConfigMap metadata: @@ -5,4 +6,5 @@ metadata: namespace: default data: shaping.conf: {{ tpl (.Files.Get "conf/shaping.conf") . | quote }} - tsg_device_tag.json: {{ tpl (.Files.Get "conf/tsg_device_tag.json") . | quote }} \ No newline at end of file + tsg_device_tag.json: {{ tpl (.Files.Get "conf/tsg_device_tag.json") . | quote }} +{{- end }} \ No newline at end of file diff --git a/ansible/roles/traffic-engine/files/helm/templates/configmap-telegraf.yaml b/ansible/roles/traffic-engine/files/helm/templates/configmap-telegraf.yaml index 46aa87fe..fb81b701 100644 --- a/ansible/roles/traffic-engine/files/helm/templates/configmap-telegraf.yaml +++ b/ansible/roles/traffic-engine/files/helm/templates/configmap-telegraf.yaml @@ -4,5 +4,4 @@ metadata: name: telegraf-{{ .Release.Name }} namespace: default data: - telegraf_shaping.conf: {{ tpl (.Files.Get "conf/telegraf_shaping.conf") . | quote }} telegraf_proxy.conf: {{ tpl (.Files.Get "conf/telegraf_proxy.conf") . | quote }} \ No newline at end of file diff --git a/ansible/roles/traffic-engine/files/helm/templates/deployment-shaping.yaml b/ansible/roles/traffic-engine/files/helm/templates/deployment-shaping.yaml index 87cc76ff..010b6073 100644 --- a/ansible/roles/traffic-engine/files/helm/templates/deployment-shaping.yaml +++ b/ansible/roles/traffic-engine/files/helm/templates/deployment-shaping.yaml @@ -82,7 +82,6 @@ spec: ports: - containerPort: 8551 - containerPort: 8552 - - containerPort: 9007 env: - name: MY_POD_NAME valueFrom: @@ -105,12 +104,12 @@ spec: {{- if eq .Values.debug.shaping.enable_liveness_probe .Values.define_enable_val_yes }} livenessProbe: tcpSocket: - port: 9007 + port: 8552 failureThreshold: 1 timeoutSeconds: 10 startupProbe: tcpSocket: - port: 9007 + port: 8552 failureThreshold: 30 periodSeconds: 10 {{- end }} @@ -130,6 +129,8 @@ spec: subPath: "shaping/tsg_device_tag.json" - name: shaping-log mountPath: /opt/tsg/shaping_engine/log + - name: metrics-json-dir + mountPath: "/opt/tsg/shaping_engine/metric" {{- include "public.sync-host-timezone.volume-mount" . | nindent 8 }} {{- if eq .Values.debug.shaping.enable_prestart_script .Values.define_enable_val_yes }} - name: prestart-dir @@ -143,27 +144,32 @@ spec: {{- end }} {{- include "traffic-engine.mount.mrzcpd" . | nindent 8 }} - - name: telegraf-shaping - image: "registry.gdnt-cloud.website/tsg-telegraf:{{ .Chart.AppVersion }}" + - name: fieldstat-exporter + image: "registry.gdnt-cloud.website/tsg-shaping:{{ .Chart.AppVersion }}" imagePullPolicy: Never command: - "bash" - "-ec" - | - source /etc/profile.d/device_id.sh - /usr/bin/telegraf -config /etc/telegraf/telegraf_shaping.conf -config-directory /etc/telegraf/telegraf_statistic.d + ldconfig + python3 /opt/tsg/framework/bin/fieldstat_exporter.py prometheus -p 9007 -d /opt/tsg/shaping_engine/metric + ports: + - containerPort: 9007 securityContext: privileged: true + livenessProbe: + tcpSocket: + port: 9007 + failureThreshold: 1 + timeoutSeconds: 10 + startupProbe: + tcpSocket: + port: 9007 + failureThreshold: 5 + periodSeconds: 10 volumeMounts: - - name: telegraf-configs-volume - mountPath: "/etc/telegraf/telegraf_shaping.conf" - subPath: "telegraf_shaping.conf" - - name: shared-configs-volume - mountPath: "/opt/tsg/etc/tsg_sn.json" - subPath: "tsg_sn.json" - - name: shared-configs-volume - mountPath: "/etc/profile.d/device_id.sh" - subPath: "device_id.sh" + - name: metrics-json-dir + mountPath: "/opt/tsg/shaping_engine/metric" {{- include "public.sync-host-timezone.volume-mount" . | nindent 8 }} - name: log-dir-hook @@ -221,11 +227,12 @@ spec: imagePullPolicy: Never command: - "bash" - - "-ec" + - "-ecx" - | cp -r /opt/tsg/configs/* /opt/tsg/shared-configs/ {{- include "public.prepare-access-API" . | nindent 12 }} {{- include "public.serialize-node-annotations" . | nindent 12 }} + sed -Ei -c "s|DEVICE_ID_PLACE_HOLDER_MARK|${DEVICE_SN?}|g" /opt/tsg/shared-configs/shaping/shaping.conf securityContext: privileged: true env: @@ -250,14 +257,13 @@ spec: hostPath: path: /run/systemd/journal type: Directory - - name: telegraf-configs-volume - configMap: - name: telegraf-{{ .Release.Name }} - name: shaping-configs-volume configMap: name: shaping-{{ .Release.Name }} - name: shared-configs-volume emptyDir: {} + - name: metrics-json-dir + emptyDir: {} - name: shaping-log hostPath: path: /var/log/traffic-engine/traffic-engine-{{ .Release.Name }}/shaping_engine/