feat:初始化工程
This commit is contained in:
112
docs/DevOps/Jenkins部署和使用.md
Normal file
112
docs/DevOps/Jenkins部署和使用.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# 一、Jenkins安装
|
||||
## 1.1 简介
|
||||
  Jenkins 是一款开源的持续集成(Continuous Integration, CI) 和持续交付(Continuous Delivery, CD) 自动化工具,广泛应用于软件开发流程中,帮助团队实现代码构建、测试、部署的自动化,从而提升开发效率、减少人为错误,并确保软件质量。
|
||||
|
||||
## 1.2 下载使用
|
||||
1. 打开[官网](https://www.jenkins.io/zh/),选择版本下载(本文版本为Version 2.504.2)。
|
||||
2. 输入指令直接启动:
|
||||
```cmd
|
||||
java -jar jenkins.war
|
||||
```
|
||||
  第一次需要输入密码,在控制台中可以看到。
|
||||
|
||||
## 1.3 系统服务启动
|
||||
1. 将jenkins.war复制到相应位置,例/usr/share/jenkins/jenkins.war
|
||||
2. 在/etc/systemd/system中新建系统服务文件 jenkins.service:
|
||||
```service
|
||||
[Unit]
|
||||
Description=Jenkins Continuous Integration Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Group=root
|
||||
ExecStart=/usr/bin/java -jar /usr/share/jenkins/jenkins.war
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
3. 如需配置Nginx反向代理,ExecStart启动命令后增加配置信息:
|
||||
```cmd
|
||||
ExecStart=/usr/bin/java -jar /usr/share/jenkins/jenkins.war --httpPort=9090 --prefix=/jenkins
|
||||
```
|
||||
4. 更改nginx配置文件:
|
||||
```cmd
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
# Jenkins服务
|
||||
location /jenkins {
|
||||
proxy_pass http://127.0.0.1:9090/jenkins;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
```
|
||||
  这里的代理端口号需要和ExecStart启动命令的端口号一致。
|
||||
5. 重启服务:
|
||||
```cmd
|
||||
sudo nginx -s reload
|
||||
systemctl daemon-reload
|
||||
systemctl restart jenkins.service
|
||||
```
|
||||
|
||||
## 1.4 插件安装和配置
|
||||
  选择Dashboard -> Manage Jenkins -> Plugins,安装Maven、Node、Gitee等插件。
|
||||
|
||||
### 1.4.1 配置JDK
|
||||
1. 安装Java JDK 17,例:`sudo apt install openjdk-17-jdk`
|
||||
2. 选择Dashboard -> Manage Jenkins -> Tools,点击Add JDK,输入Name和JAVA_HOME
|
||||
```cmd
|
||||
Name: JDK 17
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
```
|
||||
  注:根据实际情况修改,下同。
|
||||
|
||||
### 1.4.2 配置Maven
|
||||
1. 官网下载Maven压缩包,解压至/opt目录
|
||||
2. 选择Dashboard -> Manage Jenkins -> Tools,点击Add Maven,输入Name和Maven_HOME
|
||||
```cmd
|
||||
Name: Maven3.9.10
|
||||
Maven_HOME: /opt/apache-maven-3.9.10
|
||||
```
|
||||
|
||||
### 1.4.3 配置NodeJS
|
||||
1. 官网下载NodeJS压缩包,解压至/opt目录
|
||||
2. 选择Dashboard -> Manage Jenkins -> Tools,点击Add Node,输入Name和Installation directory
|
||||
```cmd
|
||||
Name: Node20.10.0
|
||||
Installation directory: /opt/node-v20.10.0-linux-x64
|
||||
```
|
||||
|
||||
### 1.4.4 配置Gitee
|
||||
  选择Dashboard -> Manage Jenkins -> System,选择Gitee Configuration,输入name和URL,点击Add Credentials,选择Kind的Gitee API token,将Gitee中生成的token复制到指定位置。
|
||||
  注:该版本新增的Gitee Token并不能在后续的项目中找到,但是又无法新增username和password形式,只能在项目的gitee配置中新增username和password的形式,不知道是什么原因?
|
||||
|
||||
# 二、创建工程
|
||||
## 2.1 创建Maven工程
|
||||
1. 选择Dashboard -> New Item
|
||||
2. 输入项目名称
|
||||
3. 选择Maven Project
|
||||
4.
|
||||
|
||||
|
||||
## Springboot项目
|
||||
```cmd
|
||||
BUILD_ID=dontKillMe
|
||||
cp /home/estun/.jenkins/workspace/sweet-hut-service/home-service/target/home-service-2.0.0.jar /home/estun/EdgeProjects/sweet-hut-service
|
||||
cd /home/estun/EdgeProjects/sweet-hut-service
|
||||
sh spring-service.sh restart home-service-2.0.0.jar
|
||||
```
|
||||
|
||||
## Vue3项目
|
||||
```cmd
|
||||
npm install
|
||||
npm run build
|
||||
cp -rf ./dist/* /home/estun/EdgeProjects/sweet-hut-ui
|
||||
```
|
||||
214
docs/DevOps/OpenObserve部署和简单使用.md
Normal file
214
docs/DevOps/OpenObserve部署和简单使用.md
Normal file
@@ -0,0 +1,214 @@
|
||||
## 一、基础概念
|
||||
### 1.1 Fluent Bit
|
||||
  [Fluent Bit](https://fluentbit.io/) 是一个开源的、轻量级、高性能的日志处理器和转发器。Fluent Bit 的核心任务是:**从各种来源收集日志、指标和追踪数据,进行处理和过滤,然后将其发送到一个或多个目的地。**
|
||||
|
||||
#### 1.1.1 特点
|
||||
1. 极致的轻量级
|
||||
  Fluent Bit 是用 C 语言编写的,运行时内存占用极低(通常只有几百 KB),CPU 使用率也非常低。这使得它成为在资源受限环境(如边缘计算、IoT 设备、容器侧车)中运行的理想选择。
|
||||
2. 高性能
|
||||
  其核心架构经过高度优化,处理数据的速度极快,能够轻松应对高吞吐量的日志流。
|
||||
3. 可插拔架构
|
||||
  Fluent Bit 的功能通过“插件”来扩展。
|
||||
|
||||
#### 1.1.2 插件类型
|
||||
1. Input(输入):定义数据来源,例如从文件、标准输入、TCP/UDP、系统指标(CPU/内存)、Docker 容器、Windows 事件日志等收集数据。
|
||||
2. Filter(过滤器):在数据传递过程中进行处理,例如解析(如将非结构化文本解析为 JSON)、丰富(如添加 Kubernetes 元数据)、修改(如重命名字段)、采样等。
|
||||
3. Output(输出):定义数据目的地,例如 Elasticsearch、Splunk、Kafka、Datadog、Loki、S3、另一个 Fluentd/Fluent Bit 实例等。
|
||||
|
||||
#### 1.1.3 核心架构与数据流
|
||||
1. Input(输入):一个或多个输入插件持续地从数据源收集数据。每条数据被读入后,会带上时间戳和标签等信息,被包装成一个内部的事件记录。
|
||||
2. Parser(解析器):(可选)输入插件可以使用解析器,将非结构化的日志数据(如 Nginx 访问日志)转换为结构化的 JSON 格式。
|
||||
3. Filter(过滤):(可选)数据会经过一个或多个过滤器插件。这些插件可以修改、丰富或删除记录。过滤器是按顺序执行的。
|
||||
4. Router(路由):根据每条记录的标签(Tag),路由器将其匹配到相应的输出插件。一个记录可以被路由到多个输出(多路复用)。
|
||||
5. Buffer(缓冲):在发送到输出之前,数据可能会在内存或文件系统中进行缓冲。
|
||||
6. Output(输出):最终,输出插件将处理好的数据发送到配置的目的地。
|
||||
|
||||
### 1.2 OpenObserve
|
||||
  [OpenObserve](https://openobserve.ai/) 是一个开源的、云原生的可观测性数据平台,旨在处理日志、指标、追踪和性能数据。它的目标是成为 Elasticsearch/Logstash/Kibana (ELK)、Grafana Loki 和 Datadog 等流行解决方案的更简单、更经济高效、更高性能的替代品。
|
||||
  OpenObserve 是一个“一体化”的平台,你可以将所有的可观测性数据(日志、指标、追踪)都发送到它这里,然后通过统一的界面进行搜索、分析和可视化。
|
||||
|
||||
## 二、Docker部署
|
||||
```yml
|
||||
services:
|
||||
fluent-bit:
|
||||
image: fluent/fluent-bit:4.0.7
|
||||
container_name: fluent-bit
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./fluent-bit/config:/fluent-bit/etc
|
||||
ports:
|
||||
- "24422:24422"
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
networks:
|
||||
- devops
|
||||
|
||||
openobserve:
|
||||
image: public.ecr.aws/zinclabs/openobserve:v0.14.0
|
||||
container_name: openobserve
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./openobserve-data:/data
|
||||
environment:
|
||||
- ZO_ROOT_USER_EMAIL=1556464090@qq.com
|
||||
- ZO_ROOT_USER_PASSWORD=19940822Cxx
|
||||
- TZ=Asia/Shanghai
|
||||
ports:
|
||||
- "5080:5080"
|
||||
networks:
|
||||
- devops
|
||||
|
||||
networks:
|
||||
devops:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
openobserve-data:
|
||||
driver: local
|
||||
```
|
||||
|
||||
  fluent bit配置文件:
|
||||
```conf
|
||||
[SERVICE]
|
||||
Flush 5
|
||||
Log_Level info
|
||||
Daemon off
|
||||
Parsers_File parsers.conf
|
||||
|
||||
[INPUT]
|
||||
Name forward
|
||||
Listen 0.0.0.0
|
||||
Port 24422
|
||||
Tag external
|
||||
|
||||
[OUTPUT]
|
||||
Name http
|
||||
Match *
|
||||
Host openobserve
|
||||
Port 5080
|
||||
URI /api/default/default/_json
|
||||
http_user 1556464090@qq.com
|
||||
http_passwd 19940822Cxx
|
||||
Format json
|
||||
json_date_key timestamp
|
||||
json_date_format iso8601
|
||||
```
|
||||
|
||||
  INPUT为日志输入源,监听24422端口。
|
||||
  OUTPUT为日志输出源,将日志发送到openobserve中(这里使用的是容器名称),URI表示openobserve接收数据的api路径,default/default表示组织名称/流名称,可以更改为其他的名称。_json表示以json的格式。
|
||||
|
||||
## 三、简单使用
|
||||
### 3.1 配置数据流
|
||||
  打开控制台,选择数据流->添加数据流,输入fluent bit配置文件中的流名称,选择数据流类型为Logs。
|
||||
  在新添加的数据流中,点击查看,跳转到日志页面即可看到上次的日志信息。
|
||||
  如果没有日志请检查FluentBit容器日志是否有错误,正确的应该会有上传成功的提示。
|
||||

|
||||
|
||||
### 3.2 配置邮件告警
|
||||
  首先需要配置模板和邮箱地址。
|
||||
  修改docker-compose.yml文件,添加邮件服务器:
|
||||
```yml
|
||||
openobserve:
|
||||
image: public.ecr.aws/zinclabs/openobserve:v0.14.0
|
||||
container_name: openobserve
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./openobserve-data:/data
|
||||
environment:
|
||||
- ZO_ROOT_USER_EMAIL=njcxx0822@163.com
|
||||
- ZO_ROOT_USER_PASSWORD=19940822Cxx
|
||||
- TZ=Asia/Shanghai
|
||||
|
||||
- ZO_SMTP_ENABLED=true
|
||||
- ZO_SMTP_HOST=smtp.163.com
|
||||
- ZO_SMTP_PORT=25
|
||||
- ZO_SMTP_USER_NAME=njcxx0822@163.com
|
||||
- ZO_SMTP_PASSWORD=NBZzx6jXtZ2G6wrB
|
||||
- ZO_SMTP_FROM_EMAIL=njcxx0822@163.com
|
||||
#- ZO_SMTP_ENCRYPTION=starttls
|
||||
ports:
|
||||
- "5080:5080"
|
||||
networks:
|
||||
- devops
|
||||
```
|
||||
|
||||
  这里配置587端口会有问题,使用了25端口,并且去掉了安全认证。
|
||||
  注意配置的邮件地址需要和用户名一致。
|
||||
  打开控制台,选择右上角的设置按钮,选择模板->添加模板->Email,填写标题和Body:
|
||||
```json
|
||||
[Alert: {alert_name}] - Severity: {alert_type}
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"labels": {
|
||||
"alertname": "{alert_name}",
|
||||
"stream": "{stream_name}",
|
||||
"organization": "{org_name}",
|
||||
"alerttype": "{alert_type}",
|
||||
"severity": "critical"
|
||||
},
|
||||
"annotations": {
|
||||
"timestamp": "{timestamp}"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||

|
||||
  **注:这里的`{}`里面的内容需要和日志里面的字段保持一致。**
|
||||
|
||||
  选择地址->添加地址->Email,选择刚才的模板,并填写收件人。
|
||||

|
||||
|
||||
  配置完模板和地址后,选择告警->添加告警,例如可以选择当有level='critical',并且出现1次时,触发报警,并通知到指定邮箱。
|
||||

|
||||
  周期:监控数据的时间窗口范围,即每次检查告警条件时,回溯多长时间的监控数据。如果周期 = 5分钟:每次检查时,分析最近 5 分钟的日志/指标数据。
|
||||
  频率:告警规则检查的时间间隔,即每隔多久执行一次告警条件判断。
|
||||
  通知后静默:触发告警并发送通知后,系统暂时停止重复通知的时间。
|
||||
  也可以设置为实时告警,即当告警发生时就立即触发,不会有周期和频率参数设置。
|
||||
|
||||
### 3.3 配置WebHook
|
||||
  首先配置模板和WebHook地址。
|
||||
  打开控制台,选择右上角的设置按钮,选择模板->添加模板->Web Hook,填写Body:
|
||||
```json
|
||||
{
|
||||
"msgtype": "markdown",
|
||||
"markdown": {
|
||||
"content": "alertname: {alert_name} timestamp:{timestamp}"
|
||||
}
|
||||
}
|
||||
```
|
||||

|
||||
|
||||
  选择地址->添加地址->WebHook,选择刚才的模板,并填写URL。
|
||||
  这里可以使用企业微信的群消息推送功能,添加成功后,会提供一个WebHook地址。也可以自定义一个WebHook接收地址。
|
||||
  配置完模板和地址后,选择告警->添加告警,选择通知到刚才的WebHook地址即可。
|
||||
|
||||
### 3.4 通过API获取日志信息
|
||||
  通过http://ip:5080/swagger/index.html#/ 即可访问OpenobserveAPI接口。
|
||||
  例如要获取日志,可以使用/api/{origin_id}/_search的接口:
|
||||
```cmd
|
||||
curl -X 'POST' \
|
||||
'http://127.0.0.1:5080/api/default/_search' \
|
||||
-H 'accept: application/json' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"query": {
|
||||
"end_time": 1759115401962000,
|
||||
"from": 0,
|
||||
"size": 10,
|
||||
"sql": "select * from default",
|
||||
"start_time": 1759029001962000
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
  注意这里要加上Basic auth认证,并提供username和password。
|
||||

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

|
||||
  基本原理为通过提供一个HTTP的API接口,当Openobserver触发告警时,调用该接口,并传入当前的alert_name和timestamp,然后根据timestamp和Openobserver提供的API接口去查询最近一段时间内的所有日志信息,并存储到SqLite数据库中。同时也可以选择是否同步推送到企业微信和邮箱。
|
||||
  最后也需要提供一个查询历史日志告警信息的接口,并可视化显示,方便运维和开发查看。
|
||||
  自定义服务参考代码:[log-alert-service](https://cxxgit.iepose.cn/Cxx0822/log-alert-service)
|
||||
9
docs/DevOps/index.md
Normal file
9
docs/DevOps/index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
layout: doc
|
||||
title: DevOps
|
||||
---
|
||||
|
||||
# 📚 内容导航
|
||||
|
||||
- [OpenObserve部署和简单使用](/DevOps/OpenObserve部署和简单使用)
|
||||
- [Jenkins部署和使用](/DevOps/Jenkins部署和使用)
|
||||
Reference in New Issue
Block a user