goaccess 是一个不错的日志分析工具,包含了json 数据同时支持基于websocket 的实时数据处理,当然我们可以通过jsonpath
的exporter 转换为支持promethues 的metrics,还是很方便的

环境准备

  • docker-compose 文件
version: "3"
services:
metrics:
image: sunbird/prometheus-jsonpath-exporter
volumes:
- "./conf/config.yml:/etc/prometheus-jsonpath-exporter/config.yml"
ports:
- "9158:9158"
command: /etc/prometheus-jsonpath-exporter/config.yml
g:
image: grafana/grafana
ports:
- "3000:3000"
p:
image: prom/prometheus
volumes:
- "./conf/prometheus.yml:/etc/prometheus/prometheus.yml"
ports:
- "9090:9090"
log:
image: dalongrong/goaccess-geo
ports:
- "7890:7890"
volumes:
- "./data:/srv/data"
- "./logs:/srv/logs"
- "./html:/srv/report"
- "./geoip/:/src/geoip/"
web:
image: nginx
ports:
- "8080:80"
volumes:
- "./html/:/usr/share/nginx/html/"
  • prometheus 配置

    conf/prometheus.yml

scrape_configs:
- job_name: go_access
metrics_path: /
static_configs:
- targets: ['metrics:9158']
  • jsonpath exporter 配置

    conf/config.yml

exporter_port: 9158 # Port on which prometheus can call this exporter to get metrics
log_level: info
json_data_url: http://web/app.json # Url to get json data used for fetching metric values
metric_name_prefix: go_access # All metric names will be prefixed with this value
metrics:
- name: total_request # Final metric name will be go_access_total_request
description: Number of total request
path: $.general.total_requests
  • goaccess 配置

    主要是添加支持json 的处理data/goaccess.conf

geoip-database /src/geoip/GeoLiteCity.dat
log-format COMBINED
real-time-html true
log-file /srv/logs/access.log
output /srv/report/index.html
output /srv/report/app.json
  • 说明
    metrics 很简单,就是通过jsonpath 获取请求的总数

运行&&测试

  • 启动
docker-compose up -d
  • 效果
    goaccess

    jsonpath exporter metrics

    prometheus

说明

这个只是一种简单的处理实际上我们可以基于其他的nginx 或者logger exporter 进行prometheus metrics 的处理,对于需要进行离线日志请求分析的,
也是一种不错的方案,需要的操作比较少,但是可以帮助我们分析好多有用的信息

参考资料

https://github.com/project-sunbird/prometheus-jsonpath-exporter
https://github.com/rongfengliang/goaccess-geoip-docker-compose-demo
https://goaccess.io/
https://goessner.net/articles/JsonPath/index.html#e2

 
 
 
 

goaccess 通过jsonpath 转换为prometheus metrics的更多相关文章

  1. 使用haproxy 2.0 prometheus metrics 监控系统状态

    haproxy 2.0 已经发布一段时间了,提供内部直接暴露的prometheus metrics 很方便 ,可以快速的监控系统的状态 以下是一个简单的demo 环境准备 docker-compose ...

  2. Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!

    Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位.本文即基于最佳实践的 Metr ...

  3. 使用golang编写prometheus metrics exporter

    metrcis输出 collector.go package main import ( "github.com/prometheus/client_golang/prometheus&qu ...

  4. 编写一个简单的基于jmespath 的prometheus exporter

    目的很简单,因为系统好多监控指标是通过json 暴露的,并不是标准的prometheus metrics 格式,处理方法 实际上很简单,我们可以基于jsonpath 解析json数据,转换为prome ...

  5. 手把手教你使用 Prometheus 监控 JVM

    概述 当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控 ...

  6. 使用JMX Exporter监控Rainbond上的Java应用

    场景 Prometheus 社区开发了 JMX Exporter 用于导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据.当您的 Java 应用部署在Rainbond上后 可通过 ...

  7. 自定义Metrics:让Prometheus监控你的应用程序

    前言 Prometheus社区提供了大量的官方以及第三方Exporters,可以满足Prometheus的采纳者快速实现对关键业务,以及基础设施的监控需求. 如上所示,一个简单的应用以及环境架构.一般 ...

  8. 关于Prometheus监控的思考:多标签埋点及Mbean

    使用 grafana+prometheus+jmx 作为普通的监控手段,是比较有用的.我之前的文章介绍了相应的实现办法. 但是,按照之前的实现,我们更多的只能是监控 单值型的数据,如请求量,tps 等 ...

  9. 《为什么说 Prometheus 是足以取代 Zabbix 的监控神器?》

    为什么说 Prometheus 是足以取代 Zabbix 的监控神器?   Kuberneteschina 致力于提供最权威的 Kubernetes 技术.案例与Meetup! ​关注他 12 人赞同 ...

随机推荐

  1. redis缓存服务器集群搭建

    一.安装redis 1.下载redis [root@redis ~]# wget http://download.redis.io/releases/redis-4.0.11.tar.gz 2.安装编 ...

  2. Django2.1.5使用xadmin打造适合国人的后台管理系统

    python做web开发的话,flask.django是比较火的框架了,django是一个比较大的框架,也是一个快速开发利器.但是,django自带的后台admin不太好看,也不太符合我们国人的习惯, ...

  3. Kotlin 循环控制

    For 循环 for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下: for (item in collection) print(item) 循环体可以是一个代码块: for ...

  4. postman(一):主界面模块解析

    在做接口测试时经常会用到postman,但是一直没有总结过,太过零散,这次找了一些好的资料,结合自己平时所用到的功能,总结一波 打开postman,主界面如下 左侧菜单 1.History标签 里面存 ...

  5. django使用小结

    一.静态文件的使用 二.csrf跨站访问安全机制设置 三.MODEL模型使用

  6. 『Python CoolBook』Cython

    github地址 使用Cython导入库的话,需要一下几个文件: .c:C函数源码 .h:C函数头 .pxd:Cython函数头 .pyx:包装函数 setup.py:python 本节示例.c和.h ...

  7. 数组和List以指定的方式拼接成字符串类型

    /// <summary> /// list转换成格式的字符串 /// </summary> /// <param name="param">拼 ...

  8. sevrlet进行用户名密码校验

    在eclipse中建立了web项目,实现注册和登录还有在个人中心显示用户名密码 注册功能 源码如下 package com.sevlet.demo; import java.io.IOExceptio ...

  9. linux是什么,有什么特点

    (1)Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持 ...

  10. Python *Mix_w6

    is 和 == 小数据池 python中有两个数据类型存在小数据池:数字int范围 -5 ~ 256 字符串中如果有特殊字符+ - * / @ 等等,他们的内存地址就可能不一样 字符串中单个*20以内 ...