fw、交换机等安全syslog采集
概述
防火墙、交换机等设备会有syslog输出, 安全部门需要监控这些日志并进行分析。需要对这类设备进行日志采集, 但是这些设备有不能安装像filebeat、logstash、fluentd等日志采集。
但是他们默认提供了一个可以对外输出syslog的udp端口。 可以将日志采集到一个提供udp端口收集的服务里面, 由于比较熟悉rsyslog, 所以就采用rsyslog来采集。rsyslog server默认提供了
tcp和udp两种协议的采集端口,刚好满足采集需求。为了扩容方便, 所以把服务部署到k8s集群里面, 为rsyslog server挂载一个持久化存储。
一、首先构建自己的rsyslog server镜像,构建完镜像上传到私有仓库。
FROM ubuntu RUN apt update && apt install rsyslog -y RUN echo '$ModLoad imudp \n\ $UDPServerRun 514 \n\ $ModLoad imtcp \n\ $InputTCPServerRun 514 \n\ $template RemoteStore, "/var/log/remote/%$year%/%$Month%/%$Day%-%$Hour%.log" \n\ :source, !isequal, "localhost" -?RemoteStore \n\ :source, isequal, "last" ~ ' > /etc/rsyslog.conf ENTRYPOINT ["rsyslogd", "-n"]
二、部署到k8s,默认使用hostpath
apiVersion: apps/v1 kind: Deployment metadata: generation: 3 labels: app: rsyslog workload.user.cattle.io/workloadselector: deployment-rsyslog-rsyslog name: rsyslog namespace: rsyslog spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: rsyslog workload.user.cattle.io/workloadselector: deployment-rsyslog-rsyslog strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate template: metadata: labels: app: rsyslog workload.user.cattle.io/workloadselector: deployment-rsyslog-rsyslog spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: rsyslog operator: In values: - "true" containers: - image: registry.hub.com/docker-sre/rsyslog:v1.1 imagePullPolicy: IfNotPresent name: rsyslog ports: - containerPort: 514 name: udp protocol: UDP resources: requests: cpu: 250m memory: 524Mi limits: cpu: 2000m memory: 1024Mi securityContext: allowPrivilegeEscalation: false privileged: false readOnlyRootFilesystem: false runAsNonRoot: false stdin: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File tty: true volumeMounts: - mountPath: /var/log/remote name: rsyslog dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: rsyslog operator: Equal value: "true" volumes: - hostPath: path: /logs/rsyslog type: DirectoryOrCreate name: rsyslog
apiVersion: v1 kind: Service metadata: labels: app: rsyslog name: rsyslog-nodeport namespace: rsyslog spec: externalTrafficPolicy: Cluster ports: - name: udp nodePort: 32378 port: 514 protocol: UDP targetPort: 514 selector: app: rsyslog sessionAffinity: None type: NodePort
测试
docker run --log-driver syslog --log-opt syslog-address=udp://rsyslog-addr:port alpine echo hello world
--------崔帅的拾荒
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库