当前位置: 首页 > article >正文

ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana

前言
你知道对于一个系统的上线考察,必备的几样东西是什么吗?其实这也是面试中考察求职者,是否真的做过系统开发和上线的必备问题。包括:服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志,如果你做的系统里没有这样几个东西,一种是说明系统是玩具项目,另外一种就是压根没做过或者没关心过。
Elastic Stack 技术栈,别是 Elasticsearch、Logstash、Kibana 组成,简称 ELK 是一套针对日志数据做解决方案的框架。它使您能够聚合来自所有系统和应用程序的日志,分析这些日志,并创建可视化来进行应用程序和基础设施监控、更快的故障排除、安全分析等。
综上,3个组件的组合使用。由 Logstash 将摄取、转换数据并将其发送到 Elasticsearch 为摄取的数据编制索引,并且分析和搜索这些数据。最终 Kibana 会将分析结果可视化。也就是你可以在 Kibana 上实时看到系统的运行日志。

环境配置
在这里插入图片描述
环境;jdk 1.8、Maven 3.6.x、Docker
组件;ELK version 7.17.14 支持 ARM&AMD

在这里插入图片描述
1:docker-compose.yml 运行时会加载下面的 kibana、logstash 配置信息。
2:kibana.yml 设置了资源的基本信息,包括 ES 的连接,中文汉化。
3:logstash.conf 设置了日志的格式,上报到 es:9200 的地址信息。这些都可以保持默认不用修改。

安装环境

version: '3'
# 执行脚本;docker-compose -f docker-compose.yml up -d
# 控制台;GET _cat/indices - 查看 springboot-logstash- 是否存在,上报后存在,则表示接入成功
services:
  elasticsearch:
    image: elasticsearch:7.17.14
    ports:
      - '9200:9200'
      - '9300:9300'
    container_name: elasticsearch
    restart: always
    environment:
      - 'cluster.name=elasticsearch' # 设置集群名称为elasticsearch
      - 'discovery.type=single-node' # 以单一节点模式启动
      - "cluster.name=docker-cluster" # 设置名称
      - 'ES_JAVA_OPTS=-Xms512m -Xmx512m' # 设置使用jvm内存大小
    networks:
      - elk

  logstash:
    image: logstash:7.17.14
    container_name: logstash
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
      - ./logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    ports:
      - '4560:4560'
      - '50000:50000/tcp'
      - '50000:50000/udp'
      - '9600:9600'
    environment:
      LS_JAVA_OPTS: -Xms1024m -Xmx1024m
      TZ: Asia/Shanghai
      MONITORING_ENABLED: false
    links:
      - elasticsearch:es # 可以用es这个域名访问elasticsearch服务
    networks:
      - elk
    depends_on:
      - elasticsearch # 依赖elasticsearch启动后在启动logstash

  kibana:
    image: kibana:7.17.14
    container_name: kibana
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - '5601:5601'
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200 #设置访问elasticsearch的地址
      - 'elasticsearch.hosts=http://es:9200' #设置访问elasticsearch的地址
      - I18N_LOCALE=zh-CN
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge #网络

日志配置
引入pom.xml-logstash

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.3</version>
</dependency>

logback 采集

# logstash部署的服务器IP
logstash:
  host: 127.0.0.1

<springProperty name="LOG_STASH_HOST" scope="context" source="logstash.host" defaultValue="127.0.0.1"/>

<!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!--可以访问的logstash日志收集端口-->
    <destination>${LOG_STASH_HOST}:4560</destination>
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>

<root level="info">
    <appender-ref ref="LOGSTASH"/>
</root>

应用测试

public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    /**
     * curl http://localhost:8091/api/ratelimiter/login?fingerprint=uljpplllll01009&uId=1000&token=8790
     */
    @RequestMapping(value = "login", method = RequestMethod.GET)
    public String login(String fingerprint, String uId, String token) {
        log.info("模拟登录 login fingerprint:{}", fingerprint);
        return "模拟登录:登录成功 " + uId;
    }

}

在这里插入图片描述
1:地址:http://0.0.0.0:5601/app/dev_tools#/console(opens new window)
2:命令:GET _cat/indices - 通过命令检测日志上报
配置日志
创建索引
在这里插入图片描述
当你的应用启动后,会上报数据。这个时候在点击 Discover 会提示你有可用的数据。
回到监控
创建索引后,回到 Discover 即可查看监控日志。在这个阶段,你可以访问应用程序接口,查看上报日志信息;http://localhost:8091/api/ratelimiter/login?fingerprint=uljpplllll01009&uId=1000&token=8790
在这里插入图片描述
当你不断的访问接口,就可以看到上报的日志数据信息了。

好了 至此 ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana 点点关注不迷路 老铁们!!!!!


http://www.kler.cn/a/459701.html

相关文章:

  • Git命令行的使用
  • Hive之import和export使用详解
  • 丢弃法hhhh
  • 从企业级 RAG 到 AI Assistant,阿里云 Elasticsearch AI 搜索技术实践
  • stm32 智能语音电梯系统
  • 王老吉药业SRM系统上线 携手隆道共启战略合作新篇章
  • Linux(Centos 7.6)常见基础配置
  • 12.22-12.29学习周报
  • Linux 安装deb
  • CentOS 7安装Docker详细教程
  • E7515BUXM 5G 无线测试平台
  • log4j 单独设置某个类或者某个包的级别
  • python利用selenium实现大麦网抢票
  • [单master节点k8s部署]43.全链路监控(二)
  • Prompt工程--AI开发--可置顶粘贴小工具
  • 【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现
  • Android 14.0 设置默认屏幕亮度百分比
  • [Pro Git#2] 分支管理 | branch fix_bug , feature | 处理合并冲突
  • 微信小程序:定义页面标题,动态设置页面标题,json
  • Flink的三种时间语义
  • 在 Ubuntu 下通过 Docker 部署 Nginx 服务器
  • 《机器学习》从入门到实战——逻辑回归
  • Spring Boot日志处理
  • hadoop sql 执行log
  • ARM200~500部署
  • 第11关:博客系统之查询博客评论