lunimous 可以开启 dashborad
rgw 通过 prometheus-nginxlog-exporter 可以解析 Nginx 日志,还有一些正则可以去处理,然后通过 relabel 的配置,让其在指标数据上打上标签。

civetweb 没有在日志记录请求返回的时间,所以考虑用 Nginx 来替换,为了能给 Ceph RGW 加一个请求相关的监控,所以需要去解析日志,在 prometheus-nginxlog-exporter 中,通过配置文件,可以把标签和端口等设置好,然后让 prometheus 加上这个 endpoint 就可以拉出来数据了。

listen {
  port = 4040
enable_experimental = true
namespace "nginx" {
  source = {
    files = [
      "/var/log/nginx/access.log"
  format = "$remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$request_time\""
  labels {
    app = "default"
  #relabel "request" {
  #  from = "request"
  relabel "bucket" {
    from = "request"
    split = 2
    match "^/general__lingqu/.*" {
      replacement = "general__lingqu"

Nginx 日志。

xx.xx.xxx.x - - [26/Jun/2020:01:23:37 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/_SUCCESS HTTP/1.1" 200 0 "0.001"
xx.xx.xxx.x - - [26/Jun/2020:01:23:43 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00000 HTTP/1.1" 200 1165212977 "6.006"
xx.xx.xxx.x - - [26/Jun/2020:01:23:49 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00001 HTTP/1.1" 200 1180678766 "6.130"
xx.xx.xxx.x - - [26/Jun/2020:01:23:55 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00002 HTTP/1.1" 200 1181307932 "6.049"
xx.xx.xxx.x - - [26/Jun/2020:01:24:01 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00003 HTTP/1.1" 200 1207342395 "6.138"
xx.xx.xxx.x - - [26/Jun/2020:01:24:08 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00004 HTTP/1.1" 200 1198727695 "6.080"
xx.xx.xxx.x - - [26/Jun/2020:01:24:14 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00005 HTTP/1.1" 200 1206446826 "6.137"
xx.xx.xxx.x - - [26/Jun/2020:01:24:20 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00006 HTTP/1.1" 200 1204772146 "6.144"
xx.xx.xxx.x - - [26/Jun/2020:01:24:26 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00007 HTTP/1.1" 200 1165911854 "5.985"
xx.xx.xxx.x - - [26/Jun/2020:01:24:32 +0800] "GET /general__lingqu/kp/out/390280/n1590907415729/107916/20200601220441/part-00008 HTTP/1.1" 200 1179420268 "6.077"

prometheus-nginxlog-exporter 采集到的指标。

# HELP nginx_http_response_count_total Amount of processed HTTP requests
# TYPE nginx_http_response_count_total counter
nginx_http_response_count_total{app="default",bucket="",method="GET",status="200"} 1
nginx_http_response_count_total{app="default",bucket="general__lingqu",method="DELETE",status="204"} 2
nginx_http_response_count_total{app="default",bucket="general__lingqu",method="GET",status="200"} 214
nginx_http_response_count_total{app="default",bucket="general__lingqu",method="HEAD",status="200"} 8474
nginx_http_response_count_total{app="default",bucket="general__lingqu",method="PUT",status="200"} 5
# HELP nginx_http_response_size_bytes Total amount of transferred bytes
# TYPE nginx_http_response_size_bytes counter
nginx_http_response_size_bytes{app="default",bucket="",method="GET",status="200"} 338
nginx_http_response_size_bytes{app="default",bucket="general__lingqu",method="DELETE",status="204"} 0
nginx_http_response_size_bytes{app="default",bucket="general__lingqu",method="GET",status="200"} 2.1549611919e+10
nginx_http_response_size_bytes{app="default",bucket="general__lingqu",method="HEAD",status="200"} 0
nginx_http_response_size_bytes{app="default",bucket="general__lingqu",method="PUT",status="200"} 0
# HELP nginx_http_response_time_seconds Time needed by NGINX to handle requests
# TYPE nginx_http_response_time_seconds summary
nginx_http_response_time_seconds{app="default",bucket="",method="GET",status="200",quantile="0.5"} NaN
nginx_http_response_time_seconds{app="default",bucket="",method="GET",status="200",quantile="0.9"} NaN
nginx_http_response_time_seconds{app="default",bucket="",method="GET",status="200",quantile="0.99"} NaN
nginx_http_response_time_seconds_sum{app="default",bucket="",method="GET",status="200"} 0.002
nginx_http_response_time_seconds_count{app="default",bucket="",method="GET",status="200"} 1
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="DELETE",status="204",quantile="0.5"} 0.002
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="DELETE",status="204",quantile="0.9"} 0.009
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="DELETE",status="204",quantile="0.99"} 0.009
nginx_http_response_time_seconds_sum{app="default",bucket="general__lingqu",method="DELETE",status="204"} 0.011
nginx_http_response_time_seconds_count{app="default",bucket="general__lingqu",method="DELETE",status="204"} 2
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="GET",status="200",quantile="0.5"} 0.014
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="GET",status="200",quantile="0.9"} 0.112
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="GET",status="200",quantile="0.99"} 7.037
nginx_http_response_time_seconds_sum{app="default",bucket="general__lingqu",method="GET",status="200"} 115.89000000000006
nginx_http_response_time_seconds_count{app="default",bucket="general__lingqu",method="GET",status="200"} 214
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="HEAD",status="200",quantile="0.5"} 0.002
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="HEAD",status="200",quantile="0.9"} 0.002
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="HEAD",status="200",quantile="0.99"} 0.024
nginx_http_response_time_seconds_sum{app="default",bucket="general__lingqu",method="HEAD",status="200"} 22.99799999999861
nginx_http_response_time_seconds_count{app="default",bucket="general__lingqu",method="HEAD",status="200"} 8474
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="PUT",status="200",quantile="0.5"} NaN
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="PUT",status="200",quantile="0.9"} NaN
nginx_http_response_time_seconds{app="default",bucket="general__lingqu",method="PUT",status="200",quantile="0.99"} NaN
nginx_http_response_time_seconds_sum{app="default",bucket="general__lingqu",method="PUT",status="200"} 0.839
nginx_http_response_time_seconds_count{app="default",bucket="general__lingqu",method="PUT",status="200"} 5

Reference

  1. https://github.com/martin-helmich/prometheus-nginxlog-exporter
  2. https://www.martin-helmich.de/en/blog/monitoring-nginx.html
[PATHS-TO-LOGFILES...] 使用配置文件: $ ./prometheus-nginxlog-exporter -config-file /path/to/config.hcl Prometheus监控Nginx有两种方式。一种是通过nginx_exporter监控,需要开启nginx_stub_status,主要是nginx自身的status信息,metrics数据相对较少;另一种是使用nginx-vts-exporter监控,但是需要在编译nginx的时候添加nginx-module-vts模块,监控数据较多,提供了包含server、upstream以及cache的相关监控指标,指标更加丰富,所以采用nginx-vts-exporter实现对nginx监控NGINX Prometheus 导出器使使用 Prometheus 监控 NGINXNGINX Plus 成为可能。 通过公开了一些指标。 通过和提供了一组更丰富的指标。 NGINX Prometheus 导出器从单个 NGINXNGINX Plus 获取指标,将指标转换为适当的 Prometheus 指标类型,最后通过 HTTP 服务器公开它们以供收集。 在本节中,我们将展示如何为 NGINXNGINX Plus 快速运行 NGINX Prometheus Exporter。 关于 NGINX 入口控制器的说明 如果您想将 NGINX Prometheus 导出器与 for Kubernetes 一起使用,请参阅以获取安装说明。 我们假设您已经安装了 PrometheusNGINXNGINX Plus。 Usage of: -config.file string Nginx log exporter configuration file name. (default "config.yml") -web.listen-address string Address to listen on for the web 基于 prometheus 监控 nginx 可选两个 exporter,一个是通过 nginx_exporter 主要是获取 nginx-status 中的内建的指标,nginx 自身提供 status 信息,较为简单,promethues 中对应的 metrics 也较少。另外一个是可以通过 nginx-vts-exporter 监控更多的指标,但 nginx-vts-exporter 依赖在编译nginx 的时候添加 nginx-module-vts 模块来实现。vts 提供了访问虚拟主机状态的信息, 2021年2月26日,我的第一次开源项目代码贡献被合并了。 这完成了我一个宿愿。几年前老罗向 OpenSSL 捐献手机发布会门票款,我在上班的地铁上看到《隐形战友》这篇文章,有点激动,许下一个心愿:此生哪怕为开源项目贡献一行代码。后来在做模型开发的时候开始参与社区,翻译了一些 Flink 的文档,Flink 的大部分维护者是国人,主力是阿里。大项目要想参与代码贡献是比较难的,尤其是真正有意义的代码,做一做 lint 不能算。所以我先从翻译文档开始,在翻译的过程中可以比较细致的学习项目的功能,同时提高英语读 文章目录一、prometues部署tar包安装下载安装prometues配置启动脚本启动二、prometues的插件安装与使用1. prometues的插件之pushgateway下载pushgateway设置启动脚本配置和使用三、grafana安装配置下载访问修改密码使用配图 一、prometues部署 tar包安装 prometues官网:https://prometheus.io/download/ [root@VM-7-201-centos ~]# wget https://githu location /automation-api/ { proxy_pass http://serverstatistics-automation-api-dev:9980/; location /utilization/ { proxy_pass http://serverstatistics-utilization-... Prometheus - 普罗米修斯 文章目录Prometheus - 普罗米修斯计划 及 参考文章介绍安装Promotheusexporter 各种导出器 -> Promotheus安装配置node_exporter配置Promotheus 拉取数据安装Grafana花里胡哨的仪表盘 罒ω罒日志监控 -> Promotheusmtail -测试安装配置mtail配置普罗米修斯调整mtail配置-日志分析栗子-统计报错原因日志监控小结小结其他 计划 及 参考文章 Prometheus jenkins实例似乎离线 jenkins没有网络,报错 UnknownHostException,如果你尝试了很多文章都提到的替换url地址,但是没什么用,说明你的jenkins可能并没有网络。 如果是用docker启动的jenkins,需要添加参数docker run -it --rm --network=host jenkins /bin/bash,这样容器才能使用到物理机的网络。 如果是k8s部署的jenkins,则需要添加hostNetwork: true字段,加在跟container字段同级