From 7a268018e3064cb7465ba5ad12f2cb7d24b3843a Mon Sep 17 00:00:00 2001 From: okxlin Date: Mon, 21 Oct 2024 01:47:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4nezha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/nezha-agent/0.20.1/.env.sample | 3 + apps/nezha-agent/0.20.1/data.yml | 28 ++-- apps/nezha-agent/0.20.1/docker-compose.yml | 4 +- apps/nezha-agent/data.yml | 9 +- apps/nezha-agent/latest/.env.sample | 3 + apps/nezha-agent/latest/data.yml | 16 ++ apps/nezha-agent/latest/docker-compose.yml | 11 ++ apps/nezha-agent/logo.png | Bin 4385 -> 2455 bytes apps/nezha-dash/0.6.0-fix/data.yml | 138 ----------------- apps/nezha-dash/0.6.2/.env.sample | 15 ++ apps/nezha-dash/0.6.2/data.yml | 140 ++++++++++++++++++ .../{0.6.0-fix => 0.6.2}/docker-compose.yml | 8 +- apps/nezha-dash/data.yml | 11 +- apps/nezha-dash/latest/.env.sample | 15 ++ apps/nezha-dash/latest/data.yml | 140 ++++++++++++++++++ apps/nezha-dash/latest/docker-compose.yml | 29 ++++ apps/nezha-dash/logo.png | Bin 2291 -> 708 bytes apps/nezha-dashboard/0.20.4/.env.sample | 3 + apps/nezha-dashboard/0.20.4/data.yml | 34 ++--- .../nezha-dashboard/0.20.4/docker-compose.yml | 10 +- apps/nezha-dashboard/README.md | 10 +- apps/nezha-dashboard/data.yml | 9 +- apps/nezha-dashboard/latest/.env.sample | 3 + apps/nezha-dashboard/latest/config.yaml | 14 ++ apps/nezha-dashboard/latest/data.yml | 18 +++ .../nezha-dashboard/latest/docker-compose.yml | 19 +++ apps/nezha-dashboard/logo.png | Bin 4385 -> 2455 bytes 27 files changed, 494 insertions(+), 196 deletions(-) create mode 100644 apps/nezha-agent/0.20.1/.env.sample create mode 100644 apps/nezha-agent/latest/.env.sample create mode 100644 apps/nezha-agent/latest/data.yml create mode 100644 apps/nezha-agent/latest/docker-compose.yml delete mode 100644 apps/nezha-dash/0.6.0-fix/data.yml create mode 100644 apps/nezha-dash/0.6.2/.env.sample create mode 100644 apps/nezha-dash/0.6.2/data.yml rename apps/nezha-dash/{0.6.0-fix => 0.6.2}/docker-compose.yml (91%) create mode 100644 apps/nezha-dash/latest/.env.sample create mode 100644 apps/nezha-dash/latest/data.yml create mode 100644 apps/nezha-dash/latest/docker-compose.yml create mode 100644 apps/nezha-dashboard/0.20.4/.env.sample create mode 100644 apps/nezha-dashboard/latest/.env.sample create mode 100644 apps/nezha-dashboard/latest/config.yaml create mode 100644 apps/nezha-dashboard/latest/data.yml create mode 100644 apps/nezha-dashboard/latest/docker-compose.yml diff --git a/apps/nezha-agent/0.20.1/.env.sample b/apps/nezha-agent/0.20.1/.env.sample new file mode 100644 index 00000000..83cbde05 --- /dev/null +++ b/apps/nezha-agent/0.20.1/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="nezha-agent" +NZ_CLENT_SECRET="xxxxx" +NZ_GRPC_URL="http://1.2.3.4:5555" diff --git a/apps/nezha-agent/0.20.1/data.yml b/apps/nezha-agent/0.20.1/data.yml index a583f8ba..f2cf848d 100644 --- a/apps/nezha-agent/0.20.1/data.yml +++ b/apps/nezha-agent/0.20.1/data.yml @@ -1,14 +1,16 @@ additionalProperties: - formFields: - - envKey: NZ_GRPC_URL - labelEn: "Nezha gRPC URL" - labelZh: 哪吒 gRPC 地址 - required: true - type: text - edit: true - - envKey: NZ_CLENT_SECRET - labelEn: "Nezha client secret" - labelZh: 哪吒客户端密钥 - required: true - type: password - edit: true \ No newline at end of file + formFields: + - default: "" + edit: true + envKey: NZ_GRPC_URL + labelEn: "Nezha gRPC URL" + labelZh: 哪吒 gRPC 地址 + required: true + type: text + - default: "" + edit: true + envKey: NZ_CLENT_SECRET + labelEn: "Nezha client secret" + labelZh: 哪吒客户端密钥 + required: true + type: password \ No newline at end of file diff --git a/apps/nezha-agent/0.20.1/docker-compose.yml b/apps/nezha-agent/0.20.1/docker-compose.yml index b7288680..daa33835 100644 --- a/apps/nezha-agent/0.20.1/docker-compose.yml +++ b/apps/nezha-agent/0.20.1/docker-compose.yml @@ -1,8 +1,8 @@ services: nezha-agent: - image: whoer/nezha-agent:0.20.1 + image: "whoer/nezha-agent:0.20.1" container_name: ${CONTAINER_NAME} - restart: unless-stopped + restart: always command: --tls -s ${NZ_GRPC_URL} -p ${NZ_CLENT_SECRET} -d volumes: - /etc:/etc:ro diff --git a/apps/nezha-agent/data.yml b/apps/nezha-agent/data.yml index 3d6c5642..fff5b114 100644 --- a/apps/nezha-agent/data.yml +++ b/apps/nezha-agent/data.yml @@ -1,12 +1,11 @@ -name: nezha-agent +name: 哪吒监控 - Agent tags: - - 工具 + - 实用工具 title: 哪吒监控 - Agent -type: 工具 description: 哪吒监控 - Agent additionalProperties: key: nezha-agent - name: nezha-agent + name: 哪吒监控 - Agent tags: - Tool shortDescZh: 哪吒监控 - Agent @@ -15,6 +14,6 @@ additionalProperties: crossVersionUpdate: true limit: 0 recommend: 0 - website: https://nezha.wiki/ + website: https://nezha.wiki github: https://github.com/naiba/nezha document: https://nezha.wiki/guide/agent.html diff --git a/apps/nezha-agent/latest/.env.sample b/apps/nezha-agent/latest/.env.sample new file mode 100644 index 00000000..83cbde05 --- /dev/null +++ b/apps/nezha-agent/latest/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="nezha-agent" +NZ_CLENT_SECRET="xxxxx" +NZ_GRPC_URL="http://1.2.3.4:5555" diff --git a/apps/nezha-agent/latest/data.yml b/apps/nezha-agent/latest/data.yml new file mode 100644 index 00000000..f2cf848d --- /dev/null +++ b/apps/nezha-agent/latest/data.yml @@ -0,0 +1,16 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: NZ_GRPC_URL + labelEn: "Nezha gRPC URL" + labelZh: 哪吒 gRPC 地址 + required: true + type: text + - default: "" + edit: true + envKey: NZ_CLENT_SECRET + labelEn: "Nezha client secret" + labelZh: 哪吒客户端密钥 + required: true + type: password \ No newline at end of file diff --git a/apps/nezha-agent/latest/docker-compose.yml b/apps/nezha-agent/latest/docker-compose.yml new file mode 100644 index 00000000..3c98ff0f --- /dev/null +++ b/apps/nezha-agent/latest/docker-compose.yml @@ -0,0 +1,11 @@ +services: + nezha-agent: + image: "whoer/nezha-agent:latest" + container_name: ${CONTAINER_NAME} + restart: always + command: --tls -s ${NZ_GRPC_URL} -p ${NZ_CLENT_SECRET} -d + volumes: + - /etc:/etc:ro + network_mode: host + labels: + createdBy: "Apps" \ No newline at end of file diff --git a/apps/nezha-agent/logo.png b/apps/nezha-agent/logo.png index af54371ed29a9b5710104007ad0fdf5913af8d91..b632c7bf7aec01a857c3c27acfc808e63fb81ee4 100644 GIT binary patch literal 2455 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 literal 2291 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