监控 Looker

虽然 Looker 应用监控可能看起来不是严格要求,但在客户托管的实例上进行设置非常重要。在极少数情况下,如果您的服务器出现问题,Looker 通常很难或无法帮助您解决问题,除非您能提供相应的问题发生时刻的监控信息。

应用监控

网址

您可以通过两种简单的方法验证 Looker 实例是否正在运行。

  1. /alive 附加到 Looker 实例的网址,如下所示:

    https://instance_name.looker.com/alive

    如果您的实例能够响应网络请求,您将收到 200 OK HTTP 状态代码。

  2. /availability 附加到 Looker 实例的网址,如下所示:

    https://instance_name.looker.com/availability

    此网址会对若干底层子系统执行更全面的检查,如果一切正常,还将返回一个 200 OK HTTP 状态代码作为响应。

JMX

运行 Looker 的 Java 虚拟机可以通过 JMX 受到监控。

许多监控应用(如 Zabbix 和 Nagios)都支持 JMX。如需了解详情,请参阅监控应用的文档。

修改 Looker 启动脚本

如需启用 JMX 监控,您需要修改 Looker 启动脚本。默认情况下,它命名为:

/home/looker/looker/looker

查找 Java 启动参数:

java \
  -XX:+UseG1GC -XX:MaxGCPauseMillis=2000 \
  -Xms$JAVAMEM -Xmx$JAVAMEM \
  -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps \
  -Xloggc:/tmp/gc.log  ${JAVAARGS} \
  -jar looker.jar start ${LOOKERARGS}

从 Looker 6.18 开始,Looker JAR 文件已拆分为两个单独的 JAR 文件:Looker 核心 JAR 文件和 Looker 依赖项 JAR 文件。启动后,核心 JAR 文件将自动启动依赖项 JAR 文件。这两个 JAR 文件必须位于同一目录中,以便核心 JAR 文件能够成功找到并启动依赖项 JAR 文件。

默认情况下,系统不会设置 --no-daemonise 启动选项。如果您尚未设置 --no-daemonise 选项,请在以 -Xms$JAVAMEM 开头的行后面添加一个部分:

  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.port=9910 \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.ssl=false \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.local.only=false \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.authenticate=true \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.access.file=${HOME}/.lookerjmx/jmxremote.access \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.password.file=${HOME}/.lookerjmx/jmxremote.password \

如果您已设置 --no-daemonise 启动选项,请在以 -Xms$JAVAMEM 开头的行后面添加一个部分:

  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9910 \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=true \
  -Dcom.sun.management.jmxremote.access.file=${HOME}/.lookerjmx/jmxremote.access \
  -Dcom.sun.management.jmxremote.password.file=${HOME}/.lookerjmx/jmxremote.password \

创建 .lookerjmx 目录

接下来,在 Looker 用户的主目录下创建 .lookerjmx 目录,并设置权限:

sudo su - looker
mkdir ~/.lookerjmx
chmod 700 ~/.lookerjmx
cd ~/.lookerjmx

创建 JMX 文件

使用您偏好的文本编辑器,在新目录 jmxremote.access 中创建一个文件,其中包含以下内容(您可以根据自己的环境进行自定义):

monitorRole   readonly
controlRole   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister

接下来在同一目录中创建一个名为 jmxremote.password 的文件,其中包含以下代码 使用您自己的安全密码登录:

monitorRole   some_password_here
controlRole   some_password_here

设置权限

使其在文件权限允许除 Looker 用户之外的任何人读取密码文件时,Java(以及 Looker)都不会启动。

chmod 400 jmxremote.*

重启 Looker

需要重启 Looker 才能启用 JMX。请确保您 *以 Looker 用户身份(而非根用户*)运行此命令:

cd ~/looker
./looker restart

您的 Looker 实例现已配置为使用您提供的密码在端口 9910 上进行远程 JMX 监控。您可能需要修改防火墙设置或网络 ACL,以允许监控服务器访问此端口上的网络。

主机监控

对于运行 Looker 应用的每台主机,我们建议您至少针对以下性能指标收集、绘制图表和发出提醒:

  • CPU 利用率:负载和 CPU 利用率
  • 内存利用率:已用总内存和已用交换空间
  • 磁盘使用量

提醒阈值

要建立良好的提醒阈值,首先要建立基准。通过在正常负载下运行的 Looker 实例收集性能数据。查看效果图表并观察峰值,建立基准所需的时间取决于您的业务和 Looker 使用模式。有些公司可能会在工作时间内每周以稳定、可重复的方式使用 Looker。还有一些企业可能在特定时间(例如每月月底)更频繁地使用 Looker。

一般来说,只有可采取行动的事件才应发送提醒。在无任何需要执行的操作时发送提醒会掩盖重要提醒的重要性。

您可以将以下阈值用作发送提醒的起点。如果超过以下值并持续 15 分钟或更长时间,可能需要手动干预。

指标 警告 严重 评论
CPU 负载 2 4 对于单核系统,负载通常应不超过 1。持续的高负载会导致性能不佳。
CPU 使用率 (%) 80 90 CPU 使用率高会导致性能低下。
已使用的内存百分比 60 70 内存用量高可能表示为 Java 分配的内存过多
磁盘已用百分比 80 90 确保磁盘未满。

补充说明:

  • 具有多个核心的系统可以在不降低性能的情况下处理高 CPU 负载。经验法则是,持续负载不应该大于处理器核心的数量。
  • 系统在出现性能下降之前使用的总 CPU 时间所占的百分比会随系统中的 CPU 核心数量而缩放。换言之,当 CPU 利用率为 80% 时,单核系统的性能可能不佳,而 16 核主机在利用率为 95% 时仍然可以使用。
  • 您可以通过更新主机硬件或升级到更大的实例来解决持续较高的 CPU 利用率问题。有时,您可以减少大量的定期生成的数据集或长查询派生表,或者提高其效率,以提升性能。

后续步骤

设置监控后,您就可以设置 Looker 备份了。