Source
A Source is an object that defines how to access and interpret data from an external system. Sources reference Connections for connectivity and add data-specific configuration on top.
While a Connection handles the technical connectivity (host, credentials, SSL), a Source defines:
- Which data to access (database, table, container filters)
- Column mappings (which columns to query, their types, display names)
- Special column roles (time column, severity column)
- Query capabilities (autocomplete, suggestions, raw queries)
- Access permissions (who can read/use/edit the source)
Source components
Section titled “Source components”Connection Reference
Section titled “Connection Reference”Every source references exactly one connection. The connection provides:
- Technical connectivity parameters
- Authentication credentials
- Protocol configuration
Data Location (ClickHouse / StarRocks)
Section titled “Data Location (ClickHouse / StarRocks)”For ClickHouse sources:
database– Which database to querytable– Which table contains the data
For StarRocks sources:
catalog– Which catalog to use (default:default_catalogfor internal tables)database– Which database to querytable– Which table contains the data
Column Configuration
Section titled “Column Configuration”Sources define which columns from the underlying data should be exposed:
- Column names and display aliases
- Data types
- Autocomplete and suggestion settings
- JSON string handling
- Enum values
Special Columns
Section titled “Special Columns”- Time Column – Used for time-range queries in the explorer
- Severity Column – Used for colored log bars and default grouping
- Default Chosen Columns – Columns shown by default in results
Source Types
Section titled “Source Types”ClickHouse Source
Section titled “ClickHouse Source”Uses a ClickHouse connection to query log data from ClickHouse tables.
Requirements:
- ClickHouse connection (HTTP/HTTPS protocol only)
- Database and table specification
- Time column for temporal queries
For ClickHouse connections, Telescope uses the clickhouse-connect Python library, which communicates exclusively over HTTP(S) protocol. As of version 0.0.19, the native protocol (previously supported via clickhouse-driver) is no longer supported.
StarRocks Source
Section titled “StarRocks Source”Since v0.0.26
Uses a StarRocks connection to query log data from StarRocks tables.
Requirements:
- StarRocks connection (MySQL protocol)
- Catalog, database, and table specification
- Time column for temporal queries
StarRocks sources support the catalog concept, allowing queries against both internal (native) tables and external catalogs (Hive, Iceberg, Hudi, etc.). Query hints can be configured to tune performance via StarRocks SET_VAR() syntax.
Docker Source
Section titled “Docker Source”Since v0.0.15
Uses a Docker connection to stream logs from containers.
Requirements:
- Docker connection (local or remote socket)
- Predefined column set (cannot be customized)
Limitations:
- Column list is fixed
- No column customization
Kubernetes Source
Section titled “Kubernetes Source”Since v0.0.24
Uses a Kubernetes connection to query logs from pods and containers via the Kubernetes API.
Requirements:
- Kubernetes connection (kubeconfig-based authentication)
- Context and namespace selection
- Pod filtering configuration
Features:
- Multi-context and multi-namespace support
- Advanced pod filtering (label selectors, field selectors, FlyQL filters)
- Rich metadata (pod labels, container names, node information)
- Predefined column set with Kubernetes-specific metadata
See the Kubernetes Setup Guide for detailed setup instructions.
Source as RBAC Entity
Section titled “Source as RBAC Entity”Sources act as independent RBAC entities, allowing fine-grained access control:
- Assign roles to users and groups
- Control who can read, edit, use, or delete the source
- Grant raw query permissions independently
- Manage access separately from the underlying connection
See Source Roles for details.
Connection vs Source Permissions
Section titled “Connection vs Source Permissions”Both Connections and Sources have independent permission models:
| Permission Level | Controls | Example |
|---|---|---|
| Connection | Who can use the connection in sources | Alice can create sources using “Prod DB” connection |
| Source | Who can query data from the source | Bob can query logs but can’t edit source configuration |
A user needs:
- Connection USE permission – To create a source using that connection
- Source READ/USE permission – To query logs from that source
Relationship Diagram
Section titled “Relationship Diagram”Connection (Prod ClickHouse) ├── host: clickhouse.prod.com ├── credentials: *** └── ssl: enabled │ ├─> Source A (Application Logs) │ ├── database: logs_db │ ├── table: app_logs │ └── fields: timestamp, level, message... │ └─> Source B (Audit Logs) ├── database: audit_db ├── table: audit_trail └── fields: event_time, user_id, action...Source Lifecycle
Section titled “Source Lifecycle”- Creation: User selects a connection they have USE access to
- Configuration: Specify database/table and field mappings
- Validation: Test connection and optionally load schema
- Usage: Query logs through the explorer
- Updates: Modify configuration (requires EDIT permission)
- Deletion: Remove source (does not delete the connection)
Best Practices
Section titled “Best Practices”- Naming: Use descriptive names indicating data type (e.g., “Production App Logs”, “Staging API Logs”)
- Field Selection: Only expose fields needed for log analysis
- Time Field: Use the time/date field that matches your ClickHouse table’s partition key for optimal query performance
- Severity Field: Configure if your logs have severity/level information
- Connection Reuse: Share connections across sources when appropriate
- Access Control: Grant minimum required permissions
Related Concepts
Section titled “Related Concepts”- Connection – Technical connectivity layer
- Authentication & Authorization – Permission model
- Querying – How to query data from sources