From 4754aefbfa7cc048a1fc2367205bcd7fd525895d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E6=A3=AE?= Date: Mon, 22 Jul 2024 17:20:08 +0800 Subject: [PATCH] =?UTF-8?q?ES=20=E5=AE=A2=E6=88=B7=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 萌森 --- .../8.14.3/config/elasticsearch.yml | 82 ++++++++ apps/elastic-elasticsearch/8.14.3/data.yml | 53 +++++ .../8.14.3/docker-compose.yml | 39 ++++ .../8.14.3/scripts/init.sh | 15 ++ .../8.14.3/scripts/uninstall.sh | 10 + .../8.14.3/scripts/upgrade.sh | 15 ++ apps/elastic-elasticsearch/README.md | 33 ++++ apps/elastic-elasticsearch/data.yml | 19 ++ apps/elastic-elasticsearch/logo.png | Bin 0 -> 36919 bytes apps/elastic-kibana/8.14.3/config/kibana.yml | 183 ++++++++++++++++++ apps/elastic-kibana/8.14.3/data.yml | 45 +++++ apps/elastic-kibana/8.14.3/docker-compose.yml | 32 +++ apps/elastic-kibana/8.14.3/scripts/init.sh | 15 ++ .../8.14.3/scripts/uninstall.sh | 10 + apps/elastic-kibana/8.14.3/scripts/upgrade.sh | 15 ++ apps/elastic-kibana/README.md | 46 +++++ apps/elastic-kibana/data.yml | 19 ++ apps/elastic-kibana/logo.png | Bin 0 -> 36919 bytes 18 files changed, 631 insertions(+) create mode 100644 apps/elastic-elasticsearch/8.14.3/config/elasticsearch.yml create mode 100644 apps/elastic-elasticsearch/8.14.3/data.yml create mode 100644 apps/elastic-elasticsearch/8.14.3/docker-compose.yml create mode 100644 apps/elastic-elasticsearch/8.14.3/scripts/init.sh create mode 100644 apps/elastic-elasticsearch/8.14.3/scripts/uninstall.sh create mode 100644 apps/elastic-elasticsearch/8.14.3/scripts/upgrade.sh create mode 100644 apps/elastic-elasticsearch/README.md create mode 100644 apps/elastic-elasticsearch/data.yml create mode 100644 apps/elastic-elasticsearch/logo.png create mode 100644 apps/elastic-kibana/8.14.3/config/kibana.yml create mode 100644 apps/elastic-kibana/8.14.3/data.yml create mode 100644 apps/elastic-kibana/8.14.3/docker-compose.yml create mode 100644 apps/elastic-kibana/8.14.3/scripts/init.sh create mode 100644 apps/elastic-kibana/8.14.3/scripts/uninstall.sh create mode 100644 apps/elastic-kibana/8.14.3/scripts/upgrade.sh create mode 100644 apps/elastic-kibana/README.md create mode 100644 apps/elastic-kibana/data.yml create mode 100644 apps/elastic-kibana/logo.png diff --git a/apps/elastic-elasticsearch/8.14.3/config/elasticsearch.yml b/apps/elastic-elasticsearch/8.14.3/config/elasticsearch.yml new file mode 100644 index 000000000..f0705b19e --- /dev/null +++ b/apps/elastic-elasticsearch/8.14.3/config/elasticsearch.yml @@ -0,0 +1,82 @@ +# ======================== Elasticsearch Configuration ========================= +# +# NOTE: Elasticsearch comes with reasonable defaults for most settings. +# Before you set out to tweak and tune the configuration, make sure you +# understand what are you trying to accomplish and the consequences. +# +# The primary way of configuring a node is via this file. This template lists +# the most important settings you may want to configure for a production cluster. +# +# Please consult the documentation for further information on configuration options: +# https://www.elastic.co/guide/en/elasticsearch/reference/index.html +# +# ---------------------------------- Cluster ----------------------------------- +# +# Use a descriptive name for your cluster: +# +cluster.name: elasticsearch-cluster + # + # ------------------------------------ Node ------------------------------------ + # + # Use a descriptive name for the node: + # + #node.name: node-1 + # + # Add custom attributes to the node: + # + #node.attr.rack: r1 + # + # ----------------------------------- Paths ------------------------------------ + # + # Path to directory where to store the data (separate multiple locations by comma): + # + @path.data@ + # + # Path to log files: + # + @path.logs@ +# +# ----------------------------------- Memory ----------------------------------- +# +# Lock the memory on startup: +# +#bootstrap.memory_lock: true +# +# Make sure that the heap size is set to about half the memory available +# on the system and that the owner of the process is allowed to use this +# limit. +# +# Elasticsearch performs poorly when the system is swapping the memory. +# +# ---------------------------------- Network ----------------------------------- +# +# By default Elasticsearch is only accessible on localhost. Set a different +# address here to expose this node on the network: +# +network.host: 0.0.0.0 +# +# By default Elasticsearch listens for HTTP traffic on the first free port it +# finds starting at 9200. Set a specific HTTP port here: +# +http.port: 9200 +# +# For more information, consult the network module documentation. +# +# --------------------------------- Discovery ---------------------------------- +# +# Pass an initial list of hosts to perform discovery when this node is started: +# The default list of hosts is ["127.0.0.1", "[::1]"] +# +#discovery.seed_hosts: ["host1", "host2"] +# +# Bootstrap the cluster using an initial set of master-eligible nodes: +# +#cluster.initial_master_nodes: ["node-1", "node-2"] +# +# For more information, consult the discovery and cluster formation module documentation. +# +# ---------------------------------- Various ----------------------------------- +# +# Allow wildcard deletion of indices: +# +#action.destructive_requires_name: false diff --git a/apps/elastic-elasticsearch/8.14.3/data.yml b/apps/elastic-elasticsearch/8.14.3/data.yml new file mode 100644 index 000000000..add08a03e --- /dev/null +++ b/apps/elastic-elasticsearch/8.14.3/data.yml @@ -0,0 +1,53 @@ +additionalProperties: + formFields: + - default: "/home/elasticsearch" + edit: true + envKey: BARK_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 9200 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 9300 + edit: true + envKey: PANEL_APP_PORT_API + labelZh: 通讯端口 + labelEn: Communication port + required: true + rule: paramPort + type: number + - default: "elasticsearch-cluster" + edit: true + envKey: ES_SETTING_CLUSTER_NAME + labelZh: 节点名称 + labelEn: Cluster name + required: true + type: text + - default: "" + edit: true + envKey: ELASTIC_PASSWORD + labelZh: Elasticsearch 密码 (elastic) + labelEn: Elasticsearch password (elastic) + required: false + type: password + - default: "" + edit: true + envKey: KIBANA_PASSWORD + labelZh: Kibana 密码 (kibana_system) + labelEn: Kibana password (kibana_system) + required: false + type: password + - default: "" + edit: true + envKey: ENROLLMENT_TOKEN + labelZh: 注册令牌 (节点) + labelEn: Enrollment token (node) + required: false + type: text diff --git a/apps/elastic-elasticsearch/8.14.3/docker-compose.yml b/apps/elastic-elasticsearch/8.14.3/docker-compose.yml new file mode 100644 index 000000000..26568da62 --- /dev/null +++ b/apps/elastic-elasticsearch/8.14.3/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3.8" + +networks: + 1panel-network: + external: true + +services: + elasticsearch: + image: elasticsearch:8.14.3 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + tty: true + ulimits: + memlock: + soft: -1 + hard: -1 + ports: + - ${PANEL_APP_PORT_HTTPS}:9200 + - ${PANEL_APP_PORT_API}:9300 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml + - ${BARK_ROOT_PATH}/certs:/usr/share/elasticsearch/config/certs + - ${BARK_ROOT_PATH}/config:/usr/share/elasticsearch/config + - ${BARK_ROOT_PATH}/data:/usr/share/elasticsearch/data + - ${BARK_ROOT_PATH}/data:/usr/share/elasticsearch/logs + - ${BARK_ROOT_PATH}/data:/usr/share/elasticsearch/plugins + environment: + - ES_SETTING_HTTP_PORT=9200 + - ES_SETTING_CLUSTER_NAME=elasticsearch-cluster + - ES_SETTING_LICENSE=basic + - MEM_LIMIT=1073741824 + - ES_SETTING_BOOTSTRAP_MEMORY__LOCK=true diff --git a/apps/elastic-elasticsearch/8.14.3/scripts/init.sh b/apps/elastic-elasticsearch/8.14.3/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/elastic-elasticsearch/8.14.3/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/elastic-elasticsearch/8.14.3/scripts/uninstall.sh b/apps/elastic-elasticsearch/8.14.3/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/elastic-elasticsearch/8.14.3/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/elastic-elasticsearch/8.14.3/scripts/upgrade.sh b/apps/elastic-elasticsearch/8.14.3/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/elastic-elasticsearch/8.14.3/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/elastic-elasticsearch/README.md b/apps/elastic-elasticsearch/README.md new file mode 100644 index 000000000..dd899e657 --- /dev/null +++ b/apps/elastic-elasticsearch/README.md @@ -0,0 +1,33 @@ +# Elasticsearch + +搜索并分析您的数据 + +![Elasticsearch](https://file.lifebus.top/imgs/elasticsearch_logo.svg) + +Elasticsearch 是 Elastic Stack 核心的分布式搜索和分析引擎。 Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 +Elasticsearch 中。 +Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。 Elasticsearch 是索引、搜索和分析魔法发生的地方。 + +## 安装说明 + +### 单节点安装 + ++ `节点名称` 配置 + +用于标识集群中的节点。默认情况下,节点名称是随机生成的 UUID。 + ++ `Elasticsearch 密码 (elastic)` 配置 + +单节点启动必填 + +用于保护内置用户 `elastic` 的密码。默认情况下,密码是随机生成的。 + ++ `Kibana 密码 (kibana_system)` 配置 + +单节点启动必填 + +用于保护内置用户 `kibana_system` 的密码。默认情况下,密码是随机生成的。 + ++ `注册令牌 (节点)` 配置 + +单节点启动可忽略, 如果是作为 `集群` 中的节点启动,此项 `必须` 填写,可忽略密码配置。 diff --git a/apps/elastic-elasticsearch/data.yml b/apps/elastic-elasticsearch/data.yml new file mode 100644 index 000000000..44d12c2e5 --- /dev/null +++ b/apps/elastic-elasticsearch/data.yml @@ -0,0 +1,19 @@ +name: Kibana +title: 可视化Elasticsearch数据并导航Elastic堆栈 +description: 可视化Elasticsearch数据并导航Elastic堆栈 +additionalProperties: + key: kibana + name: Kibana + tags: + - WebSite + - Middleware + - Tool + - Local + shortDescZh: 可视化Elasticsearch数据并导航Elastic堆栈 + shortDescEn: Visualize Elasticsearch data and navigate the Elastic stack + type: website + crossVersionUpdate: true + limit: 0 + website: https://www.elastic.co/ + github: https://github.com/elastic/kibana/ + document: https://www.elastic.co/docs/ diff --git a/apps/elastic-elasticsearch/logo.png b/apps/elastic-elasticsearch/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..116cb930f44cbab3e92e6168be1f224c5db7eec3 GIT binary patch literal 36919 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 literal 0 HcmV?d00001 diff --git a/apps/elastic-kibana/8.14.3/config/kibana.yml b/apps/elastic-kibana/8.14.3/config/kibana.yml new file mode 100644 index 000000000..cd426f430 --- /dev/null +++ b/apps/elastic-kibana/8.14.3/config/kibana.yml @@ -0,0 +1,183 @@ +# For more configuration options see the configuration guide for Kibana in +# https://www.elastic.co/guide/index.html + +# =================== System: Kibana Server =================== +# Kibana is served by a back end server. This setting specifies the port to use. +server.port: 5601 + +# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values. +# The default is 'localhost', which usually means remote machines will not be able to connect. +# To allow connections from remote users, set this parameter to a non-loopback address. +server.host: "0.0.0.0" + +# Enables you to specify a path to mount Kibana at if you are running behind a proxy. +# Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath +# from requests it receives, and to prevent a deprecation warning at startup. +# This setting cannot end in a slash. +#server.basePath: "" + +# Specifies whether Kibana should rewrite requests that are prefixed with +# `server.basePath` or require that they are rewritten by your reverse proxy. +# Defaults to `false`. +#server.rewriteBasePath: false + +# Specifies the public URL at which Kibana is available for end users. If +# `server.basePath` is configured this URL should end with the same basePath. +#server.publicBaseUrl: "" + +# The maximum payload size in bytes for incoming server requests. +#server.maxPayload: 1048576 + +# The Kibana server's name. This is used for display purposes. +server.name: "kibana-node" + +# =================== System: Kibana Server (Optional) =================== +# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively. +# These settings enable SSL for outgoing requests from the Kibana server to the browser. +#server.ssl.enabled: false +#server.ssl.certificate: /path/to/your/server.crt +#server.ssl.key: /path/to/your/server.key + +# =================== System: Elasticsearch =================== +# The URLs of the Elasticsearch instances to use for all your queries. +#elasticsearch.hosts: ["http://localhost:9200"] + +# If your Elasticsearch is protected with basic authentication, these settings provide +# the username and password that the Kibana server uses to perform maintenance on the Kibana +# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which +# is proxied through the Kibana server. +#elasticsearch.username: "kibana_system" +#elasticsearch.password: "pass" + +# Kibana can also authenticate to Elasticsearch via "service account tokens". +# Service account tokens are Bearer style tokens that replace the traditional username/password based configuration. +# Use this token instead of a username/password. +# elasticsearch.serviceAccountToken: "my_token" + +# Time in milliseconds to wait for Elasticsearch to respond to pings. Defaults to the value of +# the elasticsearch.requestTimeout setting. +#elasticsearch.pingTimeout: 1500 + +# Time in milliseconds to wait for responses from the back end or Elasticsearch. This value +# must be a positive integer. +#elasticsearch.requestTimeout: 30000 + +# The maximum number of sockets that can be used for communications with elasticsearch. +# Defaults to `Infinity`. +#elasticsearch.maxSockets: 1024 + +# Specifies whether Kibana should use compression for communications with elasticsearch +# Defaults to `false`. +#elasticsearch.compression: false + +# List of Kibana client-side headers to send to Elasticsearch. To send *no* client-side +# headers, set this value to [] (an empty list). +#elasticsearch.requestHeadersWhitelist: [ authorization ] + +# Header names and values that are sent to Elasticsearch. Any custom headers cannot be overwritten +# by client-side headers, regardless of the elasticsearch.requestHeadersWhitelist configuration. +#elasticsearch.customHeaders: {} + +# Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable. +#elasticsearch.shardTimeout: 30000 + +# =================== System: Elasticsearch (Optional) =================== +# These files are used to verify the identity of Kibana to Elasticsearch and are required when +# xpack.security.http.ssl.client_authentication in Elasticsearch is set to required. +#elasticsearch.ssl.certificate: /path/to/your/client.crt +#elasticsearch.ssl.key: /path/to/your/client.key + +# Enables you to specify a path to the PEM file for the certificate +# authority for your Elasticsearch instance. +#elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ] + +# To disregard the validity of SSL certificates, change this setting's value to 'none'. +#elasticsearch.ssl.verificationMode: full + +# =================== System: Logging =================== +# Set the value of this setting to off to suppress all logging output, or to debug to log everything. Defaults to 'info' +#logging.root.level: debug + +# Enables you to specify a file where Kibana stores log output. +#logging.appenders.default: +# type: file +# fileName: /var/logs/kibana.log +# layout: +# type: json + +# Example with size based log rotation +#logging.appenders.default: +# type: rolling-file +# fileName: /var/logs/kibana.log +# policy: +# type: size-limit +# size: 256mb +# strategy: +# type: numeric +# max: 10 +# layout: +# type: json + +# Logs queries sent to Elasticsearch. +#logging.loggers: +# - name: elasticsearch.query +# level: debug + +# Logs http responses. +#logging.loggers: +# - name: http.server.response +# level: debug + +# Logs system usage information. +#logging.loggers: +# - name: metrics.ops +# level: debug + +# Enables debug logging on the browser (dev console) +#logging.browser.root: +# level: debug + +# =================== System: Other =================== +# The path where Kibana stores persistent data not saved in Elasticsearch. Defaults to data +#path.data: data + +# Specifies the path where Kibana creates the process ID file. +#pid.file: /run/kibana/kibana.pid + +# Set the interval in milliseconds to sample system and process performance +# metrics. Minimum is 100ms. Defaults to 5000ms. +#ops.interval: 5000 + +# Specifies locale to be used for all localizable strings, dates and number formats. +# Supported languages are the following: English (default) "en", Chinese "zh-CN", Japanese "ja-JP", French "fr-FR". +i18n.locale: "zh-CN" + +# =================== Frequently used (Optional)=================== + +# =================== Saved Objects: Migrations =================== +# Saved object migrations run at startup. If you run into migration-related issues, you might need to adjust these settings. + +# The number of documents migrated at a time. +# If Kibana can't start up or upgrade due to an Elasticsearch `circuit_breaking_exception`, +# use a smaller batchSize value to reduce the memory pressure. Defaults to 1000 objects per batch. +#migrations.batchSize: 1000 + +# The maximum payload size for indexing batches of upgraded saved objects. +# To avoid migrations failing due to a 413 Request Entity Too Large response from Elasticsearch. +# This value should be lower than or equal to your Elasticsearch cluster’s `http.max_content_length` +# configuration option. Default: 100mb +#migrations.maxBatchSizeBytes: 100mb + +# The number of times to retry temporary migration failures. Increase the setting +# if migrations fail frequently with a message such as `Unable to complete the [...] step after +# 15 attempts, terminating`. Defaults to 15 +#migrations.retryAttempts: 15 + +# =================== Search Autocomplete =================== +# Time in milliseconds to wait for autocomplete suggestions from Elasticsearch. +# This value must be a whole number greater than zero. Defaults to 1000ms +#unifiedSearch.autocomplete.valueSuggestions.timeout: 1000 + +# Maximum number of documents loaded by each shard to generate autocomplete suggestions. +# This value must be a whole number greater than zero. Defaults to 100_000 +#unifiedSearch.autocomplete.valueSuggestions.terminateAfter: 100000 diff --git a/apps/elastic-kibana/8.14.3/data.yml b/apps/elastic-kibana/8.14.3/data.yml new file mode 100644 index 000000000..5655021c1 --- /dev/null +++ b/apps/elastic-kibana/8.14.3/data.yml @@ -0,0 +1,45 @@ +additionalProperties: + formFields: + - default: "/home/kibana" + edit: true + envKey: BARK_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 5601 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "['http://127.0.0.1:9200']" + edit: true + envKey: ELASTICSEARCH_HOSTS + labelZh: Elasticsearch 地址 + labelEn: Elasticsearch address + required: true + type: text + - default: "" + edit: true + envKey: ELASTICSEARCH_USERNAME + labelZh: Elasticsearch 用户名 + labelEn: Elasticsearch username + required: false + type: text + - default: "" + edit: true + envKey: ELASTICSEARCH_PASSWORD + labelZh: Elasticsearch 密码 + labelEn: Elasticsearch password + required: false + type: password + - default: "" + edit: true + envKey: ELASTICSEARCH_SERVICEACCOUNTTOKEN + labelZh: Elasticsearch 服务 账户令牌 + labelEn: Elasticsearch service account token + required: false + type: password diff --git a/apps/elastic-kibana/8.14.3/docker-compose.yml b/apps/elastic-kibana/8.14.3/docker-compose.yml new file mode 100644 index 000000000..9074a9d19 --- /dev/null +++ b/apps/elastic-kibana/8.14.3/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3.8" + +networks: + 1panel-network: + external: true + +services: + kibana: + image: kibana:8.14.3 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:5601 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ./config/kibana.yml:/usr/share/kibana/config/kibana.yml + - ${BARK_ROOT_PATH}/config:/usr/share/kibana/config + - ${BARK_ROOT_PATH}/data:/usr/share/kibana/data + environment: + - SERVER_PORT=5601 + - SERVER_NAME="kibana-node" + - SERVER_HOST="0.0.0.0" + - I18N_LOCALE="zh-CN" + - SERVER_REWRITEBASEPATH=false + - SERVER_BASEPATH="" + - SERVER_PUBLICBASEURL="" diff --git a/apps/elastic-kibana/8.14.3/scripts/init.sh b/apps/elastic-kibana/8.14.3/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/elastic-kibana/8.14.3/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/elastic-kibana/8.14.3/scripts/uninstall.sh b/apps/elastic-kibana/8.14.3/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/elastic-kibana/8.14.3/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/elastic-kibana/8.14.3/scripts/upgrade.sh b/apps/elastic-kibana/8.14.3/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/elastic-kibana/8.14.3/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/elastic-kibana/README.md b/apps/elastic-kibana/README.md new file mode 100644 index 000000000..dd47a378b --- /dev/null +++ b/apps/elastic-kibana/README.md @@ -0,0 +1,46 @@ +# Kibana + +Kibana 是一个用户界面,可让您可视化 Elasticsearch 数据并导航 Elastic Stack。通过本教程了解可视化数据的基础知识。 + +![Kibana](https://file.lifebus.top/imgs/kibana_cover.png) + +Kibana 适合管理员、分析师和业务用户。作为管理员,您的角色是管理 Elastic Stack,从创建部署到将 Elasticsearch 数据导入 +Kibana,然后管理数据。 +作为分析师,您希望发现数据中的见解、在仪表板上可视化您的数据并分享您的发现。作为业务用户,您希望查看现有仪表板并深入了解详细信息。 + +Kibana 适用于所有类型的数据。您的数据可以是结构化或非结构化文本、数字数据、时间序列数据、地理空间数据、日志、指标、安全事件等。无论您的数据是什么,Kibana +都可以帮助您发现模式和关系并可视化结果。 + +## 特性 + ++ 搜索、观察和保护您的数据 + +从发现文档到分析日志再到查找安全漏洞,Kibana 是您访问这些功能及其他功能的门户。 + ++ 分析您的数据 + +搜索隐藏的见解,可视化您在图表、仪表、地图、图形等中发现的内容,并将它们组合在仪表板中。 + ++ 管理、监控和保护 Elastic Stack + +管理您的数据、监控 Elastic Stack 集群的运行状况并控制哪些用户可以访问哪些功能。 + +## 安装说明 + +> 登录账户信息,请从 `Elasticsearch` 日志中获取账户信息 +> +> 注册令牌,请从 `Elasticsearch` 日志中获取注册令牌信息 +> +> 首次登录地址,请查看日志获取登录地址信息 +> +> http://127.0.0.1:5601?code=xxxxxx + +### 登录方式 + ++ `用户名 + 密码` + +通过 `elastic` 或 `kibana_system` 用户 + `密码` 登录 + ++ `Elasticsearch 服务 账户令牌` + +通过 `Elasticsearch` 服务账户令牌登录,需要在 `Elasticsearch` 服务中获取 diff --git a/apps/elastic-kibana/data.yml b/apps/elastic-kibana/data.yml new file mode 100644 index 000000000..44d12c2e5 --- /dev/null +++ b/apps/elastic-kibana/data.yml @@ -0,0 +1,19 @@ +name: Kibana +title: 可视化Elasticsearch数据并导航Elastic堆栈 +description: 可视化Elasticsearch数据并导航Elastic堆栈 +additionalProperties: + key: kibana + name: Kibana + tags: + - WebSite + - Middleware + - Tool + - Local + shortDescZh: 可视化Elasticsearch数据并导航Elastic堆栈 + shortDescEn: Visualize Elasticsearch data and navigate the Elastic stack + type: website + crossVersionUpdate: true + limit: 0 + website: https://www.elastic.co/ + github: https://github.com/elastic/kibana/ + document: https://www.elastic.co/docs/ diff --git a/apps/elastic-kibana/logo.png b/apps/elastic-kibana/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..116cb930f44cbab3e92e6168be1f224c5db7eec3 GIT binary patch literal 36919 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 literal 0 HcmV?d00001