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

微服务中的日志管理中间件的使用和管理

日志管理是系统运维和开发过程中非常重要的一环。它帮助我们监控系统的运行状态、排查问题、分析性能等。常用的日志管理中间件包括 ELK Stack(Elasticsearch, Logstash, Kibana)、EFK Stack(Elasticsearch, Fluentd, Kibana)、Graylog 等。下面我们将详细介绍如何使用和管理 ELK Stack

ELK Stack 简介

  • Elasticsearch: 一个分布式的搜索和分析引擎,用于存储和检索大量数据。
  • Logstash: 一个开源的数据收集引擎,负责从各种来源收集日志数据并进行处理,然后将其发送到 Elasticsearch。
  • Kibana: 一个开源的分析和可视化平台,用于探索和可视化存储在 Elasticsearch 中的数据。

安装和配置 ELK Stack

1. 安装 Java

Elasticsearch 和 Logstash 都需要 Java 运行时环境 (JRE) 或 Java 开发工具包 (JDK)。

bash

sudo apt update
sudo apt install default-jdk -y

验证安装:

bash

java -version
2. 安装 Elasticsearch

bash

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elasticsearch.list'
sudo apt-get update && sudo apt-get install elasticsearch -y
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

编辑 Elasticsearch 配置文件 /etc/elasticsearch/elasticsearch.yml

Yaml

network.host: 0.0.0.0
discovery.type: single-node

重启 Elasticsearch:

bash

sudo systemctl restart elasticsearch

验证 Elasticsearch 是否正常运行:

bash

curl -X GET "localhost:9200/"
3. 安装 Logstash

bash

sudo apt-get install logstash -y

创建一个 Logstash 配置文件 /etc/logstash/conf.d/logstash.conf

conf

input {
    file {
        path => "/var/log/*.log"
        start_position => beginning
    }
}

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {
        match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
}

output {
    elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
    }
}

启动 Logstash:

bash

sudo systemctl start logstash
sudo systemctl enable logstash
4. 安装 Kibana

bash

sudo apt-get install kibana -y

Yaml

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

启动 Kibana:

bash

sudo systemctl start kibana
sudo systemctl enable kibana

访问 http://your_kibana_server_ip_or_domain:5601 可以看到 Kibana 的界面。

使用和管理 ELK Stack

1. 收集日志

Logstash 可以从多种来源收集日志,包括文件、系统日志、消息队列等。你可以根据需要配置不同的 input 插件。

例如,收集 Docker 容器的日志:

conf

input {
    docker {
        host => "unix:///var/run/docker.sock"
        tags => ["docker"]
    }
}
2. 处理日志

Logstash 提供了丰富的 filter 插件来解析和转换日志数据。常见的 filter 插件包括 grokdatemutate 等。

例如,使用 grok 解析 Apache 访问日志:

conf

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {
        match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
}
3. 存储日志

Logstash 将处理后的日志数据发送到 Elasticsearch。你可以在 output 插件中配置索引名称和其他存储选项。

例如,将日志存储到按天分隔的索引中:

conf

output {
    elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
    }
}
4. 可视化日志

Kibana 提供了一个强大的可视化界面,可以用来创建仪表板、图表和报告。以下是创建一个简单的仪表板的步骤:

  1. Index Patterns:

    • 打开 Kibana 并导航到 "Management" -> "Stack Management" -> "Index Patterns".
    • 创建一个新的 Index Pattern,例如 logstash-*.
  2. Discover:

    • 导航到 "Analytics" -> "Discover".
    • 查看收集的日志数据。
  3. Visualize:

    • 导航到 "Analytics" -> "Visualize".
    • 创建新的 Visualization,例如柱状图、折线图等。
  4. Dashboard:

    • 导航到 "Analytics" -> "Dashboards".
    • 创建一个新的 Dashboard,并添加之前创建的 Visualizations.

示例:收集 Docker 日志

假设我们要收集 Docker 容器的日志并将其存储到 Elasticsearch 中,然后在 Kibana 中可视化。

1. 修改 Logstash 配置

编辑 /etc/logstash/conf.d/logstash.conf 文件:

conf

input {
    docker {
        host => "unix:///var/run/docker.sock"
        tags => ["docker"]
    }
}

filter {
    if "docker" in [tags] {
        json {
            source => "message"
        }
        ruby {
            code => "
                event.set('container_id', event.get('source').split('/')[-1])
            "
        }
        mutate {
            remove_field => ["source", "prospector", "offset", "beat", "input_type", "count", "type"]
        }
    }
}

output {
    elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "docker-logs-%{+YYYY.MM.dd}"
    }
}
2. 启动 Logstash

bash

sudo systemctl restart logstash
3. 在 Kibana 中查看 Docker 日志
  1. Index Patterns:

    • 导航到 "Management" -> "Stack Management" -> "Index Patterns".
    • 创建一个新的 Index Pattern,例如 docker-logs-*.
  2. Discover:

    • 导航到 "Analytics" -> "Discover".
    • 查看 Docker 容器的日志数据。
  3. Visualize:

    • 导航到 "Analytics" -> "Visualize".
    • 创建新的 Visualization,例如柱状图、折线图等。
  4. Dashboard:

    • 导航到 "Analytics" -> "Dashboards".
    • 创建一个新的 Dashboard,并添加之前创建的 Visualizations.

总结

通过上述步骤,我们成功地安装和配置了 ELK Stack,并实现了日志的收集、处理、存储和可视化。ELK Stack 是一个强大且灵活的日志管理系统,适用于各种规模的应用场景。


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

相关文章:

  • 浅谈ArcGIS的地理处理(GP)服务之历史、现状和未来
  • nacos环境搭建以及SpringCloudAlibaba脚手架启动环境映射开发程序
  • Microsoft
  • Android 对接口的封装使用
  • .NET framework、Core和Standard都是什么?
  • MySQL 与 Redis 的数据一致性问题
  • ​​​​​​​​​​​​​​★3.3 事件处理
  • 如何使用PHP构建IoC容器,实现依赖注入!
  • 我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时
  • LKT4304新一代算法移植加密芯片,守护物联网设备和云服务安全
  • 免费送源码:Java+ssm+Android 基于Android系统的外卖APP的设计与实现 计算机毕业设计原创定制
  • 智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)
  • 外部获取nVisual所在层级方法
  • 【系统安全】CVE-2024-49113 Windows轻量级目录访问协议(LDAP)拒绝服务漏洞
  • 45_Lua模块与包
  • USB 驱动开发 --- Gadget 驱动框架梳理(一)
  • 如何开放2375和2376端口供Docker daemon监听
  • 强化学习代码实践1.DDQN:在CartPole游戏中实现 Double DQN
  • Linux第二课:LinuxC高级 学习记录day03
  • PHP Filesystem:深入解析与实战应用
  • 【机器学习】聚类评价指标之福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)
  • 说一说mongodb组合索引的匹配规则
  • 从github上,下载的android项目,从0-1进行编译运行-踩坑精力,如何进行部署
  • 65.在 Vue 3 中使用 OpenLayers 绘制带有箭头的线条
  • 伏羲1.0试用版(文生图)
  • 【软件工程】知识点总结(下)