一、版本选择
JDK8
Graylog 4.2.10
Mongo 4.4.14
Es7.10.2
可以去官网,搜索 Elasticsearch version 和Mongo version
二、安装elasticsearch
1、以statefulset安装es
2、创建es-headless
1)Rancher-服务发现-services-创建,选择命名空间,输入名称,配置端口
3、创建elasticsearch.yml 配置文件
1)rancher-存储-ConfigMaps-创建
2)填写配置,标红必填,键必须是elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
node.name: "es-graylog"
cluster.initial_master_nodes: ["es-graylog"]
4、创建statefulset
1)rancher-工作负载-Statefulset-创建,设置名称选择es-headless,设置镜像,端口。
3)左侧选择 存储 ,添加 配置映射 ,添加 新建pvc
配置映射选择 elasticsearch.yml 配置文件,映射挂载路径
新建pvc ,挂载es data 目录
5、等待es安装完毕,工作负载-Statefulset 会出现如下应用
三、安装mongo
1、以statefulset安装mongo
2、创建mongo-headless
3、设置如图
4、存储挂载
5、等待安装完毕
四、安装graylog
1、rancher-工作负载-Deployments-创建,添加名称镜像,设置端口,添加环境变量(也可以通过ConfigMaps方式添加)
GRAYLOG_PASSWORD_SECRET: somepasswordpepper
GRAYLOG_ROOT_USERNAME: admin
GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
GRAYLOG_ROOT_TIMEZONE: Asia/Shanghai
GRAYLOG_ELASTICSEARCH_HOSTS: http://xxx.xxx.xxx.xxx:32299
GRAYLOG_MONGODB_URI: mongodb://xxx.xxx.xxx.xxx:30817/graylog
2、等待安装完毕
五、配置graylog
如果是复用mongo 或者es 请先将mongo 的graylog 库删除,其次es 中对应的graylog相关的索引也删除。
1、k8s的任意一节点ip,http://xxx:31956 (对应9000端口)打开
六、配置集成springboot
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<springProperty scope="context" name="springAppEnv" source="spring.profiles.active"/>
<property name="log.path" value="logs/${springAppName}" />
<!-- 控制台输出 -->
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5level] logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</layout>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5level] logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</layout>
</encoder>
<!--日志文件最大的大小 -->
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<appender name="GELF"
class="de.siegmar.logbackgelf.GelfUdpAppender">
<graylogPort>31222</graylogPort> <!-- graylog 日志接收端口 -->
<springProfile name="test">
<graylogHost>xxx.xxx.xxx.xxx</graylogHost>
</springProfile>
<springProfile name="dev">
<graylogHost>xxx.xxx.xxx.xxx</graylogHost>
</springProfile>
<springProfile name="pro">
<graylogHost>xxx.xxx.xxx.xxx</graylogHost>
</springProfile>
<maxChunkSize>508</maxChunkSize>
<useCompression>true</useCompression>
<encoder class="de.siegmar.logbackgelf.GelfEncoder">
<includeRawMessage>false</includeRawMessage>
<includeMarker>true</includeMarker>
<includeMdcData>true</includeMdcData>
<includeCallerData>false</includeCallerData>
<includeRootCauseData>false</includeRootCauseData>
<includeLevelName>true</includeLevelName>
<shortPatternLayout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5level] logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</shortPatternLayout>
<fullPatternLayout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5level] logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</fullPatternLayout>
<staticField>app_env:${springAppEnv}</staticField>
<staticField>app_name:${springAppName}</staticField>
<staticField>os_arch:${os.arch}</staticField>
<staticField>os_name:${os.name}</staticField>
<staticField>os_version:${os.version}</staticField>
</encoder>
</appender>
<!-- 根据不同的换将设置不同日志输出级别 -->
<springProfile name="test">
<root level="INFO">
<appender-ref ref="GELF"/>
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="DEBUG">
<appender-ref ref="GELF"/>
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
<springProfile name="pro">
<root level="INFO">
<appender-ref ref="GELF"/>
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</springProfile>
</configuration>