本文将介绍如何使用 DataEase 制作一个看板,来实时分析和监控 1Panel 面板中的应用、网站、定时任务的状态,以及 SSH、WEB 登录日志等信息,方便我们快速查看服务器资源使用情况,发现异常登录信息等。
接下来就跟随文章一起来制作一个属于自己的 1Panel 数据看板吧!
注意:本文提到的数据源插件基于 DataEase v1.18.9 版本,未兼容最新版本,请安装 1.18.9 版本。
制作完成的仪表板效果如图:
快速制作自己的 1Panel 看板 {#%E5%BF%AB%E9%80%9F%E5%88%B6%E4%BD%9C%E8%87%AA%E5%B7%B1%E7%9A%84-1panel-%E7%9C%8B%E6%9D%BF}
安装 DataEase {#%E5%AE%89%E8%A3%85-dataease}
++DataEase++ 是一款开源的数据可视化分析工具,能够帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进、优化与预警。DataEase 能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。
1Panel 应用商店中提供了 DataEase 应用,点击安装即可快速部署,安装时需编辑 compose,将版本号修改未 v1.18.9。关于 DataEase 如何使用,可以查看教学视频:DataEase 教学视频。
注意:本文提到的数据源插件基于 DataEase v1.18.9 版本,未兼容最新版本,安装时需勾选"编辑 compose 文件",将版本号修改为 v1.18.9
上传数据源插件 {#%E4%B8%8A%E4%BC%A0%E6%95%B0%E6%8D%AE%E6%BA%90%E6%8F%92%E4%BB%B6}
++1Panel++ 所使用的数据库是 SQLite 数据库。++SQLite++ 是一款开源的 SQL 数据库引擎,数据存储在一个单一的文件中,稳定、跨平台且向后兼容。
++DataEase++ 中没有 SQLite 数据源,所以我按照官方文档开发了一个数据源插件。 DataEase 的插件扩展模式可以在不修改源代码情况下通过示例代码快速开发数据源、视图,可扩展性和易用性都非常棒。
直接下载打包好的插件包上传即可使用,下载链接: Releases · North-CS/dataease-extensions (github.com)。
插件源码:++North-CS/dataease-extensions: DataEase 插件 (++++github.com++++)++。
在 DataEase 的插件管理页面上传 SQLite 插件操作如图:
挂载数据库文件 {#%E6%8C%82%E8%BD%BD%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6}
因为 SQLite 是基于文件的数据库,需要访问数据库文件方能读取数据库中的数据。而 DataEase 是通过 Docker 方式运行,所以需要将 SQLite 数据库文件挂载到 DataEase 容器中方能读取数据。
使用 1Panel 部署的 DataEase 挂载数据库文件 {#%E4%BD%BF%E7%94%A8-1panel-%E9%83%A8%E7%BD%B2%E7%9A%84-dataease-%E6%8C%82%E8%BD%BD%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6}
如果你是使用 1Panel 部署的 DataEase,按照此步骤挂载
- 编辑应用
- 修改 compose 文件,添加路径挂载配置并重建应用
- 检查配置是否生效
使用安装包部署的 DataEase 挂载数据库文件 {#%E4%BD%BF%E7%94%A8%E5%AE%89%E8%A3%85%E5%8C%85%E9%83%A8%E7%BD%B2%E7%9A%84-dataease-%E6%8C%82%E8%BD%BD%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6}
如果你是通过安装包安装的 DataEase, 按此步骤挂载:
- 编辑DataEase 安装目录的 docker-compose.yml 文件
|--------------------------------------| | vim /opt/dataease/docker-compose.yml |
按照如图所示格式添加挂载目录,以冒号分隔,前半部分 /opt/1panel/db 为数据库文件在虚拟机中的存放目录,后半部分 /opt/sqlite/1pabel 为挂载到容器中的目录。
- 重载 DataEase 服务,使配置生效
|---------------------------------------------------------------------------------------| | # 重载 DataEase 服务 dectl reload # 检查挂载目录是否正确 docker exec dataease ls /opt/sqlite/1panel |
添加应用 {#%E6%B7%BB%E5%8A%A0%E5%BA%94%E7%94%A8}
使用 DataEase 中的应用,可以快速创建第三方系统仪表板,应用可以将仪表板及其用到的数据集、数据源关联关系一并创建,使标准系统对接、多环境仪表板迁移更方便快捷。
使用 admin 用户登录 DataEase 系统,进入系统管理->应用管理页面,上传应用。应用下载地址:++1Panel 数据看板 | DataEase 模板应用市场++
切换至"应用"页面,点击 1Panel 看板的"应用"按钮
选择仪表板相关数据的存放位置,填写数据源名称,数据库文件路径、日志模式。
|-----------------------------------------------------------------------------------------------------------------------------------| | 参数说明: 数据库:SQLite 数据库文件路径,因为我们在"挂载数据库文件"中将 1Panel 的数据库文件挂载到了 /opt/sqlite/1panel,所以此处填写 /opt/sqlite/1panel/1Panel.db 日志模式:选择 WAL 即可 |
创建成功后即可在仪表板中查看和分析自己的 1Panel 看板数据
分析 SSH 登录日志、防火墙端口规则等数据 {#%E5%88%86%E6%9E%90-ssh-%E7%99%BB%E5%BD%95%E6%97%A5%E5%BF%97%E3%80%81%E9%98%B2%E7%81%AB%E5%A2%99%E7%AB%AF%E5%8F%A3%E8%A7%84%E5%88%99%E7%AD%89%E6%95%B0%E6%8D%AE}
在 1Panel 中,SSH 日志、防火墙端口开通情况等信息是没有存储在数据库中的,必须通过 API 接口才能获取这些信息,那么如何将这些数据接入到 DataEase 的仪表板中来展示呢?下面就跟着本文一步一步添加 API 数据并在看板中展示为图表。
添加 API 数据源 {#%E6%B7%BB%E5%8A%A0-api-%E6%95%B0%E6%8D%AE%E6%BA%90}
DataEase 支持接入 API 数据来分析,首先,需要在数据源页面添加一个 API 数据源。
DataEase 会把 API 的返回结果解析为一个数据表,点击添加数据表。
填写 API 的请求信息,包括请求方式、请求地址、请求头、请求体等。
其中,Cookie 信息可以在访问 1Panel 面板时打开浏览器控制台获取,写法:psession=6f765269-6ebd-496a-a771-d5050a3f7b55
API 信息可以通过访问 1Panel 的 swagger 文档页面查看,访问地址:http://<服务器 IP>:<端口>/1panel/swagger/index.html#/SSH
API 说明 {#api-%E8%AF%B4%E6%98%8E}
此处列出部分 API 说明,你可以直接使用这些参数创建 API 数据源。
1. 查询 SSH 日志列表
请求方式:POST
请求地址:http://<1Panel 服务 IP>:<1Panel 服务端口>/api/v1/hosts/ssh/log
请求头:Cookie:psession=<Cookie 中的 psession 值>
请求体:
|---------------------------------------------------| | { "status": "All", "page": 1, "pageSize": 99999 } |
数据结构:code.data.logs[*]
2. 查询防火墙端口配置列表
请求方式:POST
请求地址:http://<1Panel 服务 IP>:<1Panel 服务端口>/api/v1/hosts/firewall/search
请求头:Cookie:psession=<Cookie 中的 psession 值>
请求体:
|---------------------------------------------------| | { "type": "port", "page": 1, "pageSize": 999999 } |
数据结构:data.items[*]
3. 查询防火墙 IP 规则列表
请求方式:POST
请求地址:http://<1Panel 服务 IP>:<1Panel 服务端口>/api/v1/hosts/firewall/search
请求头:Cookie:psession=<Cookie 中的 psession 值>
请求体:
|------------------------------------------------------| | { "type": "address", "page": 1, "pageSize": 999999 } |
数据结构:data.items[*]
4. 查询 CPU/内存/负载 实时数据
请求方式:GET
请求地址:http://<1Panel 服务 IP>:<1Panel 服务端口>/api/v1/dashboard/current/all/all
请求头:Cookie:psession=<Cookie 中的 psession 值>
请求体:无
数据结构:data.*
添加 API 数据集 {#%E6%B7%BB%E5%8A%A0-api-%E6%95%B0%E6%8D%AE%E9%9B%86}
添加数据集前,可以创建一个文件夹分类整理自己的数据集
添加 API 数据集
编辑仪表板,添加 SSH 日志分析 {#%E7%BC%96%E8%BE%91%E4%BB%AA%E8%A1%A8%E6%9D%BF%EF%BC%8C%E6%B7%BB%E5%8A%A0-ssh-%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90}
API 数据准备完成后就可以在仪表板中制作图表了。接下来可以跟随本文将"计划任务执行次数"修改为"SSH 登录次数"。
将 date(登录时间)、status(登录状态)、记录数 分别拖入右侧的类别轴、子类别、值轴框中即可使柱状图中展示每天 SSH 登录成功、失败的次数。
最终效果 {#%E6%9C%80%E7%BB%88%E6%95%88%E6%9E%9C}
完成以上步骤后,属于自己的 1Panel 数据看板就制作完成了。如果想做一些别的调整,可以根据自己的需求对数据和仪表板进行修改。