1、关于配置文件的编写,我的配置2会匹配所有的指标,不过由于不同的人需求不一样,可以参考配置1的方式,通过VisualVM工具在MBeans中所暴露出来的对象,根据规律自行编写。举个例子比如像要获取BytesInPersec对应__consumer__offsets这个指标在VisualVM工具中如图
而此时,在Metadata栏的ObjectName栏则可以看到他的匹配方式,同类型的,使用正则替换即可,具体参考配置1就好。
2、出现过的问题:
(1):生产环境链接超时问题。
原因:kafka默认设置的单次拉取超时时间为15s,而由于生产环境主机压力大,15s获取还没有返回,导致数据总是拉取不成功。
解决方案:根据我们自己的实际情况,很多java指标是可以不要的,所以在配置中注释了除去kafka.*其他的所有指标,拉取时间维持在最多10s,基本满足需求,以后有需要再行优化(比如只拉取需要的指标,其他一律忽略等等)。
(2):Prometheus远程写入influxDB报错问题。
原因:influxDB不支持+/-Inf的字段类型,这点从日志中可以看出来。
日志:如下
prometheus | level=warn ts=2019-01-22T07:00:37.113970782Z caller=queue_manager.go:531 component=remote queue="0:http://influxdb:8086/api/v1/prom/write?db=prometheus&u=prom&p=prom" msg="Error sending samples to remote storage" count=100 err="server returned HTTP status 400 Bad Request: {\"error\":\"+/-Inf is an unsupported value for field value\"}"
解决方案:在指标页中找到返回值为+/-Inf的指标名,从配置文件中将其忽略。(待进一步验证,我设置了一个,告警减少了,但是依然存在,可能有多个指标,某些没照出来吧)
scrape_configs:
- job_name: 'my_job'
static_configs:
- targets:
- my_target:1234
metric_relabel_configs:
- source_labels: [ __name__ ]
regex: 'my_too_large_metric'
action: drop
3、一些自己使用到的指标计算,每个人的需求不一样,仅供参考(如果发现错误,请不吝批评指正)