如何跟踪 OpenGrok 服务的使用情况

How to track usage of OpenGrok service

我们可以通过哪些方式监控 OpenGrok,包括使用情况和特定搜索?是否有任何内置系统或可以作为扩展添加的系统?

我们是 运行 内部网上的 OpenGrok,但我们无法了解它的使用方式和使用量。

安装

目前正在通过 puppet 管道安装 OpenGrok。

class opengrok {
  package {[
    'opengrok-tomcat',
    'ctags',
  ]

...

file { '/usr/share/tomcat8/webapps/opengrok-1.0':
  ensure  => directory,
  owner   => 'root',
  group   => 'root',
  mode    => '0755',
}

我可以通过哪些方式监控 OpenGrok,包括使用情况和特定搜索 and/or 更多?

初步想法:

1) 在opengrok前面添加一个代理转发端点来记录"hits"并将其发送到某个数据库存储。这不会跟踪 opengrok 的低级别使用(即搜索查询),只会跟踪命中率。

2) 以某种方式启用 tomcat 日志并解析日志?我不确定我会从日志中获得多少信息,并且可能涉及解析。然后将此信息发送到某个数据库存储。

我们将 Nginx 用作 OpenGrok 的代理服务器,因此我们将所有 OpenGrok 搜索都记录在 /var/log/nginx/access.log* 文件中,您可以从中获取大量信息,例如:

COMPUTER-IP - USER [27/Sep/2018:10:17:30 -0300] "GET /xxxxx/search?project=sandbox_helloworld%28master%29&q=This+is+a+test&defs=&refs=&path=&hist=&type=sh HTTP/1.1" 200 3345 "https://OPENGROK-SERVER/xxxxx/search?project=sandbox_helloworld%28master%29&q=This+is+a+test&defs=&refs=&path=&hist=&type=" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"

最近的 OpenGrok 版本具有监控功能,可以提供高级(即不是每个用户或项目)概览。具体来说,您可以通过对 /metrics/prometheus 的 HTTP GET 请求获取 Prometheus 格式的指标。例如,如果您的 Web 应用程序在 http://example.com/source/ 上,那么您可以使用例如查看指标curl http://example.com/source/metrics/prometheus。未授权访问此端点。然后可以将这些指标输入 Grafana 等。 requests_* 仪表标记有请求类别(例如 searchapihistory、...),因此您可以获得很好的细分,如下所示:

有关详细信息,请参阅 https://github.com/oracle/opengrok/wiki/Monitoring#web-application