Kong http Logs
Browse, analyze logs in Elasticsearchstatus_codes, pie-chart, top 10 clientip, line-chart,word-map and etc...
tcp-log.yaml ( kong deployed in kubernets)
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: tcp-log
labels:
global: "true"
config:
host: logstash.logstash
port: 1514
plugin: tcp-log
helm install logstash
values.yaml
replicaCount: 1
podDisruptionBudget:
maxUnavailable: 1
updateStrategy:
type: RollingUpdate
terminationGracePeriodSeconds: 30
image:
repository: docker.elastic.co/logstash/logstash-oss
tag: 6.7.0
pullPolicy: IfNotPresent
Add secrets manually via kubectl on kubernetes cluster and reference here
pullSecrets:
- name: "myKubernetesSecret"
service:
type: ClusterIP
clusterIP: None
nodePort:
Set this to local, to preserve client source ip. Default stripes out the source ip
externalTrafficPolicy: Local
annotations: {}
## AWS example for use with LoadBalancer service type.
# external-dns.alpha.kubernetes.io/hostname: logstash.cluster.local
# service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
# service.beta.kubernetes.io/aws-load-balancer-internal: "true"
ports:
# syslog-udp:
# port: 1514
# targetPort: syslog-udp
# protocol: UDP
syslog-tcp:
port: 1514
targetPort: syslog-tcp
protocol: TCP
#beats:
# port: 5044
# targetPort: beats
# protocol: TCP
# http:
# port: 8080
# targetPort: http
# protocol: TCP
# loadBalancerIP: 10.0.0.1
ports:
- name: syslog-udp
containerPort: 1514
protocol: UDP
- name: syslog-tcp
containerPort: 1514
protocol: TCP
#- name: beats
containerPort: 5044
protocol: TCP
- name: http
containerPort: 8080
protocol: TCP
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- logstash.cluster.local
tls: []
- secretName: logstash-tls
hosts:
- logstash.cluster.local
resources: {}
We usually recommend not to specify default resources and to leave this as a conscious
choice for the user. This also increases chances charts run on environments with little
resources, such as Minikube. If you do want to specify resources, uncomment the following
lines, adjust them as necessary, and remove the curly braces after 'resources:'.
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
priorityClassName: ""
nodeSelector: {}
tolerations: []
securityContext:
fsGroup: 1000
runAsUser: 1000
affinity: {}
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: "kubernetes.io/hostname"
labelSelector:
matchLabels:
release: logstash
podAnnotations: {}
iam.amazonaws.com/role: "logstash-role"
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "9198"
podLabels: {}
team: "developers"
service: "logstash"
livenessProbe:
httpGet:
path: /
port: monitor
initialDelaySeconds: 20
periodSeconds: 30
timeoutSeconds: 30
failureThreshold: 6
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: monitor
initialDelaySeconds: 20
periodSeconds: 30
timeoutSeconds: 30
failureThreshold: 6
successThreshold: 1
persistence:
enabled: false
logstash data Persistent Volume Storage Class
If defined, storageClassName: <storageClass>
If set to "-", storageClassName: "", which disables dynamic provisioning
If undefined (the default) or set to null, no storageClassName spec is
set, choosing the default provisioner. (gp2 on AWS, standard on
GKE, AWS & OpenStack)
storageClass: "-"
accessMode: ReadWriteOnce
size: 2Gi
volumeMounts:
- name: data
mountPath: /usr/share/logstash/data
- name: patterns
mountPath: /usr/share/logstash/patterns
- name: pipeline
mountPath: /usr/share/logstash/pipeline
volumes: []
- name: tls
secret:
secretName: logstash-tls
- name: pipeline
configMap:
name: logstash-pipeline
- name: certs
hostPath:
path: /tmp
exporter:
logstash:
enabled: true
image:
repository: bonniernews/logstash_exporter
tag: v0.1.2
pullPolicy: IfNotPresent
env: {}
resources: {}
path: /metrics
port: 9198
target:
port: 9600
path: /metrics
livenessProbe:
httpGet:
path: /metrics
port: ls-exporter
periodSeconds: 15
timeoutSeconds: 60
failureThreshold: 8
successThreshold: 1
readinessProbe:
httpGet:
path: /metrics
port: ls-exporter
periodSeconds: 15
timeoutSeconds: 60
failureThreshold: 8
successThreshold: 1
elasticsearch:
host: elasticsearch-client.efk.svc.cluster.local
port: 9200
ref: https://github.com/elastic/logstash-docker/blob/master/build/logstash/env2yaml/env2yaml.go
config:
config.reload.automatic: "true"
path.config: /usr/share/logstash/pipeline
path.data: /usr/share/logstash/data
ref: https://www.elastic.co/guide/en/logstash/current/persistent-queues.html
queue.checkpoint.writes: 1
queue.drain: "true"
queue.max_bytes: 1gb # disk capacity must be greater than the value of queue.max_bytes
queue.type: persisted
Patterns for filters.
Each YAML heredoc will become a separate pattern file.
patterns:
main: |-
TESTING {"foo":.*}$
NOTE: To achieve multiple pipelines with this chart, current best practice
is to maintain one pipeline per chart release. In this way configuration is
simplified and pipelines are more isolated from one another.
inputs:
main: |-
input {
# udp {
# port => 1514
# type => syslog
# }
tcp {
port => 1514
type => syslog
codec => json
}
#beats {
# port => 5044
#}
# http {
# port => 8080
# }
# kafka {
# ## ref: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html
# bootstrap_servers => "kafka-input:9092"
# codec => json { charset => "UTF-8" }
# consumer_threads => 1
# topics => ["source"]
# type => "example"
# }
}
filters:
main: |-
filter {
geoip {
source => "client_ip"
}
}
outputs:
main: |-
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => ["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"]
manage_template => true
index => "logstash-kong-http-log-%{+YYYY.MM.dd}"
}
# kafka {
# ## ref: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-kafka.html
# bootstrap_servers => "kafka-output:9092"
# codec => json { charset => "UTF-8" }
# compression_type => "lz4"
# topic_id => "destination"
# }
}
helm install elasticsearch
pass
Data source config
Collector config:
Upload an updated version of an exported dashboard.json file from Grafana
| Revision | Description | Created | |
|---|---|---|---|
| Download |
Apache HTTP Server
Easily monitor Apache HTTP Server, an open source HTTP server for modern operating systems including UNIX and Windows, with Grafana Cloud's out-of-the-box monitoring solution.
Learn more