mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	feat(server/metrics): add documentation around the new metrics endpoint
This commit is contained in:
		
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -27,4 +27,4 @@ The code will: | ||||
| 1.  First load the `config.ini` file as before | ||||
| 2.  Then scan all environment variables for ones starting with `TRILIUM_` | ||||
| 3.  Parse these variables into section/key pairs | ||||
| 4.  Merge them with the config from the file, with environment variables taking precedence | ||||
| 4.  Merge them with the config from the file, with environment variables taking precedence | ||||
							
								
								
									
										110
									
								
								docs/User Guide/User Guide/Advanced Usage/Metrics.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								docs/User Guide/User Guide/Advanced Usage/Metrics.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,110 @@ | ||||
| # **Trilium Metrics API** | ||||
|  | ||||
| The Trilium metrics API provides comprehensive monitoring data about your Trilium instance, designed for external monitoring systems like Prometheus. | ||||
|  | ||||
| ## **Endpoint** | ||||
|  | ||||
| *   **URL**: `/etapi/metrics` | ||||
| *   **Method**: `GET` | ||||
| *   **Authentication**: ETAPI token required | ||||
| *   **Default Format**: Prometheus text format | ||||
|  | ||||
| ## **Authentication** | ||||
|  | ||||
| You need an ETAPI token to access the metrics endpoint. Get one by: | ||||
|  | ||||
| ``` | ||||
| # Get an ETAPI token | ||||
| curl -X POST http://localhost:8080/etapi/auth/login \ | ||||
|   -H "Content-Type: application/json" \ | ||||
|   -d '{"password": "your_password"}' | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ## **Usage** | ||||
|  | ||||
| ### **Prometheus Format (Default)** | ||||
|  | ||||
| ``` | ||||
| curl -H "Authorization: YOUR_ETAPI_TOKEN" \ | ||||
|   http://localhost:8080/etapi/metrics | ||||
|  | ||||
| ``` | ||||
|  | ||||
| Returns metrics in Prometheus text format: | ||||
|  | ||||
| ``` | ||||
| # HELP trilium_info Trilium instance information | ||||
| # TYPE trilium_info gauge | ||||
| trilium_info{version="0.91.6",db_version="231",node_version="v18.17.0"} 1 1701432000 | ||||
|  | ||||
| # HELP trilium_notes_total Total number of notes including deleted | ||||
| # TYPE trilium_notes_total gauge | ||||
| trilium_notes_total 1234 1701432000 | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ### **JSON Format** | ||||
|  | ||||
| ``` | ||||
| curl -H "Authorization: YOUR_ETAPI_TOKEN" \ | ||||
|   "http://localhost:8080/etapi/metrics?format=json" | ||||
|  | ||||
| ``` | ||||
|  | ||||
| Returns detailed metrics in JSON format for debugging or custom integrations. | ||||
|  | ||||
| ## **Available Metrics** | ||||
|  | ||||
| ### **Instance Information** | ||||
|  | ||||
| *   `trilium_info` - Version and build information with labels | ||||
|  | ||||
| ### **Database Metrics** | ||||
|  | ||||
| *   `trilium_notes_total` - Total notes (including deleted) | ||||
| *   `trilium_notes_deleted` - Number of deleted notes | ||||
| *   `trilium_notes_active` - Number of active notes | ||||
| *   `trilium_notes_protected` - Number of protected notes | ||||
| *   `trilium_attachments_total` - Total attachments | ||||
| *   `trilium_attachments_active` - Active attachments | ||||
| *   `trilium_revisions_total` - Total note revisions | ||||
| *   `trilium_branches_total` - Active branches | ||||
| *   `trilium_attributes_total` - Active attributes | ||||
| *   `trilium_blobs_total` - Total blob records | ||||
| *   `trilium_etapi_tokens_total` - Active ETAPI tokens | ||||
| *   `trilium_embeddings_total` - Note embeddings (if available) | ||||
|  | ||||
| ### **Categorized Metrics** | ||||
|  | ||||
| *   `trilium_notes_by_type{type="text|code|image|file"}` - Notes by type | ||||
| *   `trilium_attachments_by_type{mime_type="..."}` - Attachments by MIME type | ||||
|  | ||||
| ### **Statistics** | ||||
|  | ||||
| *   `trilium_database_size_bytes` - Database size in bytes | ||||
| *   `trilium_oldest_note_timestamp` - Timestamp of oldest note | ||||
| *   `trilium_newest_note_timestamp` - Timestamp of newest note | ||||
| *   `trilium_last_modified_timestamp` - Last modification timestamp | ||||
|  | ||||
| ## **Prometheus Configuration** | ||||
|  | ||||
| Add to your `prometheus.yml`: | ||||
|  | ||||
| ``` | ||||
| scrape_configs: | ||||
|   - job_name: 'trilium' | ||||
|     static_configs: | ||||
|       - targets: ['localhost:8080'] | ||||
|     metrics_path: '/etapi/metrics' | ||||
|     headers: | ||||
|       Authorization: 'YOUR_ETAPI_TOKEN' | ||||
|     scrape_interval: 30s | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ## **Error Responses** | ||||
|  | ||||
| *   `400` - Invalid format parameter | ||||
| *   `401` - Missing or invalid ETAPI token | ||||
| *   `500` - Internal server error | ||||
		Reference in New Issue
	
	Block a user