我在 Tomcat 上运行了一个简单的 java Web 应用程序,我想使用Prometheus对其进行监控。我使用官方客户端向我的 java 应用程序添加了一些计数器和仪表,我在另一台服务器上安装了 Prometheus,并且不想使用 Prometheus 从我的 java 应用程序中提取指标。
普罗米修斯有大量的出口商,但我不清楚哪一个适合我的用例。我考虑过使用Prometheus 推送网关,但根据文档,Pushgateway 的唯一有效用例是捕获服务级批处理作业的结果,这不是我的情况。我应该怎么做才能从我的 java 应用程序中提取指标?
如果是 K8S,监控节点运行状况文档中提到了节点问题检测器。如果GCE中没有,我们如何使用它?它是否向仪表板提供信息或提供 API 指标?
monitoring automation kubernetes kubernetes-health-check kubernetes-helm
我想监控 Docker 引擎。我按照“使用 Prometheus 收集 Docker 指标”来配置Docker 守护进程以获取稍后可以使用 Prometheus 收集和分析的指标。
在我的PC上(操作系统版本是CentOS 7.4,Docker版本是17.12.0.ce),我将以下内容粘贴到/etc/docker/daemon.json
{
"metrics-addr" : "0.0.0.0:9323",
"experimental" : true
}
Run Code Online (Sandbox Code Playgroud)
然后,启动Prometheus实例,发现Prometheus和Docker daemon之间的连接失败。
错误日志
Get http://localhost:9323/metrics: dial tcp 127.0.0.1:9323: connect: connection refused
Run Code Online (Sandbox Code Playgroud)
接下来我能做什么?
我使用 kubernetes api 和 kube 状态指标通过 prometheus 远程监控 eks 集群。在 Kubernetes api 中,我们有一个指标container_cpu_usage_seconds_total可以给出 pod 的 CPU 使用情况。kube-state-metrics 中是否有类似的指标可以给出 cpu 使用情况。实际上,我正在尝试获取与 kubernetes api 完全不同的集群 cpu 使用率,下面是计算的 kube-state-metrics。
kube-state-metrics:
sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100- 这给出了 101%
而 kube-state-metrics 给出的12%对我来说看起来很准确。
kubernetes-api:
sum (rate (container_cpu_usage_seconds_total{id="/",kubernetes_io_hostname=~"^$Node$", job=~"$job$"}[5m])) / sum (machine_cpu_cores{kubernetes_io_hostname=~"^$Node$", job=~"$job$"}) * 100
我认为 kube-state-metric 中没有任何指标可以提供与 kubernetes-api 相比的 cpu 使用情况
提前致谢。
我有以下形式的指标:
kube_deployment_labels{deployment="application1-deployment",endpoint="http",instance="10.273.78.36:8180",job="kube-state-metrics",label_app="applcation-request-adapter",label_environment="dev",label_version="dev",namespace="default",pod="kore-prom-kube-state-metrics-654d86c799-2kqzs",service="kore-prom-kube-state-metrics"}
Run Code Online (Sandbox Code Playgroud)
我需要将命名空间执行标签替换为 dev_namespace,将 label_version 替换为 dev_version。嵌套的label_replace语句怎么写?我可以分别为它们应用相同的内容:
label_replace(kube_deployment_labels{label_app=~".*",label_environment=~"dev",label_version=~"dev"}, "dev_namespace", "$1", "namespace", "(.*)")
Run Code Online (Sandbox Code Playgroud)
和
label_replace(kube_deployment_labels{label_app=~".*",label_environment=~"dev",label_version=~"dev"}, "dev_version", "$1", "label_version", "(.*)")
Run Code Online (Sandbox Code Playgroud)
如何在prometheus中将它们组合在一起以同时重命名或替换多个标签?
我正在尝试使用 java 8 jre (服务器地址:192.168.10.3)对我的 tomcat 9 进行 jconsole 远程监控。在 tomcat9w 中我有这个 java 选项:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=5000
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=192.168.10.3
Run Code Online (Sandbox Code Playgroud)
防火墙已关闭。
带 -debug 的 Jconsole 向我展示了这一点:
java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
at java.management.rmi/javax.management.remote.rmi.RMIConnector.checkStub(RMIConnector.java:1787)
at java.management.rmi/javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:310)
at jdk.jconsole/sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:355)
at jdk.jconsole/sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313)
at jdk.jconsole/sun.tools.jconsole.VMPanel$2.run(VMPanel.java:296)
java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy8.getTotalMemorySize(Unknown Source)
at jdk.jconsole/sun.tools.jconsole.SummaryTab.formatSummary(SummaryTab.java:261)
at jdk.jconsole/sun.tools.jconsole.SummaryTab$1.doInBackground(SummaryTab.java:87)
at jdk.jconsole/sun.tools.jconsole.SummaryTab$1.doInBackground(SummaryTab.java:85)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: javax.management.AttributeNotFoundException: No such attribute: TotalMemorySize
at com.sun.jmx.mbeanserver.PerInterface.getAttribute(Unknown Source)
at com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我想知道普罗米修斯scrape_interval参数的最短时间是多少。根据Prometheus Documentation,此参数的值需要遵循正则表达式,在我看来,只允许等于或大于 1 秒的间隔,因为例如“1ms”或“0.01s”与此正则表达式不匹配。然而,在我的应用程序中,我希望以毫秒为单位进行抓取,因此我对 Prometheus 是否可以实现这一点感兴趣。
提前谢谢了!
我需要使用 terraform 为多个虚拟机创建警报。有人有一个我可以使用的简单例子,例如:
我想监视名为 Rg1 的资源组中名为 vm01、vm01、vm03 的 Azure 虚拟机。例如,我想监控 CPU 使用率和内存。有人可以帮助我提供一个简单的示例,然后我可以在此基础上进行构建吗?
我已使用prometheus 社区在我的 EKS 集群上安装了 Prometheus。
一切都按预期进行。不过我希望它从其他来源抓取数据。如何添加新目标?找不到它的文档。请帮忙。
monitoring amazon-web-services kubernetes prometheus amazon-eks
在查看此处的文档 ( https://cloud.google.com/monitoring/alerts/incidents-events#incident ) 并使用一般产品时,似乎未决事件和相关详细信息仅通过 Google Cloud Console 显示。
CLI 和 API 似乎只支持警报策略的管理,但我找不到检索未处理事件列表的方法。例如,如果特定警报策略的开放时间超过 5 个事件持续 12 小时,我希望发送警报。数据似乎存在(由 Google Cloud Console 提供),但 API 不公开。
monitoring ×10
prometheus ×6
kubernetes ×3
java ×2
amazon-eks ×1
automation ×1
azure ×1
docker ×1
gcloud ×1
grafana ×1
jconsole ×1
jmx ×1
label ×1
replace ×1
stackdriver ×1
terraform ×1
tomcat9 ×1