k8s 单独部署
2022-09-01
StatefulSet 方式部署
项目路径:/Users/liulei/service/EKS/ekstest/elk/logstash/example
StatefulSet.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: logstash-logstash
release: logstash
name: logstash-logstash
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: logstash-logstash
release: logstash
serviceName: logstash-logstash-headless
template:
metadata:
labels:
app: logstash-logstash
release: logstash
name: logstash-logstash
spec:
containers:
- env:
- name: LS_JAVA_OPTS
value: -Xmx1g -Xms1g
# image: docker.elastic.co/logstash/logstash:7.17.5
image: mrliulei/logstash:7.17.5
imagePullPolicy: IfNotPresent
name: logstash
ports:
- containerPort: 5044
name: logstash
protocol: TCP
- containerPort: 9600
name: monitoring
protocol: TCP
volumeMounts:
- mountPath: /usr/share/logstash/pipeline
name: logstashpipeline
dnsPolicy: ClusterFirst
nodeSelector:
topology.ebs.csi.aws.com/zone: us-west-2a
volumes:
- configMap:
defaultMode: 420
name: logstash-pipeline
name: logstashpipeline
service.yaml
apiVersion: v1
kind: Service
metadata:
name: logstash-headless
namespace: monitoring
spec:
clusterIP: None
clusterIPs:
- None
ports:
- name: monitoring
port: 9600
protocol: TCP
targetPort: 9600
- name: logstash
port: 5044
protocol: TCP
targetPort: 5044
selector:
app: logstash-logstash
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
ConfigMap.yaml
apiVersion: v1
data:
logstash.conf: |
input {
beats {
port => 5044
}
}
filter {
if [filename] == "novel-api-log" {
grok {
match => {
# 2022-08-27 19:17:39.334 [restartedMain] INFO [][] com.lexing.config.BaseRedisCachingConfig - cacheManager - 210 - RedisCacheManager
"message" => "\[%{TIMESTAMP_ISO8601:date}\]\s+\[%{GREEDYDATA:thread}\]\s+%{WORD:method}\s+\[(?<local>\w*)\]\[(?<user>\w*)\]\s+%{NOTSPACE:class}\s+-\s+%{WORD:function}\s+-\s+%{INT:line}\s+-\s+%{GREEDYDATA:content}"
}
}
mutate {
enable_metric => "false"
remove_field => ["message", "log", "tags", "input", "agent", "host", "ecs", "@version"]
}
date {
match => ["date","yyyy-MM-dd HH:mm:ss.SSS"]
target => "date"
}
}
}
output {
stdout {
codec => rubydebug
}
if [filename] == "novel-api-log" {
elasticsearch {
# 每个月创建一个新的索引
index => "novel-api_log_%{+YYYY-MM}"
hosts => ["http://elasticsearch:9200"]
}
}
}
kind: ConfigMap
metadata:
name: logstash-pipeline
namespace: monitoring
执行命令创建
kubectl create -f .