如何跟踪 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_*
仪表标记有请求类别(例如 search
、api
、history
、...),因此您可以获得很好的细分,如下所示:
有关详细信息,请参阅 https://github.com/oracle/opengrok/wiki/Monitoring#web-application
我们可以通过哪些方式监控 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_*
仪表标记有请求类别(例如 search
、api
、history
、...),因此您可以获得很好的细分,如下所示:
有关详细信息,请参阅 https://github.com/oracle/opengrok/wiki/Monitoring#web-application