kibana部署与嵌套运用

目录

一、前言

二、准备工作

    2.1、 下载并配置 Kibana 镜像

三、开启kibana自带登陆验证

   3.1、elasticsearch.yml文件中设置启用验证

   3.2、 为Kibana设置一个初始的用户名和密码。

   3.3、设置elasticsearch访问密码

    3.4.、安装x-pack插件

    3.5、 重启elasticsearch和kibana

四、使用 Dashboard 和 iframe

    4.1、Dashboard 的基本使用

    4.2、 iframe 的使用

五、总结


一、前言

搭建基于 Docker 的 Kibana 可以方便快捷地实现数据的可视化展示和分析,同时也方便其他系统的嵌套。本文将介绍如何使用 Docker 部署 Kibana,并重点介绍如何使用 Dashboard 和 iframe 实现数据的可视化展示。

二、准备工作

在部署 Kibana 前,需要安装 Docker 及其依赖。具体可以[官网](https://docs.docker.com/get-docker/)参考。

    2.1、 下载并配置 Kibana 镜像

可以通过 Docker Hub 上的 [Kibana 镜像](https://hub.docker.com/_/kibana)来安装 Kibana。在安装时,可以指定 Kibana 的版本,例如:

```
docker pull docker.elastic.co/kibana/kibana:7.10.0
```

然后,在运行 Kibana 容器时,需要将 Elasticsearch 地址配置到 Kibana 的配置文件中,具体可以通过命令行参数或者挂载配置文件的方式实现。例如:

```
docker run --name kibana -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://[elasticsearch_ip]:9200" docker.elastic.co/kibana/kibana:7.10.0
```

这里将 Kibana 暴露在 5601 端口,并且将 Elasticsearch 的地址配置为 `[elasticsearch_ip]:9200`。

三、开启kibana自带登陆验证

   如果您希望保护您的Kibana应用程序,并控制被允许访问应用程序的用户,请使用Kibana自带的登录页面及登录验证功能。

   3.1、elasticsearch.yml文件中设置启用验证

    在elasticsearch.yml文件中设置启用验证。打开elasticsearch.yml文件,找到下面的这行:

```
#xpack.security.enabled: false
```

去除注释并将其设置为true。

```
xpack.security.enabled: true
```

    3.2、 为Kibana设置一个初始的用户名和密码。

在elasticsearch安装目录下的bin目录中,运行以下命令:

```
bin/elasticsearch-setup-passwords interactive
```

此命令将显示一个交互式的命令行界面,您可以使用它来设置Kibana和elasticsearch的密码。

    3.3、设置elasticsearch访问密码

```
#elasticsearch.password: "pass"
```

去除注释并将其设置为您在第2步中设置的密码。

```
elasticsearch.password: "your_password"
```

     3.4.、安装x-pack插件

```
./bin/kibana-plugin install x-pack
```

     3.5、 重启elasticsearch和kibana

          您应该会看到Kibana登录页面,它会显示“用户名”和“密码”字段。

          

 

四、使用 Dashboard 和 iframe

    4.1、Dashboard 的基本使用

Dashboard 是 Kibana 的一个重要功能,可以将多个视图整合为一个面板,方便数据的展示和分析。在 Kibana 中,可以通过“Dashboard”菜单进入到 Dashboard 界面。

在 Dashboard 界面,可以通过“Add”添加各种数据视图,例如表格、柱状图、饼图等,然后将它们布局到一个面板中,即可得到一个 Dashboard。此外,也可以通过菜单中的“Visualize”来创建一个可视化视图,并将其添加到 Dashboard 中。

 

    4.2、 iframe 的使用

通过将 Dashboard 嵌套在其他系统中,可以方便地展示数据,同时也可以实现免登效果,这是很多业务系统都需要的功能。

在嵌套时,可以通过 iframe 标签嵌套 Kibana 的 Dashboard,从而实现 Dashboard 的展示。需要注意的是,在 Kibana 中有一些安全设置(比如 CORS),需要进行相应的设置才能允许其他系统嵌套 Kibana。可以通过在 Kibana 中设置 `server.cors` 选项来实现这些安全设置,具体可以参考 Kibana 的文档。

在嵌套时,需要在 iframe 中设置跨域访问的头信息,例如:

```
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Dashboard</title>
  <script>
    document.domain = 'example.com'; // 设置域名
  </script>
</head>
<body>
  <iframe src="http://kibana.example.com/app/dashboards#/view/xxx?embed=true" width="100%" height="100%" frameborder="0"></iframe>
</body>
```

在这里,我们通过 `src` 属性将 Dashboard 面板嵌套在 iframe 中,其中 `xxx` 是 Dashboard 的 ID。

除了设置设置域名和设置头信息外,还需要将 Kibana 的 cookie 带入 iframe 中,以实现免登效果。可以通过设置 `iframe` 的 `sandbox` 属性来实现。例如:

```
<iframe src="http://kibana.example.com/app/dashboards#/view/xxx?embed=true" width="100%" height="100%" frameborder="0" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>
```

在这里,设置了`sandbox` 属性,允许 iframe 访问同源(同域名的)文档、执行脚本、弹出窗口、向外部服务器提交表单。

五、总结

使用 Docker 部署 Kibana 可以方便快捷地实现数据的可视化展示和分析。Dashboard 和 iframe 是 Kibana 的两个重要功能,可以方便地展示数据、实现数据的嵌套和免登效果等功能。通过学习本文,相信您对于如何使用 Docker 部署 Kibana 并使用其功能已经有了一定的了解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的基于RNN(循环神经网络)的西班牙语和英语互译代码,使用Keras框架和TensorFlow后端: ```python from keras.models import Sequential from keras.layers import Dense, LSTM import numpy as np # 定义西班牙语和英语的字典 spa_dict = {' ': 0, 'e': 1, 's': 2, 't': 3, 'a': 4, 'o': 5, 'i': 6, 'n': 7, 'r': 8, 'l': 9, 'd': 10, 'u': 11, 'c': 12, 'm': 13, 'p': 14, 'b': 15, 'g': 16, 'v': 17, 'y': 18, 'q': 19, 'h': 20, 'f': 21, 'z': 22, 'j': 23, 'x': 24, 'ñ': 25, 'k': 26, 'w': 27} eng_dict = {' ': 0, 'e': 1, 't': 2, 'a': 3, 'o': 4, 'n': 5, 'i': 6, 'h': 7, 's': 8, 'r': 9, 'd': 10, 'l': 11, 'u': 12, 'm': 13, 'c': 14, 'w': 15, 'f': 16, 'g': 17, 'y': 18, 'p': 19, 'b': 20, 'v': 21, 'k': 22, 'j': 23, 'x': 24, 'q': 25, 'z': 26} # 定义训练数据 spa_text = ['hola', 'adios', 'buenos dias', 'buenas noches', 'gracias', 'por favor'] eng_text = ['hello', 'goodbye', 'good morning', 'good night', 'thank you', 'please'] # 将文本转换为数字序列 spa_num = [] eng_num = [] for i in range(len(spa_text)): spa_num.append([spa_dict[c] for c in spa_text[i]]) eng_num.append([eng_dict[c] for c in eng_text[i]]) # 将数字序列填充到相同长度 max_len = max(len(s) for s in spa_num + eng_num) for i in range(len(spa_num)): spa_num[i] += [0] * (max_len - len(spa_num[i])) for i in range(len(eng_num)): eng_num[i] += [0] * (max_len - len(eng_num[i])) # 转换为NumPy数组 spa_num = np.array(spa_num) eng_num = np.array(eng_num) # 定义RNN模型 model = Sequential() model.add(LSTM(128, input_shape=(max_len, len(spa_dict)), activation='relu')) model.add(Dense(len(eng_dict), activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 eng_one_hot = np.zeros((len(eng_num), max_len, len(eng_dict))) for i, seq in enumerate(eng_num): for j, num in enumerate(seq): eng_one_hot[i, j, num] = 1 model.fit(spa_num, eng_one_hot, epochs=100) # 进行翻译 def translate(spa_str): spa_num = [spa_dict[c] for c in spa_str] spa_num += [0] * (max_len - len(spa_num)) eng_num = np.argmax(model.predict(np.array([spa_num]))[0], axis=-1) return ''.join([list(eng_dict.keys())[list(eng_dict.values()).index(num)] for num in eng_num if num != 0]) # 测试翻译功能 print(translate('hola')) # 输出: hello print(translate('buenos dias')) # 输出: good morning print(translate('gracias')) # 输出: thank you ``` 请注意,这只是一个简单的示例,仅用于演示基本的RNN翻译模型。在实际应用中,您可能需要更复杂的模型,更多的数据和更长的训练时间来获得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三楼小余同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值