我正在尝试使用 C# 监视另一个进程的内存。但是,Process.WorkingSet64 或 Process.PrivateMemorySize64 将输出的最大内存值为 4294967295。性能计数器也有同样的问题。
这是我的代码:
using System;
using System.Diagnostics;
namespace perfmon
{
class Program
{
static void Main(string[] args)
{
int pid;
if (int.TryParse(args[0], out pid))
{
var p = Process.GetProcessById(pid);
var ramCounter = new PerformanceCounter("Process", "Working Set", p.ProcessName);
Console.WriteLine($"ProcessName:{p.ProcessName}");
var ram = ramCounter.NextValue();
p.Refresh();
Console.WriteLine("WorkingSet64\tPrivateMemorySize64\tRam PC");
Console.WriteLine($"{p.WorkingSet64}\t{p.PrivateMemorySize64}\t\t{ram}");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在带有 .net 4.61 的 Windows Server 2012 R2 上运行。
输出:
C:\XXX\perfmon>perfmon.exe 15800
ProcessName:XXX.Windows.Services
WorkingSet64 PrivateMemorySize64 Ram PC
4294967295 4294967295 4.294967E+09
Run Code Online (Sandbox Code Playgroud)
进程的 Powershell 输出: …
所有有关监控 kafka 的指南都指出日志刷新率是观察问题的关键指标。
我们有一个适度的三节点 kafka 集群 (0.9.x),我们开始认真对待它。我继续设置 prometheus 来抓取指标(使用他们提供的 jmx_exporter),但是我没有看到日志刷新率指标流入。对其中一个代理上的 jmx 端口的进一步检查表明它没有浮出水面。
具体来说,我正在寻找这个指标 kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs
我不太懂java,所以我不确定这不仅仅是可以通过额外的标志或其他东西来纠正的问题。任何帮助,将不胜感激。
因此,在我目前正在实习的公司中,他们有大约 20 台装有公司指定软件的“技术笔记本电脑”。它们位于 C:\ 目录中。
例如:
aaa.exe 位于 C:\aaa\aaa.exe
bbb.exe 位于 C:\bbb\bbb.exe
我真正需要的是一个 .ps1 脚本来在列表中显示这些特定的可执行文件。
到目前为止我所拥有的是:
Get-ChildItem C:\ -recurse | where {$_.extension -eq ".exe"}
现在,我相信它只是编辑搜索查询,因为这给了我 C:\ 驱动器上的所有 .exe 文件,我只需要aaa和bbb。
仅供参考:我需要该脚本,以便我可以使用它来监视 zabbix 代理并查看特定软件是否在计算机上,以便我可以在 Zabbix 服务器上运行此脚本。
我在 prometheus 中有以下指标:它按秒计算 memcached 命令:
sum (irate (memcached_commands_total{instance="memcached-instance"}[5m])) by (command)
Run Code Online (Sandbox Code Playgroud)
结果:
{command="delete"} 0
{command="flush"} 0
{command="get"} 62.733333333333334
{command="incr"} 0
{command="set"} 93.43333333333334
{command="touch"} NaN
{command="cas"} 0
{command="decr"} 0
Run Code Online (Sandbox Code Playgroud)
我想按秒计算命令(不同命令没有单独的速率)。我尝试了以下公式:
sum (irate (memcached_commands_total{instance="memcached-instance"}[5m]))
Run Code Online (Sandbox Code Playgroud)
但结果是:
{} NaN
Run Code Online (Sandbox Code Playgroud)
我期望大约 155,但它是 NaN。我想是 command="touch" 罪魁祸首。可以从总和中排除 NaN 吗?
我希望 grafana 在任何给定时间报告死信队列中有多少消息。由于消息在此队列中结束的性质,因此将对在此队列中结束的消息进行评估和解析。
我已将 grafana 配置为NumberOfMessagesSent从dead-letter队列中读取,但是,该值始终为0,因为;我认为最终到达这里的消息是从另一个队列(通过 SQS)发送的。
即使我可以看到消息已发送到dead-letter队列(不是以编程方式),但是由另一个在 X 次接收后配置的队列发送。
这个问题有方法解决吗?
正如标题所暗示的,我找不到 Prometheus Adapter 和 Prometheus Operator 之间的任何区别,用于在网络上的 kubernetes 中进行监控。
谁能告诉我有什么区别?或者是否有特定的用例可以使用其中一个?
提前致谢。
我正在尝试过滤prometheus.yml. 假设以下内容是 yml 文件的一部分。如何使用中的值的正则表达式返回实例与启动,让说,prod或者qa还是其他的标签?这可以不配置relabeling吗?
ec2_sd_configs:
- region: us-east-1
access_key: access
secret_key: mysecret
profile: profile
filters:
- name: tag:Name
values:
- prod.*
- qa.*
Run Code Online (Sandbox Code Playgroud) 我从掌舵安装了稳定/普罗米修斯。默认情况下,job_namekubernetes-service-endpoints包含node-exporter和kube-state-metrics作为组件标签。我在 prometheus.yml 中添加了以下配置以包含命名空间、pod 和节点标签。
- source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: namespace
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_pod_name]
separator: ;
regex: (.*)
target_label: pod
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_pod_node_name]
separator: ;
regex: (.*)
target_label: node
replacement: $1
action: replace
Run Code Online (Sandbox Code Playgroud)
kube_pod_info{component="kube-state-metrics"}已经有了命名空间、pod 和节点标签,因此生成了导出的标签。并且该指标node_cpu_seconds_total{component="node-exporter"}现在正确地具有标签命名空间、pod 和节点。
要正确使用这些标签,我需要在上述两个指标名称中都包含这 3 个标签。为了实现这一点,我可以覆盖exported_labels 的值。我尝试添加以下配置但无济于事。
- source_labels: [__name__, exported_pod]
regex: "kube_pod_info;(.+)"
target_label: pod
- source_labels: [__name__, exported_namespace]
regex: "kube_pod_info;(.+)"
target_label: namespace
- source_labels: [__name__, exported_node]
regex: …Run Code Online (Sandbox Code Playgroud) 我们有两个不同的团队在处理不同的应用程序。我想通过使用相同的警报表达式将警报通知发送到不同的 slack 通道。我找到了一些示例,但不明白receiver: 'default'尝试添加新路由时使用的主要原因是什么?this 的作用是什么,如果它会影响 if 呢?改变这个?
同时,如果您能帮助我如何将通知发送到多个 slack 频道,我将不胜感激。我尝试过新的。
当前的alertmanager.yml
receivers:
- name: 'team-1'
slack_configs:
- api_url: 'https://hooks.slack.com/services/1'
channel: '#hub-alerts'
route:
group_wait: 10s
group_interval: 5m
receiver: 'team-1'
repeat_interval: 1h
group_by: [datacenter]
Run Code Online (Sandbox Code Playgroud)
新的alertmanager.yml
alertmanager.yml:
receivers:
- name: 'team-1'
slack_configs:
- api_url: 'https://hooks.slack.com/services/1'
channel: '#channel-1'
send_resolved: true
- name: 'team-2'
slack_configs:
- api_url: 'https://hooks.slack.com/services/2'
channel: '#channel-2'
send_resolved: true
route:
group_wait: 10s
group_interval: 5m
repeat_interval: 1h
group_by: [datacenter]
receiver: 'default'
routes:
- receiver: 'team-1'
- receiver: 'team-2'
Run Code Online (Sandbox Code Playgroud)
static_configs我的 prometheus.yml 配置文件中的目标之一使用基本身份验证进行保护。因此,在 Prometheus 目标页面中始终针对该目标显示描述为“拒绝连接”的错误。
我研究了如何设置 prometheus 以在尝试抓取该特定目标时提供安全凭据,但找不到任何解决方案。我发现的是如何scrape_config在文档中的部分进行设置。这对我不起作用,因为我还有其他不受basic_auth. 请帮我解决这个挑战。
.yml关于我的挑战,这是我的配置的一部分。
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
scrape_timeout: 5s
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:5000']
labels:
service: 'Auth'
- targets: ['localhost:5090']
labels:
service: 'Approval'
- targets: …Run Code Online (Sandbox Code Playgroud) monitoring ×10
prometheus ×6
kubernetes ×2
amazon-ec2 ×1
amazon-sqs ×1
apache-kafka ×1
c# ×1
grafana ×1
memory ×1
powershell ×1
process ×1
shell ×1
windows ×1