翼度科技»论坛 云主机 服务器技术 查看内容

Docker搭建ELK日志系统,并通过Kibana查看日志方式

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
docker-compose.yml
  1. version: '3'
  2. services:
  3.   elasticsearch:
  4.     image: elasticsearch:7.7.0  #镜像
  5.     container_name: elasticsearch  #定义容器名称
  6.     restart: always  #开机启动,失败也会一直重启
  7.     environment:
  8.       - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
  9.       - "discovery.type=single-node" #以单一节点模式启动
  10.       - "ES_JAVA_OPTS=-Xms512m -Xmx1024m" #设置使用jvm内存大小
  11.     volumes:
  12.       - D:\docker\elasticsearch\plugins:/usr/share/elasticsearch/plugins # 插件文件挂载[挂在目录自行更改]
  13.       - D:\docker\elasticsearch\data:/usr/share/elasticsearch/data # 数据文件挂载[挂在目录自行更改]
  14.     ports:
  15.       - 9200:9200
  16.   kibana:
  17.     image: kibana:7.7.0
  18.     container_name: kibana
  19.     restart: always
  20.     depends_on:
  21.       - elasticsearch #kibana在elasticsearch启动之后再启动
  22.     environment:
  23.       - ELASTICSEARCH_URL=http://elasticsearch:9200 #设置访问elasticsearch的地址
  24.     ports:
  25.       - 5601:5601
  26.   logstash:
  27.     image: logstash:7.7.0
  28.     container_name: logstash
  29.     restart: always
  30.     volumes:
  31.       - D:\docker\logstash\logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件[挂在文件自行更改]
  32.     depends_on:
  33.       - elasticsearch #kibana在elasticsearch启动之后再启动
  34.     links:
  35.       - elasticsearch:es #可以用es这个域名访问elasticsearch服务
  36.     ports:
  37.       - 4560:4560
复制代码
D:\docker\logstash\logstash-springboot.conf

文件内容:
  1. input {
  2.   tcp {
  3.     mode => "server"
  4.     host => "0.0.0.0"
  5.     port => 4560
  6.     codec => json_lines
  7.   }
  8. }

  9. output {
  10.   elasticsearch {
  11.     hosts => "es:9200"
  12.     index => "springboot-logstash-%{+YYYY.MM.dd}"
  13.   }
  14. }
复制代码
访问:http://localhost:9200

访问:http://localhost:5601

配置中文:
  1. # 进入容器
  2. docker exec -it kibana /bin/bash

  3. # 配置 中文[在文件末尾加上]
  4. vi ./config/kibana.yml
  5. i18n.locale: zh-CN

  6. # 重启
  7. docker restart kibana
复制代码
Spring boot 集成 logstash

pom.xml
  1. <properties>
  2.         <hutool.version>5.6.6</hutool.version>
  3.     <lombok.version>1.18.20</lombok.version>
  4.     <spring-boot.web.version>2.2.10.RELEASE</spring-boot.web.version>
  5.     <logstash.version>5.1</logstash.version>
  6. </properties>

  7. <dependency>
  8.     <groupId>org.projectlombok</groupId>
  9.     <artifactId>lombok</artifactId>
  10.     <version>${lombok.version}</version>
  11. </dependency>
  12. <dependency>
  13.     <groupId>cn.hutool</groupId>
  14.     <artifactId>hutool-all</artifactId>
  15.     <version>${hutool.version}</version>
  16. </dependency>
  17. <dependency>
  18.     <groupId>org.springframework.boot</groupId>
  19.     <artifactId>spring-boot-starter-web</artifactId>
  20.     <version>${spring-boot.web.version}</version>
  21. </dependency>
  22. <dependency>
  23.     <groupId>net.logstash.logback</groupId>
  24.     <artifactId>logstash-logback-encoder</artifactId>
  25.     <version>${logstash.version}</version>
  26. </dependency>
复制代码
application.yml
  1. server:
  2.   port: 8081


  3. spring:
  4.   application:
  5.     name: ELK-server-base

  6. logging:
  7.   level:
  8.     org:
  9.       springframework:
  10.         boot:
  11.           autoconfigure: info
复制代码
logstash.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.     <conversionRule conversionWord="clr"
  4.                     converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  5.     <conversionRule conversionWord="wex"
  6.                     converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  7.     <conversionRule conversionWord="wEx"
  8.                     converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  9.     <property name="CONSOLE_LOG_PATTERN"
  10.               value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
  11.     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  12.         <encoder>
  13.             <pattern>${CONSOLE_LOG_PATTERN}</pattern>
  14.             <charset>utf8</charset>
  15.         </encoder>
  16.         <!-- 临界值过滤器,过滤掉低于指定临界值的日志 -->
  17.         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  18.             <level>debug</level>
  19.         </filter>
  20.     </appender>
  21.     <appender name="file"
  22.               class="ch.qos.logback.core.rolling.RollingFileAppender">
  23.         <file>logs/Logback.log</file>
  24.         <encoder>
  25.             <pattern>${CONSOLE_LOG_PATTERN}</pattern>
  26.             <charset>utf8</charset>
  27.         </encoder>
  28.         <!-- 临界值过滤器,过滤掉低于指定临界值的日志 -->
  29.         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  30.             <level>debug</level>
  31.         </filter>
  32.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  33.             <fileNamePattern>logs/%d{yyyy-MM-dd}/Logback.%d{yyyy-MM-dd}.log
  34.             </fileNamePattern>
  35.             <maxHistory>30</maxHistory>
  36.         </rollingPolicy>
  37.     </appender>
  38.     <appender name="stash"
  39.               class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  40.         <destination>127.0.0.1:4560</destination>
  41.         <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
  42.     </appender>
  43.     <!--logger节点,可选节点,用来具体指明包的日志输出级别,它将会覆盖root的输出级别 -->
  44.     <logger name="com.yj" level="debug" />
  45.     <root level="debug">
  46.         <appender-ref ref="stash" />
  47.         <appender-ref ref="console" />
  48. <!--        <appender-ref ref="file" />-->
  49.     </root>
  50. </configuration>
复制代码
ElkApplication.java
  1. @Slf4j
  2. @SpringBootApplication
  3. @EnableScheduling
  4. public class ElkBaseApplication {


  5.     @Autowired
  6.     private Environment environment;

  7.     public static void main(String[] args) {
  8.         SpringApplication.run(ElkBaseApplication.class, args);
  9.     }

  10.     @Scheduled(cron = "0/5 * * * * ?")
  11.     public void schedulingMessage() {
  12.         log.info("服务:{},时间:{} 打印的日志,端口:{}", environment.getProperty("spring.application.name",String.class), DateUtil.formatDateTime(DateUtil.date()), environment.getProperty("server.port",Integer.class));
  13.     }

  14. }
复制代码
启动项目并在kibana中查看日志


创建索引模式



创建好索引模式点击 “Discover”

选择创建好的索引模式 “springboot-logstash-*”

因为字段比较多,这里只选着了 “message”


总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/server/321072bv1.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具