{"id":44778788,"url":"https://github.com/perforce/p4prometheus","last_synced_at":"2026-02-16T07:18:09.144Z","repository":{"id":44777021,"uuid":"198657667","full_name":"perforce/p4prometheus","owner":"perforce","description":"[Community Supported] Perforce (Helix Core) interface for writing Prometheus metrics from real-time analysis of p4d log files.","archived":false,"fork":false,"pushed_at":"2026-01-22T17:40:56.000Z","size":1311,"stargazers_count":65,"open_issues_count":34,"forks_count":30,"subscribers_count":14,"default_branch":"master","last_synced_at":"2026-01-23T07:24:08.077Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perforce.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-07-24T15:00:40.000Z","updated_at":"2026-01-22T17:41:24.000Z","dependencies_parsed_at":"2025-11-28T10:08:27.311Z","dependency_job_id":null,"html_url":"https://github.com/perforce/p4prometheus","commit_stats":null,"previous_names":["rcowham/p4prometheus"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/perforce/p4prometheus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perforce%2Fp4prometheus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perforce%2Fp4prometheus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perforce%2Fp4prometheus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perforce%2Fp4prometheus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perforce","download_url":"https://codeload.github.com/perforce/p4prometheus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perforce%2Fp4prometheus/sbom","scorecard":{"id":564961,"data":{"date":"2025-08-11","repo":{"name":"github.com/perforce/p4prometheus","commit":"be6f93d1f45e28f6719e34852574a5be09c91418"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.9.9 not signed: https://api.github.com/repos/perforce/p4prometheus/releases/228823865","Warn: release artifact v0.9.8 not signed: https://api.github.com/repos/perforce/p4prometheus/releases/223692023","Warn: release artifact v0.9.7 not signed: https://api.github.com/repos/perforce/p4prometheus/releases/216133398","Warn: release artifact v0.9.6 not signed: https://api.github.com/repos/perforce/p4prometheus/releases/212800400","Warn: release artifact v0.9.5 not signed: https://api.github.com/repos/perforce/p4prometheus/releases/211905790","Warn: release artifact v0.9.9 does not have provenance: https://api.github.com/repos/perforce/p4prometheus/releases/228823865","Warn: release artifact v0.9.8 does not have provenance: https://api.github.com/repos/perforce/p4prometheus/releases/223692023","Warn: release artifact v0.9.7 does not have provenance: https://api.github.com/repos/perforce/p4prometheus/releases/216133398","Warn: release artifact v0.9.6 does not have provenance: https://api.github.com/repos/perforce/p4prometheus/releases/212800400","Warn: release artifact v0.9.5 does not have provenance: https://api.github.com/repos/perforce/p4prometheus/releases/211905790"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: scripts/docker/Dockerfile:2","Warn: containerImage not pinned by hash: scripts/docker/Dockerfile:41","Warn: pipCommand not pinned by hash: scripts/docker/Dockerfile:29","Warn: downloadThenRun not pinned by hash: scripts/report_instance_data.sh:221","Info:   0 out of   1 downloadThenRun dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T14:43:42.867Z","repository_id":44777021,"created_at":"2025-08-20T14:43:42.867Z","updated_at":"2025-08-20T14:43:42.867Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29502934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T05:57:17.024Z","status":"ssl_error","status_checked_at":"2026-02-16T05:56:49.929Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-16T07:18:04.681Z","updated_at":"2026-02-16T07:18:09.123Z","avatar_url":"https://github.com/perforce.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Support](https://img.shields.io/badge/Support-Community-yellow.svg)\n\n# p4prometheus\n\nThis project integrates Perforce's Helix Core Server (p4d) with the [Prometheus](https://prometheus.io/) monitoring framework and associated tools.\nIt allows real-time metrics from analysis of p4d log files and other monitoring commands to be collected by Prometheus\nand shown on Grafana dashboards. The metrics can also used for system alerting.\n\n[Prometheus has many integrations](https://prometheus.io/docs/instrumenting/exporters/) with other monitoring packages \nand other systems, so just because you are not using Prometheus doesn't mean this isn't useful! \nThis project has simple installation instructions and scripts for all the required components.\n\nThe `p4prometheus` component itself (from this project) continuously parses p4d log files and writes a summary to \na specified Prometheus compatible metrics file which can be handled via the `node_exporter`\ntextfile collector module. Other components of this package collect related metrics by interrogating p4d server\nand other associated logs.\n\nUses [go-libp4dlog](https://github.com/rcowham/go-libp4dlog) for actual log file parsing.\n\n- [p4prometheus](#p4prometheus)\n  - [Support Status](#support-status)\n  - [Overview](#overview)\n- [Grafana Dashboards](#grafana-dashboards)\n- [Detailed Installation Instructions](#detailed-installation-instructions)\n- [Metrics Available](#metrics-available)\n  - [P4Prometheus Metrics](#p4prometheus-metrics)\n  - [p4metrics Metrics](#p4metrics-metrics)\n  - [Locks Metrics](#locks-metrics)\n- [Other tools](#other-tools)\n\n## Support Status\n\nThis is currently a Community Supported Perforce tool.\n\n## Overview\n\nThis is part of a solution consisting of the following components:\n\n* [Prometheus](https://prometheus.io/) - time series metrics management system\n* [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) - (optional but recommended) high performing storage management which is Prometheus-compatible\n* [Grafana](https://grafana.com/) - The leading open source software for time series analytics\n* [node_exporter](https://github.com/prometheus/node_exporter) - Prometheus collector for basic Linux metrics\n* [windows_exporter](https://github.com/prometheus-community/windows_exporter) - Prometheus collector for Windows machines\n* [alertmanager](https://github.com/prometheus/alertmanager) - handles alerting including de-duplication etc - part of Prometheus\n\nCustom components in this project:\n\n* [p4prometheus](releases/latest) - a released binary executable\n* [p4metrics](cmd/p4metrics/README.md) - an [SDP](https://swarm.workshop.perforce.com/projects/perforce-software-sdp) compatible tools to generate simple supplementary metrics - see also [installation instructions](INSTALL.md)\n* other useful scripts and tools\n\nCheck out the Prometheus architecture below. The custom components referred to above interface with\n\"Prometheus targets\"  (or \"Jobs/exporters\") in the lower left of the diagram.\n\n[Prometheus overview](https://prometheus.io/docs/introduction/overview/)\n![Prometheus architecture](https://prometheus.io/assets/docs/architecture.svg)\n\n# Grafana Dashboards\n\nWhen installed and setup, you can get dashboards such as the following:\n\nCommands Summary:\n\n![Commands Summary](images/p4stats_cmds_summary.png)\n\nRates for command durations and count:\n\n![Commands](images/p4stats_cmds.png)\n\nActive commands (monitor):\n\n![Commands](images/p4stats_monitor.png)\n\nReplication status (there is a lag in the middle of the picture - which might exceed a configurable threshold for your site and trigger an alert):\n\n![Commands](images/p4stats_replication.png)\n\nRead/write locks held/waiting status:\n\n![Commands](images/p4stats_table_read_locks.png)\n\nDashboard alerts can be defined, as well as alert rules which are actioned by [alertmanager](https://prometheus.io/docs/alerting/alertmanager/) - see installation link below for examples.\n\n# Detailed Installation Instructions\n\nYou need to install Prometheus and Grafana using standard methods. This is typically done on a seperate VM/machine to the Perforce server itself (for security and HA reasons).\n\nNote that all the components do run on Windows but you may need an appropriate Service wrapper.\n\nSee [Detailed Installation Instructions (INSTALL.md)](INSTALL.md) in this project.\n\n# Metrics Available\n\n## P4Prometheus Metrics\n\nThe basic metrics are those implemented in [P4D Log Parsing library](https://github.com/rcowham/go-libp4dlog) which it calls.\n\nNote these metrics will all have these labels: sdpinst (if SDP), serverid. Extra metric labels are shown in the table.\n\n| Metric Name | Labels | Description |\n| ----------- | ------ | ----------- |\n| p4_prom_log_lines_read |  | A count of log lines read - useful to make sure p4prometheus is working as expected |\n| p4_prom_cmds_processed |  | A count of all cmds processed - a key metric to show as a rate |\n| p4_prom_cmds_pending |  | A count of all current cmds (not completed) - too high a value indicates issues with log commands |\n| p4_cmd_running |  | The number of running commands at any one time - a high value indicates concurrent jobs and/or locks |\n| p4_prom_cpu_user |  | User CPU used by p4prometheus |\n| p4_prom_cpu_system |  | System CPU used by p4prometheus |\n| p4_prom_memory |  | Memory used by p4prometheus (bytes) |\n| p4_sync_files_added |  | The number of files added to workspaces by syncs |\n| p4_sync_files_updated |  | The number of files updated in workspaces by syncs |\n| p4_sync_files_deleted |  | The number of files deleted in workspaces by syncs |\n| p4_sync_bytes_added |  | The number of bytes added to workspaces by syncs |\n| p4_sync_bytes_updated |  | The number of bytes updated in workspaces by syncs |\n| p4_cmd_counter | cmd | A count of completed p4 cmds (by cmd) |\n| p4_cmd_cumulative_seconds | cmd | The total in seconds (by cmd) |\n| p4_cmd_cpu_user_cumulative_seconds | cmd | The total in user CPU seconds (by cmd) |\n| p4_cmd_cpu_system_cumulative_seconds | cmd | The total in system CPU seconds (by cmd) |\n| p4_cmd_error_counter | cmd | A count of cmd errors (by cmd) |\n| p4_cmd_user_counter | user | A count of completed p4 cmds (by user) |\n| p4_cmd_user_cumulative_seconds | user | The total in seconds (by user) |\n| p4_cmd_ip_counter | ip | A count of completed p4 cmds (by IP) - can be turned off for large sites |\n| p4_cmd_ip_cumulative_seconds | ip | The total in seconds (by IP) - can be turned off for large sites |\n| p4_cmd_user_detail_counter | user, cmd | A count of completed p4 cmds (by user and cmd) - can be turned off for large sites or specify only named automation users |\n| p4_cmd_user_detail_cumulative_seconds | user, cmd | The total in seconds (by user and cmd) - as above |\n| p4_cmd_replica_counter | replica | A count of completed p4 cmds (by broker/replica/proxy) |\n| p4_cmd_replica_cumulative_seconds | replica | The total in seconds (by broker/replica/proxy) |\n| p4_cmd_program_counter | program | A count of completed p4 cmds (by program) - identifies program/app versions, e.g. p4 or p4v or API |\n| p4_cmd_program_cumulative_seconds | program | The total in seconds (by program) |\n| p4_total_read_wait_seconds | table | The total waiting for read locks in seconds (by table) |\n| p4_total_read_held_seconds | table | The total read locks held in seconds (by table) |\n| p4_total_write_wait_seconds | table | The total waiting for write locks in seconds (by table) |\n| p4_total_write_held_seconds | table | The total write locks held in seconds (by table) |\n| p4_total_trigger_lapse_seconds | trigger | The total lapse time for triggers in seconds (by trigger) |\n\n## p4metrics Metrics\n\nThese were previously written by `monitor_metrics.sh` but that has been superceded by `p4metrics`.\n\nFor backwards compatibility with history of previously collected metrics the existing metric \nnames/types/labels have been kept the same.\n\nNote these metrics will all have these labels: sdpinst (if SDP), serverid. Extra metric labels are shown in the table.\n\n| Metric Name | Labels | Description |\n| ----------- | ------ | ----------- |\n| p4_auth_ssl_cert_expires |  | Epoch seconds when Helix Auth Service SSL cert expires |\n| p4_auth_version | version | The version of the Helix Auth Service (unknown means \u003c= 2022.1) |\n| p4_change_counter |  | P4D change counter - monitor normal activity for submits etc |\n| p4_completed_cmds |  | Completed p4 commands - simple grep of log file (turned off for large logs) |\n| p4_error_count | subsystem, error_id, level | (Deprecated - monitor_metrics.sh) Server errors by id - for sudden spurts of errors |\n| p4_errors_count | subsys, severity | Server errors by subsystem and severiy (e.g. error/fatal) - for sudden spurts of errors |\n| p4_filesys_min | filesys | Value of P4D configurable filesys.*.min |\n| p4_journal_size | | Size of P4JOURNAL in bytes |\n| p4_journals_rotated | | Count of rotations of P4JOURNAL by p4metrics |\n| p4_license_expires |  | P4D License expiry (epoch secs) |\n| p4_license_info | info | P4D License info (if present) |\n| p4_license_IP | IP | P4D License IP address (if present) |\n| p4_license_support_expires |  | P4D License support expiry (epoch secs) |\n| p4_license_time_remaining |  | P4D License time remaining (secs) |\n| p4_licensed_user_count |  | P4D Licensed User count |\n| p4_licensed_user_limit |  | P4D Licensed User Limit |\n| p4_log_size | | Size of P4LOG in bytes |\n| p4_logs_file_count| | Count of files in SDP logs directory (not created for non-SDP) |\n| p4_logs_rotated | | Count of rotations of P4LOG by p4metrics |\n| p4_monitor_by_cmd | cmd | P4 running processes - counted by cmd |\n| p4_monitor_by_state | state | P4 running processes - counted by state (see 'p4 monitor show' status field) |\n| p4_monitor_by_user | user | P4 running processes - counted by user |\n| p4_monitor_max_cmd_time | user | Max time in seconds for a non-service user command in the monitor table |\n| p4_p4d_build_info | version | P4D Version/build info |\n| p4_p4d_server_type | services | P4D server type/services |\n| p4_process_count |  | (Deprecated monitor_metrics.sh) P4 running processes - counted via 'ps' |\n| p4_processes_count |  | P4 running processes - counted via 'ps' |\n| p4_pull_error_count |  | P4 pull transfers in failed state - to monitor replication status |\n| p4_pull_errors |  | P4 pull transfers failed count - to monitor replication status |\n| p4_pull_queue |  | (Deprecated monitor_metrics.sh) P4 pull files in queue count - for replication |\n| p4_pull_queue_bytes |  | P4 `pull -ls` how many bytes in archive pull queue |\n| p4_pull_queue_count |  | P4 `pull -ls` how many files in archive pull queue (not in failed state) |\n| p4_pull_queue_total |  | P4 `pull -ls` how many files in archive pull queue (total) |\n| p4_pull_replica_bytes_behind |  | How many total bytes replica is behind (`pull -ljv`) |\n| p4_pull_replica_journals_behind |  | How many journals replica is behind |\n| p4_pull_replica_lag |  | How many bytes replica is behind in current journal (-1 = error) |\n| p4_pull_replication_error |  | Set to 1 if replication error detected or 0 if working |\n| p4_replica_curr_jnl | servername | Current journal for server (from \"servers -J\" |\n| p4_replica_curr_pos | servername | Current journal for server - key measure of replication lag (from \"servers -J\" |\n| p4_sdp_checkpoint_duration |  | Time taken for last checkpoint/restore action - check for sudden increases |\n| p4_sdp_checkpoint_error | | SDP checkpoint error detected (1=error, 0=ok) |\n| p4_sdp_checkpoint_log_time |  | Time of last checkpoint log - helps check if automated jobs are running |\n| p4_sdp_verify_duration |  | How long in seconds last SDP p4verify.sh run took |\n| p4_sdp_verify_errors | type | Verify errors by type (submitted/sehlved/spec/upload) |\n| p4_sdp_verify_log_modtime |  | Epoch time when SDP log file p4verify.log was last modified |\n| p4_sdp_version | version | SDP Version |\n| p4_server_uptime |  | P4D Server uptime (seconds) |\n| p4_ssl_cert_expires | | P4D SSL certificate expiry epoch seconds |\n| p4_swarm_authorized |  | Set to 1 if SDP superuser authorized to login to Swarm via API (e.g. 401) |\n| p4_swarm_error |  | Set to 1 if swarm returns an http error (timeout or 500) (good for alerting) |\n| p4_swarm_future_tasks |  | Count of future swarm tasks from `/queue/status` URL |\n| p4_swarm_max_workers |  | Count of current swarm tasks from `/queue/status` URL |\n| p4_swarm_tasks |  | Count of current swarm tasks from `/queue/status` URL |\n| p4_swarm_version |  | Swarm version string |\n| p4_swarm_workers |  | Count of current swarm workers from `/queue/status` URL |\n\n## Locks Metrics\n\nThis is only available on Linux and requires the `lslocks` utility to be installed.\n\nThese are generated by `monitor_wrapper.sh` which calls `monitor_metrics.py`.\n\nNote these metrics will all have these labels: sdpinst (if SDP), serverid. Extra metric labels are shown in the table.\n\n| Metric Name |  | Description |\n| --- |-- | ----------- |\n| p4_locks_db_read |  | Database read locks |\n| p4_locks_db_write |  | Database write locks |\n| p4_locks_cliententity_read |  | clientEntity read locks |\n| p4_locks_cliententity_write |  | clientEntity write locks |\n| p4_locks_meta_read |  | meta db read locks |\n| p4_locks_meta_write |  | meta db write locks |\n| p4_locks_cmds_blocked |  | cmds blocked by locks |\n\n# Other tools\n\nThere are a couple of utility tools (for parsing logs with JSON output):\n\n* [p4logtail](cmd/p4logtail/README.md)\n* [p4plogtail](cmd/p4plogtail/README.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperforce%2Fp4prometheus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperforce%2Fp4prometheus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperforce%2Fp4prometheus/lists"}