-
Notifications
You must be signed in to change notification settings - Fork 706
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. |
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: