新增 otel 推送日志
This commit is contained in:
@@ -1,2 +1,4 @@
|
|||||||
GOST_USERNAME=gost
|
GOST_API_DOMAIN=
|
||||||
GOST_PASSWORD=gost
|
GOST_API_USERNAME=
|
||||||
|
GOST_API_PASSWORD=
|
||||||
|
GOST_LOG_ENDPOINT=
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
.env
|
.env
|
||||||
|
dev/
|
||||||
|
|||||||
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 代理网关
|
||||||
|
|
||||||
|
## 使用方式
|
||||||
|
|
||||||
|
复制 `.env.example` 为 `.env`,并根据需要修改环境变量
|
||||||
|
|
||||||
|
执行 `docker-compose up` 启动容器
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
proxy1.lanhuip.com {
|
{$GOST_API_DOMAIN} {
|
||||||
reverse_proxy localhost:9700
|
basic_auth {
|
||||||
|
{$GOST_API_USERNAME} {$GOST_API_PASSWORD}
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_proxy 127.0.0.1:9700
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,15 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./gost/gost.yaml:/etc/gost/gost.yaml
|
- ./gost/gost.yaml:/etc/gost/gost.yaml
|
||||||
- ./gost/logs:/var/log/gost
|
- ./gost/logs:/var/log/gost
|
||||||
command: >
|
restart: unless-stopped
|
||||||
-api $GOST_USERNAME:$GOST_PASSWORD@:9700
|
|
||||||
|
otel-collector:
|
||||||
|
image: otel/opentelemetry-collector-contrib:0.153.0
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- ./otel/collector.yaml:/etc/otelcol-contrib/config.yaml
|
||||||
|
environment:
|
||||||
|
GOST_LOG_ENDPOINT: ${GOST_LOG_ENDPOINT}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
@@ -16,4 +23,8 @@ services:
|
|||||||
network_mode: host
|
network_mode: host
|
||||||
volumes:
|
volumes:
|
||||||
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||||
|
environment:
|
||||||
|
GOST_API_DOMAIN: ${GOST_API_DOMAIN}
|
||||||
|
GOST_API_USERNAME: ${GOST_API_USERNAME}
|
||||||
|
GOST_API_PASSWORD: ${GOST_API_PASSWORD}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
|
api:
|
||||||
|
addr: 127.0.0.1:9700
|
||||||
|
|
||||||
recorders:
|
recorders:
|
||||||
- name: record-file
|
- name: record-file
|
||||||
file:
|
file:
|
||||||
path: /var/log/gost/
|
path: /var/log/gost/record.log
|
||||||
sep: "\n"
|
sep: "\n"
|
||||||
|
- name: record-http-otel
|
||||||
|
http:
|
||||||
|
url: http://127.0.0.1:4318/gost/record
|
||||||
|
timeout: 10s
|
||||||
|
|||||||
0
gost/logs/record.log
Normal file
0
gost/logs/record.log
Normal file
67
otel/collector.yaml
Normal file
67
otel/collector.yaml
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
receivers:
|
||||||
|
webhookevent/gost:
|
||||||
|
endpoint: 0.0.0.0:4318
|
||||||
|
path: /gost/record
|
||||||
|
split_logs_at_newline: false
|
||||||
|
|
||||||
|
processors:
|
||||||
|
transform/gost:
|
||||||
|
error_mode: ignore
|
||||||
|
log_statements:
|
||||||
|
- context: log
|
||||||
|
statements:
|
||||||
|
- set(log.cache["gost"], ParseJSON(log.body))
|
||||||
|
- set(log.time, Time(log.cache["gost"]["time"], "%Y-%m-%dT%H:%M:%S.%sZ")) where log.cache["gost"]["time"] != nil
|
||||||
|
- set(log.severity_text, "INFO")
|
||||||
|
- set(log.severity_text, "ERROR") where log.cache["gost"]["err"] != nil and log.cache["gost"]["err"] != ""
|
||||||
|
- set(log.severity_text, "ERROR") where log.cache["gost"]["http"]["statusCode"] != nil and log.cache["gost"]["http"]["statusCode"] >= 500
|
||||||
|
- set(log.body, log.cache["gost"])
|
||||||
|
- set(log.attributes["gost.service"], log.cache["gost"]["service"]) where log.cache["gost"]["service"] != nil
|
||||||
|
- set(log.attributes["gost.network"], log.cache["gost"]["network"]) where log.cache["gost"]["network"] != nil
|
||||||
|
- set(log.attributes["gost.remote"], log.cache["gost"]["remote"]) where log.cache["gost"]["remote"] != nil
|
||||||
|
- set(log.attributes["gost.local"], log.cache["gost"]["local"]) where log.cache["gost"]["local"] != nil
|
||||||
|
- set(log.attributes["gost.client"], log.cache["gost"]["client"]) where log.cache["gost"]["client"] != nil
|
||||||
|
- set(log.attributes["gost.src"], log.cache["gost"]["src"]) where log.cache["gost"]["src"] != nil
|
||||||
|
- set(log.attributes["gost.dst"], log.cache["gost"]["dst"]) where log.cache["gost"]["dst"] != nil
|
||||||
|
- set(log.attributes["gost.host"], log.cache["gost"]["host"]) where log.cache["gost"]["host"] != nil
|
||||||
|
- set(log.attributes["gost.proto"], log.cache["gost"]["proto"]) where log.cache["gost"]["proto"] != nil
|
||||||
|
- set(log.attributes["gost.clientIP"], log.cache["gost"]["clientIP"]) where log.cache["gost"]["clientIP"] != nil
|
||||||
|
- set(log.attributes["gost.route"], log.cache["gost"]["route"]) where log.cache["gost"]["route"] != nil
|
||||||
|
- set(log.attributes["gost.inputBytes"], log.cache["gost"]["inputBytes"]) where log.cache["gost"]["inputBytes"] != nil
|
||||||
|
- set(log.attributes["gost.outputBytes"], log.cache["gost"]["outputBytes"]) where log.cache["gost"]["outputBytes"] != nil
|
||||||
|
- set(log.attributes["gost.sid"], log.cache["gost"]["sid"]) where log.cache["gost"]["sid"] != nil
|
||||||
|
- set(log.attributes["gost.duration"], log.cache["gost"]["duration"]) where log.cache["gost"]["duration"] != nil
|
||||||
|
- set(log.attributes["gost.http.host"], log.cache["gost"]["http"]["host"]) where log.cache["gost"]["http"]["host"] != nil
|
||||||
|
- set(log.attributes["gost.http.method"], log.cache["gost"]["http"]["method"]) where log.cache["gost"]["http"]["method"] != nil
|
||||||
|
- set(log.attributes["gost.http.proto"], log.cache["gost"]["http"]["proto"]) where log.cache["gost"]["http"]["proto"] != nil
|
||||||
|
- set(log.attributes["gost.http.scheme"], log.cache["gost"]["http"]["scheme"]) where log.cache["gost"]["http"]["scheme"] != nil
|
||||||
|
- set(log.attributes["gost.http.uri"], log.cache["gost"]["http"]["uri"]) where log.cache["gost"]["http"]["uri"] != nil
|
||||||
|
- set(log.attributes["gost.http.statusCode"], log.cache["gost"]["http"]["statusCode"]) where log.cache["gost"]["http"]["statusCode"] != nil
|
||||||
|
- set(log.attributes["gost.err"], log.cache["gost"]["err"]) where log.cache["gost"]["err"] != nil and log.cache["gost"]["err"] != ""
|
||||||
|
- set(log.attributes["error.message"], log.cache["gost"]["err"]) where log.cache["gost"]["err"] != nil and log.cache["gost"]["err"] != ""
|
||||||
|
|
||||||
|
resource/gost:
|
||||||
|
attributes:
|
||||||
|
- key: service.name
|
||||||
|
value: gost
|
||||||
|
action: upsert
|
||||||
|
|
||||||
|
batch:
|
||||||
|
|
||||||
|
exporters:
|
||||||
|
otlp_http/remote:
|
||||||
|
endpoint: ${env:GOST_LOG_ENDPOINT}
|
||||||
|
debug:
|
||||||
|
verbosity: detailed
|
||||||
|
|
||||||
|
service:
|
||||||
|
pipelines:
|
||||||
|
logs:
|
||||||
|
receivers:
|
||||||
|
- webhookevent/gost
|
||||||
|
processors:
|
||||||
|
- transform/gost
|
||||||
|
- resource/gost
|
||||||
|
- batch
|
||||||
|
exporters:
|
||||||
|
- otlp_http/remote
|
||||||
Reference in New Issue
Block a user