我试图了解 spring micromenter 的按维度/标签功能分组。我正在使用 StepMeterRegistry 并递增计数器,但没有看到所需的结果。
创建计数器为,
final MeterRegistry myRegistry = new StepMeterRegistry(config, Clock.SYSTEM) {...};
final Counter myCounter1 = myRegistry.counter("myTestCounter", "tag1", "value1");
final Counter myCounter2 = myRegistry.counter("myTestCounter", "tag2", "value2");
final Counter myCounter1n2 = myRegistry.counter("myTestCounter", "tag1", "value1", "tag2", "value2");
Run Code Online (Sandbox Code Playgroud)
计数器增量为,
myCounter1.increment();
myCounter2.increment();
myCounter1n2.increment();
Run Code Online (Sandbox Code Playgroud)
当我打印时(步骤持续时间之后),
myCounter1.measure(); => value=1.0
myCounter2.measure(); => value=1.0
myCounter1n2.measure(); => value=1.0
Run Code Online (Sandbox Code Playgroud)
而我期待的是(在步骤持续时间之后),
myCounter1.measure(); => value=2.0
myCounter2.measure(); => value=2.0
myCounter1n2.measure(); => value=1.0
Run Code Online (Sandbox Code Playgroud)
我的理解正确吗?或者我如何实现分组依据(或)选择功能?
我正在尝试使用位于 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/jcmd (Mac OS X) 的 jcmd 二进制文件运行 Java Flight Recorder。是否有命令行选项来启用与开始飞行记录 UI 上的堆统计选项相对应的堆指标:
我没有让警报管理器根据多个标签发送警报。
一般来说,发送警报电子邮件是有效的。但前提是一个标签上存在简单匹配。例如 teamB 路线正在运行。teamA路线则不然。
route:
receiver: default-receiver
routes:
- receiver: teamA
match:
environment: production
match_re:
job: ^(?:app2| app3)$
- receiver: teamB
match:
application: app1
environment: production
receivers:
- name: default-receiver
- name: teamA
- name: teamB
Run Code Online (Sandbox Code Playgroud)
语法似乎正确,因为加载警报管理器时没有错误消息:
019-07-24T08:03:59.242791707Z level=info ts=2019-07-24T08:03:59.242607527Z caller=main.go:334 msg="Loading configuration file" file=/etc/alertmanager/config.yml
Run Code Online (Sandbox Code Playgroud)
teamA路线有什么问题吗?
我正在使用https://prometheus.io/webtools/alerting/routing-tree-editor/来分析问题。可以简单地将上面的代码复制到该编辑器以可视化给定标签集的结果。
我正在使用普罗米修斯来监视一些开箱即用和一些自定义应用程序指标。对于自定义指标,我没有使用 Prometheus 客户端库,而是使用io.micrometer自定义计数器和仪表的包。
我创建的自定义指标在普罗米修斯端点中仍然可见(http://localhost:9090/actuator/prometheus)。既然如此,为什么我们还需要 Prometheus 客户端库呢?我应该使用其中一种还是两者混合使用?他们似乎使用不同类型的注册表,这使得无法将它们组合起来。
我正在使用 Prometheus 从我的 pod 中抓取指标。我感兴趣的应用程序通过一个提供访问的服务复制了几次。Prometheus 使用此服务来抓取指标。在我的应用程序中,指标设置如下:
import * as Prometheus from 'prom-client';
const httpRequestDurationMicroseconds = new Prometheus.Histogram({
name: 'transaction_amounts',
help: 'Amount',
labelNames: ['amount'],
buckets: [0, 5, 15, 50, 100, 200, 300, 400, 500, 10000],
});
const totalPayments = new Prometheus.Counter('transaction_totals', 'Total payments');
Run Code Online (Sandbox Code Playgroud)
我正在使用 helm 安装 Prometheus 并且刮取配置如下所示:
prometheus.yml:
rule_files:
- /etc/config/rules
- /etc/config/alerts
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
- job_name: transactions
scrape_interval: 1s
static_configs:
- targets:
- transaction-metrics-service:3001
Run Code Online (Sandbox Code Playgroud)
我可以看到 prometheus 内部的指标,但它似乎只来自一个 pod。例如,在 Prometheus 中,当我查询transaction_totals它时会给出: …
如果我想使用 Prometheus 捕获 Traefik 的指标,则只有在激活 insecure= true 时才有效。如果我设置 insecure=false 我会得到 404。也许有人有一个正确配置的示例。那么Traefik(V2.0 CLI)和prometheus.yml的配置。
traefik.yml 命令部分:
command:
- "--metrics=true"
- "--metrics.prometheus=true"
- "--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000"
- "--metrics.prometheus.entrypoint='metrics'"
- "--metrics.prometheus.addEntryPointsLabels=true"
- "--metrics.prometheus.addServicesLabels=true"
- "--api=true"
- "--api.dashboard=true"
- "--log.level=INFO"
- "--providers.docker=true"
- "--providers.docker.swarmmode=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesResolvers.sec.acme.email=foo@bar.com"
- "--certificatesResolvers.sec.acme.storage=/letsencrypt/acme.json"
- "--certificatesResolvers.sec.acme.httpChallenge.entryPoint=web"
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard`)"
- "traefik.http.routers.api.rule=Host(`foo.bar`)"
- "traefik.http.routers.api.service=api@internal"
- "traefik.http.routers.api.middlewares=myauth"
- "traefik.http.services.api.loadbalancer.server.port=8080"
- "traefik.http.routers.api.tls.certresolver=sec"
- "traefik.http.middlewares.myauth.basicauth.users=xxx"
Run Code Online (Sandbox Code Playgroud)
普罗米修斯.yml:
global:
scrape_interval: 10s
scrape_timeout: 10s
scrape_configs:
- …Run Code Online (Sandbox Code Playgroud) 给定一个 kubernetes 集群:
我喜欢使用度量container_memory_usage_bytes,但选择 bydeployment_name而不是pod。
只要没有部署,像container_memory_usage_bytes{pod_name=~"foo-.+"}if 这样的选择器就很棒。deployment_name=foodeployment_name=foo-bar
我想用 metric 实现同样的目标kube_pod_container_resource_limits_memory_bytes。
有办法实现这一点吗?
我需要知道 Azure 指标中的百分位数 - Web 应用程序缓慢。我正在尝试在诊断下分析 Azure 中的 Web 应用程序缓慢功能。有 3 个图例 - 第 50 个百分位、第 90 个百分位、第 95 个百分位。
所以我有 2 个指标,我需要从第一个指标获取标签值,然后查询第二个指标,其中 {param="label_values_from_1st_metric"}。例如:
metric_1{instance="abc"}- 返回 3 个时间序列:metric_1{name="my-service", env="production", host="example-0.org"}
metric_1{name="my-service", env="production", host="example-1.org"}
metric_1{name="my-service", env="production", host="example-2.org"}
metric_2{domain="exmple-0,1,2.org"}
所以问题是,如何将 label_values 传递给第二个查询?据我了解,我只能对 grafana 面板中的变量使用 label_values() ,所以我无法编写一个查询来为我做到这一点。
我正在开发一个最初为.NET 1.1开发的棕色项目,后来改编为.NET 2.0,只有一小部分.NET 3.5
我很好奇用什么样的指标来开始寻找优化和现代化拐点.
有没有人发现有用的清理和重构"遗留".NET代码的CQL查询?
metrics ×10
prometheus ×6
c# ×2
java ×2
kubernetes ×2
spring-boot ×2
.net ×1
azure ×1
cql ×1
grafana ×1
jfr ×1
jmc ×1
micrometer ×1
ndepend ×1
percentile ×1
performance ×1
promql ×1
traefik ×1