feat:更新Docker博客
This commit is contained in:
@@ -1,11 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="!page.filePath.includes('index.md')" class="blog-stats">
|
<div v-if="!page.filePath.includes('index.md')" class="blog-stats">
|
||||||
<p class="content">
|
<div v-if="page.frontmatter.isGreat" class="item">
|
||||||
|
<svg t="1765851905856" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11930" width="16" height="16"><path d="M0 0h1024v1024H0V0z" fill="#202425" opacity=".01" p-id="11931"></path><path d="M136.533333 307.2a34.133333 34.133333 0 0 1 34.133334-34.133333h682.666666a34.133333 34.133333 0 0 1 34.133334 34.133333v437.3504a68.266667 68.266667 0 0 1-35.566934 59.938133l-274.5344 149.7088a136.533333 136.533333 0 0 1-130.730666 0L172.100267 804.522667A68.266667 68.266667 0 0 1 136.533333 744.5504V307.2z" fill="#bd34fe" p-id="11932"></path><path d="M68.266667 136.533333a68.266667 68.266667 0 0 1 68.266666-68.266666h750.933334a68.266667 68.266667 0 0 1 68.266666 68.266666v117.4528a34.133333 34.133333 0 0 1-16.247466 29.0816l-373.828267 230.058667a102.4 102.4 0 0 1-107.3152 0L84.514133 283.0336A34.133333 34.133333 0 0 1 68.266667 253.952V136.533333z" fill="#bd34fe" p-id="11933"></path><path d="M496.605867 339.490133a17.066667 17.066667 0 0 1 30.788266 0L576.853333 443.050667a17.066667 17.066667 0 0 0 13.175467 9.557333l113.800533 15.018667a17.066667 17.066667 0 0 1 9.5232 29.2864l-83.2512 79.018666a17.066667 17.066667 0 0 0-5.051733 15.496534l20.923733 112.8448a17.066667 17.066667 0 0 1-24.917333 18.090666l-100.864-54.715733a17.066667 17.066667 0 0 0-16.315733 0l-100.864 54.715733a17.066667 17.066667 0 0 1-24.917334-18.090666l20.8896-112.8448a17.066667 17.066667 0 0 0-5.0176-15.496534l-83.217066-79.018666a17.066667 17.066667 0 0 1 9.489066-29.2864l113.800534-15.018667a17.066667 17.066667 0 0 0 13.175466-9.557333l49.425067-103.560534z" fill="#FFFFFF" p-id="11934"></path></svg>
|
||||||
|
精品
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="item">
|
||||||
<svg t="1724571760788" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6125" width="16" height="16"><path d="M204.8 0h477.866667l273.066666 273.066667v614.4c0 75.093333-61.44 136.533333-136.533333 136.533333H204.8c-75.093333 0-136.533333-61.44-136.533333-136.533333V136.533333C68.266667 61.44 129.706667 0 204.8 0z m307.2 607.573333l68.266667 191.146667c13.653333 27.306667 54.613333 27.306667 61.44 0l102.4-273.066667c6.826667-20.48 0-34.133333-20.48-40.96s-34.133333 0-40.96 13.653334l-68.266667 191.146666-68.266667-191.146666c-13.653333-27.306667-54.613333-27.306667-68.266666 0l-68.266667 191.146666-68.266667-191.146666c-6.826667-13.653333-27.306667-27.306667-47.786666-20.48s-27.306667 27.306667-20.48 47.786666l102.4 273.066667c13.653333 27.306667 54.613333 27.306667 61.44 0l75.093333-191.146667z" fill="#1890FF" p-id="6126"></path><path d="M682.666667 0l273.066666 273.066667h-204.8c-40.96 0-68.266667-27.306667-68.266666-68.266667V0z" fill="#52C41A" p-id="6127"></path></svg>
|
<svg t="1724571760788" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6125" width="16" height="16"><path d="M204.8 0h477.866667l273.066666 273.066667v614.4c0 75.093333-61.44 136.533333-136.533333 136.533333H204.8c-75.093333 0-136.533333-61.44-136.533333-136.533333V136.533333C68.266667 61.44 129.706667 0 204.8 0z m307.2 607.573333l68.266667 191.146667c13.653333 27.306667 54.613333 27.306667 61.44 0l102.4-273.066667c6.826667-20.48 0-34.133333-20.48-40.96s-34.133333 0-40.96 13.653334l-68.266667 191.146666-68.266667-191.146666c-13.653333-27.306667-54.613333-27.306667-68.266666 0l-68.266667 191.146666-68.266667-191.146666c-6.826667-13.653333-27.306667-27.306667-47.786666-20.48s-27.306667 27.306667-20.48 47.786666l102.4 273.066667c13.653333 27.306667 54.613333 27.306667 61.44 0l75.093333-191.146667z" fill="#1890FF" p-id="6126"></path><path d="M682.666667 0l273.066666 273.066667h-204.8c-40.96 0-68.266667-27.306667-68.266666-68.266667V0z" fill="#52C41A" p-id="6127"></path></svg>
|
||||||
字数: {{ wordCount }} 字
|
字数: {{ wordCount }} 字
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
<svg t="1724572797268" class="icon" viewBox="0 0 1060 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15031" width="16" height="16"><path d="M556.726857 0.256A493.933714 493.933714 0 0 0 121.929143 258.998857L0 135.021714v350.390857h344.649143L196.205714 334.482286a406.820571 406.820571 0 1 1-15.908571 312.649143H68.937143A505.819429 505.819429 0 1 0 556.726857 0.256z m-79.542857 269.531429v274.907428l249.197714 150.966857 42.422857-70.070857-212.114285-129.389714V269.787429h-79.542857z" fill="#FA8C16" p-id="15032"></path></svg>
|
<svg t="1724572797268" class="icon" viewBox="0 0 1060 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15031" width="16" height="16"><path d="M556.726857 0.256A493.933714 493.933714 0 0 0 121.929143 258.998857L0 135.021714v350.390857h344.649143L196.205714 334.482286a406.820571 406.820571 0 1 1-15.908571 312.649143H68.937143A505.819429 505.819429 0 1 0 556.726857 0.256z m-79.542857 269.531429v274.907428l249.197714 150.966857 42.422857-70.070857-212.114285-129.389714V269.787429h-79.542857z" fill="#FA8C16" p-id="15032"></path></svg>
|
||||||
时长: {{ readTime }} 分钟
|
时长: {{ readTime }} 分钟
|
||||||
</p>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -61,12 +69,10 @@ onMounted(() => {
|
|||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.blog-stats {
|
.blog-stats {
|
||||||
color: var(--vp-c-text-2);
|
margin-bottom: 10px;
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
display: flex;
|
||||||
margin-bottom: 5px;
|
gap: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
---
|
||||||
|
isGreat: true
|
||||||
|
---
|
||||||
|
|
||||||
# 一、Docker简介
|
# 一、Docker简介
|
||||||
## 1.1 基础概念
|
## 1.1 基础概念
|
||||||
### 1.1.1 Docker概念
|
### 1.1.1 Docker概念
|
||||||
@@ -31,10 +35,6 @@
|
|||||||
  最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry。
|
  最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry。
|
||||||
|
|
||||||
# 二、Docker安装
|
# 二、Docker安装
|
||||||
## 2.1 环境
|
|
||||||
  Ubuntu20.04
|
|
||||||
|
|
||||||
## 2.2 安装
|
|
||||||
1. 安装依赖
|
1. 安装依赖
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -71,6 +71,11 @@ sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/li
|
|||||||
sudo apt-get install docker-ce
|
sudo apt-get install docker-ce
|
||||||
```
|
```
|
||||||
|
|
||||||
|
::: tip
|
||||||
|
也可以通过sudo apt install docker.io安装Ubuntu指定版本的docker
|
||||||
|
docker-ce是官方仓库,docker.io是Ubuntu仓库
|
||||||
|
:::
|
||||||
|
|
||||||
5. 配置Docker镜像服务
|
5. 配置Docker镜像服务
|
||||||
|
|
||||||
  1️⃣登录阿里云账号,在**容器镜像服务->镜像工具->镜像加速器**中找到**加速器地址**。
|
  1️⃣登录阿里云账号,在**容器镜像服务->镜像工具->镜像加速器**中找到**加速器地址**。
|
||||||
@@ -82,6 +87,10 @@ sudo apt-get install docker-ce
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
::: tip
|
||||||
|
或者使用1ms.docker作为Docker镜像源: "https://docker.1ms.run"
|
||||||
|
:::
|
||||||
|
|
||||||
  3️⃣执行命令:
|
  3️⃣执行命令:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -135,10 +144,229 @@ sudo systemctl restart docker
|
|||||||
| | 查看容器详情 | `docker inspect mynginx` |
|
| | 查看容器详情 | `docker inspect mynginx` |
|
||||||
|
|
||||||
# 五、Docker Compose
|
# 五、Docker Compose
|
||||||
|
## 5.1 安装
|
||||||
|
1. 从Github官网下载[Docker Compose](https://github.com/docker/compose)相应版本
|
||||||
|
2. 将文件保存至/usr/local/bin/docker-compose可执行目录
|
||||||
|
3. 赋予执行权限:
|
||||||
|
```bash
|
||||||
|
sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
```
|
||||||
|
|
||||||
# 六、Docker实战
|
4. 验证安装:
|
||||||
  [Docker-完整项目的部署(保姆级教学)_docker部署-CSDN博客](https://blog.csdn.net/qq_71654538/article/details/136520075)
|
```bash
|
||||||
|
docker compose version
|
||||||
|
```
|
||||||
|
|
||||||
# 七、参考资料
|
::: tip
|
||||||
|
也可以通过sudo apt-get install docker-compose-plugin安装Ubuntu指定版本
|
||||||
|
:::
|
||||||
|
|
||||||
|
## 5.2 YAML文件
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Spring Boot 后端服务
|
||||||
|
backend:
|
||||||
|
container_name: springboot-backend
|
||||||
|
image: springboot-app:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# 添加 host.docker.internal 映射
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# 环境变量配置
|
||||||
|
environment:
|
||||||
|
- SERVER_PORT=8080
|
||||||
|
|
||||||
|
# 端口映射(前面为宿主机端口,后面为容器端口)
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
|
||||||
|
# 数据卷挂载(前面为宿主机目录,后面为容器目录)
|
||||||
|
volumes:
|
||||||
|
- ./backend/logs:/app/logs
|
||||||
|
|
||||||
|
# 健康检查
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
start_period: 20s
|
||||||
|
|
||||||
|
# 网络配置
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
|
||||||
|
# 资源限制
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 1G
|
||||||
|
cpus: '1.0'
|
||||||
|
reservations:
|
||||||
|
memory: 512M
|
||||||
|
cpus: '0.5'
|
||||||
|
|
||||||
|
# Vue3 Vite 前端服务
|
||||||
|
frontend:
|
||||||
|
container_name: vue-frontend
|
||||||
|
image: vue-app:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# 添加 host.docker.internal 映射
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# 端口映射
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
|
||||||
|
# 依赖后端
|
||||||
|
depends_on:
|
||||||
|
backend:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
# 网络
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
|
||||||
|
# 资源限制
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 512M
|
||||||
|
cpus: '0.5'
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
|
cpus: '0.25'
|
||||||
|
|
||||||
|
# 网络定义
|
||||||
|
networks:
|
||||||
|
app-network:
|
||||||
|
driver: bridge
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5.3 命令
|
||||||
|
```bash
|
||||||
|
# 1. 启动服务
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 2. 查看服务状态
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# 3. 查看日志
|
||||||
|
docker compose logs -f
|
||||||
|
|
||||||
|
# 4. 进入容器
|
||||||
|
docker compose exec backend bash
|
||||||
|
|
||||||
|
# 5. 停止服务
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# 6. 重启服务
|
||||||
|
docker compose restart
|
||||||
|
|
||||||
|
# 7. 查看配置
|
||||||
|
docker compose config
|
||||||
|
|
||||||
|
# 8. 构建镜像
|
||||||
|
docker compose build
|
||||||
|
|
||||||
|
# 9. 执行命令
|
||||||
|
docker compose exec backend ls -la
|
||||||
|
|
||||||
|
# 10. 清理资源
|
||||||
|
docker compose down -v
|
||||||
|
docker system prune -f
|
||||||
|
```
|
||||||
|
|
||||||
|
# 六、Dockerfile
|
||||||
|
  Dockerfile 是用来构建 Docker 镜像的文本文件,包含了一系列构建指令,可以自动化地创建包含应用及其运行环境的镜像。
|
||||||
|
  基本结构:
|
||||||
|
```
|
||||||
|
# 基础镜像
|
||||||
|
FROM 镜像名:标签
|
||||||
|
|
||||||
|
# 维护者信息
|
||||||
|
LABEL maintainer="name@email.com"
|
||||||
|
|
||||||
|
# 设置工作目录
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 复制文件
|
||||||
|
COPY 源路径 目标路径
|
||||||
|
|
||||||
|
# 执行命令
|
||||||
|
RUN 命令
|
||||||
|
|
||||||
|
# 暴露端口
|
||||||
|
EXPOSE 端口
|
||||||
|
|
||||||
|
# 容器启动命令
|
||||||
|
CMD ["可执行文件", "参数1", "参数2"]
|
||||||
|
```
|
||||||
|
|
||||||
|
  典型示例
|
||||||
|
::: code-group
|
||||||
|
```dockerfile [nginx]
|
||||||
|
FROM nginx:1.27.0
|
||||||
|
COPY dist/ /usr/share/nginx/html/
|
||||||
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||||
|
RUN echo 'Asia/Shanghai' > /etc/timezone
|
||||||
|
```
|
||||||
|
|
||||||
|
```dockerfile [SpringBoot]
|
||||||
|
FROM openjdk:11-jdk
|
||||||
|
ARG JAR_FILE=target/*.jar
|
||||||
|
COPY $JAR_FILE app.jar
|
||||||
|
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||||
|
RUN echo 'Asia/Shanghai' > /etc/timezone
|
||||||
|
ENTRYPOINT java $JAVA_TOOL_OPTIONS -jar /app.jar $0 $@
|
||||||
|
```
|
||||||
|
|
||||||
|
```dockerfile [FastApi]
|
||||||
|
FROM python:3.12-slim
|
||||||
|
WORKDIR /app
|
||||||
|
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||||
|
RUN echo 'Asia/Shanghai' > /etc/timezone
|
||||||
|
COPY ./packages /app/packages
|
||||||
|
COPY requirements.txt /app/
|
||||||
|
RUN pip install --no-cache-dir --no-index --find-links=/app/packages -r requirements.txt
|
||||||
|
COPY . /app/
|
||||||
|
EXPOSE 8082
|
||||||
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8082"]
|
||||||
|
```
|
||||||
|
|
||||||
|
```dockerfile [dotnet]
|
||||||
|
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY publish/ .
|
||||||
|
|
||||||
|
RUN chmod +x EMMessageHubServer
|
||||||
|
|
||||||
|
EXPOSE 5000
|
||||||
|
EXPOSE 14040
|
||||||
|
|
||||||
|
ENTRYPOINT ["./EMMessageHubServer"]
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
|
# 七、Docker开发流程
|
||||||
|
1. 编写业务代码
|
||||||
|
2. 编译打包项目工程
|
||||||
|
3. 编写Dockerfile文件
|
||||||
|
4. 根据Dockerfile文件和项目打包代码创建Docker镜像(标注镜像名称和版本)
|
||||||
|
5. 编写Docker Compose文件
|
||||||
|
6. 执行Docker Compose启动命令
|
||||||
|
7. 查看Docker Container状态
|
||||||
|
|
||||||
|
# 八、参考资料
|
||||||
1. [Docker — 从入门到实践](https://github.com/yeasy/docker_practice?tab=readme-ov-file)
|
1. [Docker — 从入门到实践](https://github.com/yeasy/docker_practice?tab=readme-ov-file)
|
||||||
|
2. [Docker完整项目的部署](https://blog.csdn.net/qq_71654538/article/details/136520075)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
## 一、基础概念
|
# 一、基础概念
|
||||||
|
  Elasticsearch(简称 ES)是一款开源的分布式全文搜索引擎,基于 Lucene 核心构建,提供了 RESTful API 接口、高可用、高扩展的分布式数据存储与检索能力,广泛应用于日志分析、全文检索、监控告警、数据可视化等场景。
|
||||||
|
|
||||||
## 二、Docker部署
|
# 二、Docker部署
|
||||||
```yml
|
```yml
|
||||||
services:
|
services:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
@@ -54,28 +55,27 @@ volumes:
|
|||||||
  ELASTIC_PASSWORD和KIBANA_PASSWORD可以通过.env配置文件设置。
|
  ELASTIC_PASSWORD和KIBANA_PASSWORD可以通过.env配置文件设置。
|
||||||
  启动时,elasticsearch可能会提示elasticsearch-data文件夹权限问题,目前解决方案为将其权限设置为777。
|
  启动时,elasticsearch可能会提示elasticsearch-data文件夹权限问题,目前解决方案为将其权限设置为777。
|
||||||
|
|
||||||
## 三、简单使用
|
# 三、简单使用
|
||||||
### 3.1 安装插件
|
## 3.1 安装插件
|
||||||
  启动成功后,需要安装elasticsearch的分词插件analysis-ik。
|
  启动成功后,需要安装elasticsearch的分词插件analysis-ik。
|
||||||
  进入Docker容器,输入指令:
|
  进入Docker容器,输入指令:
|
||||||
```cmd
|
```bash
|
||||||
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.12.0
|
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.12.0
|
||||||
```
|
```
|
||||||
|
|
||||||
  注意版本要匹配。https://github.com/infinilabs/analysis-ik/releases/tag/Latest
|
  注意版本要匹配。https://github.com/infinilabs/analysis-ik/releases/tag/Latest
|
||||||
  安装完成后,重启容器。
|
  安装完成后,重启容器。
|
||||||
|
|
||||||
|
## 3.2 更改密码
|
||||||
### 3.2 更改密码
|
|
||||||
  启动成功后,需要更改elasticsearch的账号密码(不知道为啥docker-compose文件设置的密码不行,可能是容器初始化后又重置了)。
|
  启动成功后,需要更改elasticsearch的账号密码(不知道为啥docker-compose文件设置的密码不行,可能是容器初始化后又重置了)。
|
||||||
  进入Docker容器,输入指令:
|
  进入Docker容器,输入指令:
|
||||||
```cmd
|
```bash
|
||||||
bin/elasticsearch-setup-passwords interactive
|
bin/elasticsearch-setup-passwords interactive
|
||||||
```
|
```
|
||||||
|
|
||||||
  根据提示输入相应的账号密码。
|
  根据提示输入相应的账号密码。
|
||||||
|
|
||||||
### 3.3 新建索引
|
## 3.3 新建索引
|
||||||
1. 打开Elastic控制台,选择Management->Dev Tools,输入语句新建索引。
|
1. 打开Elastic控制台,选择Management->Dev Tools,输入语句新建索引。
|
||||||
2. 选择Management->Stack Management->Data Views,选择Create data view新建数据视图。
|
2. 选择Management->Stack Management->Data Views,选择Create data view新建数据视图。
|
||||||
3. 输入name、index pattern(刚才新建的索引)和Timestamp信息,保存数据视图。
|
3. 输入name、index pattern(刚才新建的索引)和Timestamp信息,保存数据视图。
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
## 一、基础概念
|
# 一、基础概念
|
||||||
### 1.1 Fluent Bit
|
## 1.1 Fluent Bit
|
||||||
  [Fluent Bit](https://fluentbit.io/) 是一个开源的、轻量级、高性能的日志处理器和转发器。Fluent Bit 的核心任务是:**从各种来源收集日志、指标和追踪数据,进行处理和过滤,然后将其发送到一个或多个目的地。**
|
  [Fluent Bit](https://fluentbit.io/) 是一个开源的、轻量级、高性能的日志处理器和转发器。Fluent Bit 的核心任务是:**从各种来源收集日志、指标和追踪数据,进行处理和过滤,然后将其发送到一个或多个目的地。**
|
||||||
|
|
||||||
#### 1.1.1 特点
|
### 1.1.1 特点
|
||||||
1. 极致的轻量级
|
1. 极致的轻量级
|
||||||
Fluent Bit 是用 C 语言编写的,运行时内存占用极低(通常只有几百 KB),CPU 使用率也非常低。这使得它成为在资源受限环境(如边缘计算、IoT 设备、容器侧车)中运行的理想选择。
|
Fluent Bit 是用 C 语言编写的,运行时内存占用极低(通常只有几百 KB),CPU 使用率也非常低。这使得它成为在资源受限环境(如边缘计算、IoT 设备、容器侧车)中运行的理想选择。
|
||||||
2. 高性能
|
2. 高性能
|
||||||
@@ -10,7 +10,7 @@ Fluent Bit 是用 C 语言编写的,运行时内存占用极低(通常只有
|
|||||||
3. 可插拔架构
|
3. 可插拔架构
|
||||||
Fluent Bit 的功能通过“插件”来扩展。
|
Fluent Bit 的功能通过“插件”来扩展。
|
||||||
|
|
||||||
#### 1.1.2 插件类型
|
### 1.1.2 插件类型
|
||||||
1. Input(输入)
|
1. Input(输入)
|
||||||
定义数据来源,例如从文件、标准输入、TCP/UDP、系统指标(CPU/内存)、Docker 容器、Windows 事件日志等收集数据。
|
定义数据来源,例如从文件、标准输入、TCP/UDP、系统指标(CPU/内存)、Docker 容器、Windows 事件日志等收集数据。
|
||||||
2. Filter(过滤器)
|
2. Filter(过滤器)
|
||||||
@@ -18,7 +18,7 @@ Fluent Bit 的功能通过“插件”来扩展。
|
|||||||
3. Output(输出)
|
3. Output(输出)
|
||||||
定义数据目的地,例如 Elasticsearch、Splunk、Kafka、Datadog、Loki、S3、另一个 Fluentd/Fluent Bit 实例等。
|
定义数据目的地,例如 Elasticsearch、Splunk、Kafka、Datadog、Loki、S3、另一个 Fluentd/Fluent Bit 实例等。
|
||||||
|
|
||||||
#### 1.1.3 核心架构与数据流
|
### 1.1.3 核心架构与数据流
|
||||||
1. Input(输入)
|
1. Input(输入)
|
||||||
一个或多个输入插件持续地从数据源收集数据。每条数据被读入后,会带上时间戳和标签等信息,被包装成一个内部的事件记录。
|
一个或多个输入插件持续地从数据源收集数据。每条数据被读入后,会带上时间戳和标签等信息,被包装成一个内部的事件记录。
|
||||||
2. Parser(解析器)
|
2. Parser(解析器)
|
||||||
@@ -32,11 +32,11 @@ Fluent Bit 的功能通过“插件”来扩展。
|
|||||||
6. Output(输出)
|
6. Output(输出)
|
||||||
最终,输出插件将处理好的数据发送到配置的目的地。
|
最终,输出插件将处理好的数据发送到配置的目的地。
|
||||||
|
|
||||||
### 1.2 OpenObserve
|
## 1.2 OpenObserve
|
||||||
  [OpenObserve](https://openobserve.ai/) 是一个开源的、云原生的可观测性数据平台,旨在处理日志、指标、追踪和性能数据。它的目标是成为 Elasticsearch/Logstash/Kibana (ELK)、Grafana Loki 和 Datadog 等流行解决方案的更简单、更经济高效、更高性能的替代品。
|
  [OpenObserve](https://openobserve.ai/) 是一个开源的、云原生的可观测性数据平台,旨在处理日志、指标、追踪和性能数据。它的目标是成为 Elasticsearch/Logstash/Kibana (ELK)、Grafana Loki 和 Datadog 等流行解决方案的更简单、更经济高效、更高性能的替代品。
|
||||||
  OpenObserve 是一个“一体化”的平台,你可以将所有的可观测性数据(日志、指标、追踪)都发送到它这里,然后通过统一的界面进行搜索、分析和可视化。
|
  OpenObserve 是一个“一体化”的平台,你可以将所有的可观测性数据(日志、指标、追踪)都发送到它这里,然后通过统一的界面进行搜索、分析和可视化。
|
||||||
|
|
||||||
## 二、Docker部署
|
# 二、Docker部署
|
||||||
```yml
|
```yml
|
||||||
services:
|
services:
|
||||||
fluent-bit:
|
fluent-bit:
|
||||||
@@ -106,14 +106,14 @@ volumes:
|
|||||||
  INPUT为日志输入源,监听24422端口。
|
  INPUT为日志输入源,监听24422端口。
|
||||||
  OUTPUT为日志输出源,将日志发送到openobserve中(这里使用的是容器名称),URI表示openobserve接收数据的api路径,default/default表示组织名称/流名称,可以更改为其他的名称。_json表示以json的格式。
|
  OUTPUT为日志输出源,将日志发送到openobserve中(这里使用的是容器名称),URI表示openobserve接收数据的api路径,default/default表示组织名称/流名称,可以更改为其他的名称。_json表示以json的格式。
|
||||||
|
|
||||||
## 三、简单使用
|
# 三、简单使用
|
||||||
### 3.1 配置数据流
|
## 3.1 配置数据流
|
||||||
  打开控制台,选择数据流->添加数据流,输入fluent bit配置文件中的流名称,选择数据流类型为Logs。
|
  打开控制台,选择数据流->添加数据流,输入fluent bit配置文件中的流名称,选择数据流类型为Logs。
|
||||||
  在新添加的数据流中,点击查看,跳转到日志页面即可看到上次的日志信息。
|
  在新添加的数据流中,点击查看,跳转到日志页面即可看到上次的日志信息。
|
||||||
  如果没有日志请检查FluentBit容器日志是否有错误,正确的应该会有上传成功的提示。
|
  如果没有日志请检查FluentBit容器日志是否有错误,正确的应该会有上传成功的提示。
|
||||||

|

|
||||||
|
|
||||||
### 3.2 配置邮件告警
|
## 3.2 配置邮件告警
|
||||||
  首先需要配置模板和邮箱地址。
|
  首先需要配置模板和邮箱地址。
|
||||||
  修改docker-compose.yml文件,添加邮件服务器:
|
  修改docker-compose.yml文件,添加邮件服务器:
|
||||||
```yml
|
```yml
|
||||||
@@ -177,7 +177,7 @@ openobserve:
|
|||||||
  通知后静默:触发告警并发送通知后,系统暂时停止重复通知的时间。
|
  通知后静默:触发告警并发送通知后,系统暂时停止重复通知的时间。
|
||||||
  也可以设置为实时告警,即当告警发生时就立即触发,不会有周期和频率参数设置。
|
  也可以设置为实时告警,即当告警发生时就立即触发,不会有周期和频率参数设置。
|
||||||
|
|
||||||
### 3.3 配置WebHook
|
## 3.3 配置WebHook
|
||||||
  首先配置模板和WebHook地址。
|
  首先配置模板和WebHook地址。
|
||||||
  打开控制台,选择右上角的设置按钮,选择模板->添加模板->Web Hook,填写Body:
|
  打开控制台,选择右上角的设置按钮,选择模板->添加模板->Web Hook,填写Body:
|
||||||
```json
|
```json
|
||||||
@@ -194,7 +194,7 @@ openobserve:
|
|||||||
  这里可以使用企业微信的群消息推送功能,添加成功后,会提供一个WebHook地址。也可以自定义一个WebHook接收地址。
|
  这里可以使用企业微信的群消息推送功能,添加成功后,会提供一个WebHook地址。也可以自定义一个WebHook接收地址。
|
||||||
  配置完模板和地址后,选择告警->添加告警,选择通知到刚才的WebHook地址即可。
|
  配置完模板和地址后,选择告警->添加告警,选择通知到刚才的WebHook地址即可。
|
||||||
|
|
||||||
### 3.4 通过API获取日志信息
|
## 3.4 通过API获取日志信息
|
||||||
  通过http://ip:5080/swagger/index.html#/ 即可访问OpenobserveAPI接口。
|
  通过http://ip:5080/swagger/index.html#/ 即可访问OpenobserveAPI接口。
|
||||||
  例如要获取日志,可以使用/api/{origin_id}/_search的接口:
|
  例如要获取日志,可以使用/api/{origin_id}/_search的接口:
|
||||||
```cmd
|
```cmd
|
||||||
@@ -216,7 +216,7 @@ curl -X 'POST' \
|
|||||||
  注意这里要加上Basic auth认证,并提供username和password。
|
  注意这里要加上Basic auth认证,并提供username和password。
|
||||||

|

|
||||||
|
|
||||||
## 四、自定义日志告警服务
|
# 四、自定义日志告警服务
|
||||||

|

|
||||||
  基本原理为通过提供一个HTTP的API接口,当Openobserver触发告警时,调用该接口,并传入当前的alert_name和timestamp,然后根据timestamp和Openobserver提供的API接口去查询最近一段时间内的所有日志信息,并存储到SqLite数据库中。同时也可以选择是否同步推送到企业微信和邮箱。
|
  基本原理为通过提供一个HTTP的API接口,当Openobserver触发告警时,调用该接口,并传入当前的alert_name和timestamp,然后根据timestamp和Openobserver提供的API接口去查询最近一段时间内的所有日志信息,并存储到SqLite数据库中。同时也可以选择是否同步推送到企业微信和邮箱。
|
||||||
  最后也需要提供一个查询历史日志告警信息的接口,并可视化显示,方便运维和开发查看。
|
  最后也需要提供一个查询历史日志告警信息的接口,并可视化显示,方便运维和开发查看。
|
||||||
|
|||||||
Reference in New Issue
Block a user