我想开发一个脚本来检查 Essbase 应用程序的状态(运行与否)(例如,每 15 分钟一次)。
如果 Essbase 应用程序未运行,它将通过电子邮件向用户或应用程序管理员发送警报。
Essbase 中没有任何内置功能可以为您执行此操作。您确实需要根据您要完成的两个不同的事情来看待这一点:
至于第 1 项,至少有两条路可以走。我相信您可以使用 MaxL(Essbase 的自动化语言)来确定应用程序/多维数据集是否正在运行。例如,您可以使用 MaxL 检查多维数据集的状态,将脚本输出到文本文件,然后扫描该文本文件以查找多维数据集是否正在运行的正确行/指示符。这在技术上可能有效,但它不是我的首选。您还必须对此进行开发,以便在服务器本身未运行的情况下,它会触发您想要的特定操作。
另一种方法(这是我的首选)是使用 Essbase Java API 来确定应用程序/多维数据集是否正在运行。尽管您可能不熟悉 Java,但对我来说这是实现此功能的最简洁的方式。您将使用 API 连接到服务器,如果与服务器的连接成功,您可以检查应用程序/多维数据集的状态。如果多维数据集或服务器关闭/停止,您可以执行适当的操作。您还可以使用 Java 电子邮件库之一从 Java 本身发送电子邮件。
您还可以从命令行发送电子邮件。它在 Unix/Windows 之间的细节有所不同,但一般来说,如果您可以指定 SMTP 服务器、电子邮件地址、主题、正文和其他参数,它就可以正常工作。我见过并使用过免费可用的电子邮件客户端,它们完全在命令行上工作,并且可以很好地处理这个用例。
一旦一切都被开发和测试,它只是一个简单的安排它每 15 分钟运行一次,或者你想要运行它的频率。
正如我所提到的,MaxL 是 Essbase 的脚本语言。Essbase 服务器上有一个解释 MaxL 脚本的程序。MaxL 语言在 EPM 文档中有大量文档。作为一个非常简单的示例,您可以编写如下所示的 MaxL 脚本:
login "admin" "password" on "localhost";
display application "Sample";
如果您在 Linux/Unix 服务器上运行,那么您可以按如下方式运行脚本:
startMaxl.sh your_script.msh
然后,此脚本会将不同应用程序属性的基于文本的网格输出到控制台。
该display application
命令将显示的列之一与应用程序状态有关,如果应用程序已加载/启动或其他。从理论上讲,要使此解决方案起作用,您需要将 MaxL 的脚本输出发送到文件,然后扫描文件以查找正确的文本并决定是否需要采取措施。虽然这种方法可行,但也存在风险。这就是为什么我认为 Java(Essbase 的首选 API)更适合解决这个问题。