195 lines
5.7 KiB
Bash
195 lines
5.7 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
cat << EOF > values-custom.yaml
|
|
deepflowServerNodeIPS:
|
|
- 10.50.1.111
|
|
#deepflowK8sClusterID: "fffffff" # FIXME: K8s ClusterID
|
|
image:
|
|
repository: hub.deepflow.yunshan.net/public/deepflow-agent
|
|
pullPolicy: Always
|
|
tag: v6.5
|
|
EOF
|
|
|
|
helm repo add deepflow https://deepflowio.github.io/deepflow
|
|
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
|
|
helm install deepflow-agent -n deepflow deepflow/deepflow-agent --create-namespace -f values-custom.yaml
|
|
|
|
########################################################################################################
|
|
|
|
helm repo add grafana https://grafana.github.io/helm-charts
|
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
|
helm repo update
|
|
kubectl create ns deepflow || true
|
|
|
|
helm upgrade --install kube-state-metrics prometheus-community/kube-state-metrics \
|
|
--namespace deepflow --create-namespace
|
|
|
|
helm upgrade --install node-exporter prometheus-community/prometheus-node-exporter \
|
|
--namespace deepflow --create-namespace \
|
|
--set service.type=ClusterIP \
|
|
--set service.port=9100
|
|
|
|
cat > grafana-agent-values.yaml << EOF
|
|
global:
|
|
image:
|
|
registry: "images.onwalk.net/public"
|
|
agent:
|
|
mode: 'static'
|
|
configMap:
|
|
create: true
|
|
content: ''
|
|
logs:
|
|
enabled: false
|
|
traces:
|
|
enabled: false
|
|
EOF
|
|
|
|
helm upgrade --install grafana-agent grafana/grafana-agent --namespace deepflow -f grafana-agent-values.yaml
|
|
|
|
cat > grafana-agent-configmap.yaml << EOF
|
|
apiVersion: v1
|
|
data:
|
|
config.yaml: |-
|
|
server:
|
|
log_level: info
|
|
log_format: logfmt
|
|
metrics:
|
|
global:
|
|
scrape_interval: 1m
|
|
configs:
|
|
- name: agent
|
|
scrape_configs:
|
|
- job_name: kube-state-metrics
|
|
static_configs:
|
|
- targets: ['10.43.155.169:8080']
|
|
- job_name: node-metrics
|
|
static_configs:
|
|
- targets: ['10.43.68.133:9100']
|
|
remote_write:
|
|
- url: http://deepflow-agent.deepflow.svc.cluster.local/api/v1/prometheus
|
|
kind: ConfigMap
|
|
metadata:
|
|
annotations:
|
|
meta.helm.sh/release-name: grafana-agent
|
|
meta.helm.sh/release-namespace: deepflow
|
|
labels:
|
|
app.kubernetes.io/instance: grafana-agent
|
|
app.kubernetes.io/managed-by: Helm
|
|
app.kubernetes.io/name: grafana-agent
|
|
app.kubernetes.io/version: v0.42.0
|
|
helm.sh/chart: grafana-agent-0.42.0
|
|
name: grafana-agent
|
|
namespace: deepflow
|
|
EOF
|
|
|
|
kubectl apply -f grafana-agent-configmap.yaml
|
|
|
|
kubectl get pods -n deepflow
|
|
|
|
########################################################################################################
|
|
|
|
|
|
helm repo add vector https://helm.vector.dev
|
|
helm repo update
|
|
cat << EOF > vector-values-custom.yaml
|
|
role: Agent
|
|
#nodeSelector:
|
|
# allow/vector: "false"
|
|
|
|
# resources -- Set Vector resource requests and limits.
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
image:
|
|
repository: images.onwalk.net/public/timberio/vector
|
|
pullPolicy: Always
|
|
tag: "0.37.1-distroless-libc"
|
|
podLabels:
|
|
vector.dev/exclude: "true"
|
|
app: deepflow
|
|
# extraVolumes -- Additional Volumes to use with Vector Pods.
|
|
# extraVolumes:
|
|
# - name: opt-log
|
|
# hostPath:
|
|
# path: "/opt/log/"
|
|
# extraVolumeMounts -- Additional Volume to mount into Vector Containers.
|
|
# extraVolumeMounts:
|
|
# - name: opt-log
|
|
# mountPath: "/opt/log/"
|
|
# readOnly: true
|
|
customConfig:
|
|
## The configuration comes from https://vector.dev/docs/reference/configuration/global-options/#data_dir
|
|
data_dir: /vector-data-dir
|
|
api:
|
|
enabled: true
|
|
address: 127.0.0.1:8686
|
|
playground: false
|
|
sources:
|
|
kubernetes_logs:
|
|
type: kubernetes_logs
|
|
namespace_annotation_fields:
|
|
namespace_labels: ""
|
|
node_annotation_fields:
|
|
node_labels: ""
|
|
pod_annotation_fields:
|
|
pod_annotations: ""
|
|
pod_labels: ""
|
|
|
|
transforms:
|
|
remap_kubernetes_logs:
|
|
type: remap
|
|
inputs:
|
|
- kubernetes_logs
|
|
source: |-
|
|
# try to parse json
|
|
if is_string(.message) && is_json(string!(.message)) {
|
|
tags = parse_json(.message) ?? {}
|
|
.message = tags.message # FIXME: the log content key inside json
|
|
del(tags.message)
|
|
.json = tags
|
|
}
|
|
|
|
if !exists(.level) {
|
|
if exists(.json) {
|
|
.level = .json.level
|
|
del(.json.level)
|
|
} else {
|
|
# match log levels surround by ``[]`` or ``<>`` with ignore case
|
|
level_tags = parse_regex(.message, r'[\[\\\<](?<level>(?i)INFOR?(MATION)?|WARN(ING)?|DEBUG?|ERROR?|TRACE|FATAL|CRIT(ICAL)?)[\]\\\>]') ?? {}
|
|
if !exists(level_tags.level) {
|
|
# match log levels surround by whitespace, required uppercase strictly in case mismatching
|
|
level_tags = parse_regex(.message, r'[\s](?<level>INFOR?(MATION)?|WARN(ING)?|DEBUG?|ERROR?|TRACE|FATAL|CRIT(ICAL)?)[\s]') ?? {}
|
|
}
|
|
if exists(level_tags.level) {
|
|
level_tags.level = upcase(string!(level_tags.level))
|
|
.level = level_tags.level
|
|
}
|
|
}
|
|
}
|
|
|
|
if !exists(._df_log_type) {
|
|
# default log type
|
|
._df_log_type = "user"
|
|
}
|
|
|
|
if !exists(.app_service) {
|
|
# FIXME: files 模块没有此字段,请通过日志内容注入应用名称
|
|
.app_service = .kubernetes.container_name
|
|
}
|
|
sinks:
|
|
http:
|
|
encoding:
|
|
codec: json
|
|
inputs:
|
|
- remap_kubernetes_logs # NOTE: 注意这里数据源是 transform 模块的 key
|
|
type: http
|
|
uri: http://deepflow-agent.deepflow/api/v1/log
|
|
EOF
|
|
helm upgrade --install vector vector/vector --namespace deepflow --create-namespace -f vector-values-custom.yaml
|
|
|