-
Notifications
You must be signed in to change notification settings - Fork 707
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Missing windows_process_ metrics if multiple processes share the same name (java) - v0.30.0-rc.2 #1801
Comments
@aa-matthias I remember your are having IIS as well? I feel like I have the same issue, when a IIS site has been discarded and re-added. |
yes, IIS running here as well. but haven't discarded / readded any sites yet. config is simple here (proxy only). |
Do you have any guidance? I have a VM with IIS but no plan |
🤔 this issue is not about IIS, is it? I tried the binaries of #1803 but the issue is still present here. the metric that is only reporting one java process after running the upgrade is: |
How do you try the binary from #1803? |
tried the artifacts from the action run: https://github.com/prometheus-community/windows_exporter/actions/runs/12138366080 |
Thats strange. I tested that with msedge and it works so far
In that case, I need that output for cmd:
|
I also take note that my fix in #1803 may fixes only an issue on Windows Server 2022 or higher. |
command output: \Prozess(java)\Virtuelle Bytes (max.)
\Prozess(java#1)\Virtuelle Bytes (max.)
\Prozess(java#2)\Virtuelle Bytes (max.)
\Prozess(java#3)\Virtuelle Bytes (max.)
\Prozess(java#4)\Virtuelle Bytes (max.)
\Prozess(java)\Auslagerungsdatei (max. Bytes)
\Prozess(java#1)\Auslagerungsdatei (max. Bytes)
\Prozess(java#2)\Auslagerungsdatei (max. Bytes)
\Prozess(java#3)\Auslagerungsdatei (max. Bytes)
\Prozess(java#4)\Auslagerungsdatei (max. Bytes)
\Prozess(java)\Auslagerungsdatei (Bytes)
\Prozess(java#1)\Auslagerungsdatei (Bytes)
\Prozess(java#2)\Auslagerungsdatei (Bytes)
\Prozess(java#3)\Auslagerungsdatei (Bytes)
\Prozess(java#4)\Auslagerungsdatei (Bytes)
\Prozess(java)\Private Bytes
\Prozess(java#1)\Private Bytes
\Prozess(java#2)\Private Bytes
\Prozess(java#3)\Private Bytes
\Prozess(java#4)\Private Bytes
\Prozess(java)\Auslagerungsseiten (Bytes)
\Prozess(java#1)\Auslagerungsseiten (Bytes)
\Prozess(java#2)\Auslagerungsseiten (Bytes)
\Prozess(java#3)\Auslagerungsseiten (Bytes)
\Prozess(java#4)\Auslagerungsseiten (Bytes)
\Prozess(java)\Nicht-Auslagerungsseiten (Bytes)
\Prozess(java#1)\Nicht-Auslagerungsseiten (Bytes)
\Prozess(java#2)\Nicht-Auslagerungsseiten (Bytes)
\Prozess(java#3)\Nicht-Auslagerungsseiten (Bytes)
\Prozess(java#4)\Nicht-Auslagerungsseiten (Bytes)
\Prozess(java)\E/A-Bytes gelesen/s
\Prozess(java#1)\E/A-Bytes gelesen/s
\Prozess(java#2)\E/A-Bytes gelesen/s
\Prozess(java#3)\E/A-Bytes gelesen/s
\Prozess(java#4)\E/A-Bytes gelesen/s
\Prozess(java)\E/A-Bytes geschrieben/s
\Prozess(java#1)\E/A-Bytes geschrieben/s
\Prozess(java#2)\E/A-Bytes geschrieben/s
\Prozess(java#3)\E/A-Bytes geschrieben/s
\Prozess(java#4)\E/A-Bytes geschrieben/s
\Prozess(java)\Andere E/A-Bytes/s
\Prozess(java#1)\Andere E/A-Bytes/s
\Prozess(java#2)\Andere E/A-Bytes/s
\Prozess(java#3)\Andere E/A-Bytes/s
\Prozess(java#4)\Andere E/A-Bytes/s windows_exporter scraped metrics: windows_process_virtual_bytes{process="fontdrvhost",process_id="2136"} 2.203417976832e+12
windows_process_virtual_bytes{process="java",process_id="6204"} 1.303506944e+10
windows_process_virtual_bytes{process="lsass",process_id="748"} 2.203432185856e+12 |
Thats currently a "bigger" issue. I always thought that Performance Index names are unique. They are unique as visible in our command output. However, they are only unique through WMI and Powershell invoke WMI in background. windows_exporter skips WMI and is directly asking the Windows API to gain performance counters. In that case the Index remains non unique. While design the new collector, I assume the index is unique. But now, each process overwrite the statistics before. I didn't mention that, because my dev box is Windows Server 2022 (and GitHub as well) And on Windows Server 2022, Microsoft fixed that issue on truly side, by making the index unique. They added the Process ID of the Server as suffix, making the index truly unique. I have to think about an solution, but it's very important that you found that box. |
How is the process_id label generated then? Are metrics returned in order so a counter increment can be added by windows_exporter? |
Its generated as metric from Performance counters. Technically, Process ID is just an metric like Virtual Bytes it is.
It's undocumented. But I feel that maybe is not strong enough to depend against it. |
So I identity a solution using the modern function, but it resulting into higher scrape times for the process collector (10x). So for that case, I have re-introduce the old registry based collector for this, since it was solved in a performant way. That guy had the same expericence: oshi/oshi#505 (comment) However, as I mention it earlier, I have to switch away from key value pair to lists where the name is part of the value. That solves the deduplication issue as well. But it will take time to refactor, but the plan is here. |
thanks keeping the issue updated. feel free to ping me for testing. |
Is the issue you mentioned the same as #1526. It has been resolved before, I have tested it. Is there a problem with 0.30 now? |
The issue you mention is a different. The current issue that if there are multiple java processes, you got the metric from one process. The root case is a faulty design in Windows which has been resolved in Windows 11. To preserve the compability with older versions, i have to rewrite some parts of the exporter. The issue is still resent in the last pre-release version of 0.30 and will be fixed before full release. |
@aa-matthias I'm happy to hear some feedback for the PR #1814 |
@jkroepke not seeing any windows_process metrics with the latest build |
I see, could you please try it again? |
looks good! |
Current Behavior
I do have multiple java processes running - before running the upgrade to 0.30.0-rc.2 I have received metrics for each process & pid. After upgrading only one java process is returned instead.
Expected Behavior
multiple processes sharing same process name should be exported.
Steps To Reproduce
No response
Environment
windows_exporter logs
Anything else?
No response
The text was updated successfully, but these errors were encountered: