Signoz 에서 로그 확인 시 필터링 에서 이슈가 발생했다.

필터를 걸어주지 않으면 로그가 출력되지만

필터를 걸어주면 key not found 라고 하면서 로그가 출력되지 않았다.

 

 

docker exec -it signoz-clickhouse clickhouse-client

 

 

SELECT DISTINCT arrayJoin(mapKeys(resources_string)) AS resource_key
FROM signoz_logs.distributed_logs_v2
ORDER BY resource_key ASC

Query id: 472d571d-1224-40ed-a66f-7a6f72afa1dd

┌─resource_key────────────────┐
│ container.id                │
│ deployment.environment      │
│ deployment.environment.name │
│ host.arch                   │
│ host.name                   │
│ os.description              │
│ os.name                     │
│ os.type                     │
│ os.version                  │
│ process.command             │
│ process.command_args        │
│ process.executable.path     │
│ process.owner               │
│ process.pid                 │
│ process.runtime.description │
│ process.runtime.name        │
│ process.runtime.version     │
│ service.instance.id         │
│ service.name                │
│ service.version             │
│ telemetry.distro.name       │
│ telemetry.distro.version    │
│ telemetry.sdk.language      │
│ telemetry.sdk.name          │
│ telemetry.sdk.version       │
└─────────────────────────────┘

 

실제 데이터는 잘 들어오는 것을 확인했다.

에러가 없는 다른 signoz 서버와 비교했을때 

데이터가 똑같은 resource_key 컬럼으로 들어오고 있었다.

이 때문에 필터를 걸어주지 않았을때 정상적으로 데이터가 출력되었다.

 

그러다가 필터에 관련된 테이블을 발견했다.

signoz_logs.distributed_logs_resource_keys

 

이 테이블에 위 테이블의 column 값들이 없어서 발생한 현상이었다.

 

실제로 아래와 같은 명령어로 resource_key를 확인해보니

에러가 없는 필터 key 값이 들어있었다.

 


SELECT DISTINCT    name,datatype
FROM signoz_logs.distributed_logs_resource_keys

 

Query id: af9ba0d2-7e72-4246-b8d5-0592c4159b2d
┌─name────────────────────────┬─datatype─┐
│ container.id                                                       │ string        │
│ process.command                                            │ string        │
│ process.command_args                                   │ string        │
│ process.runtime.description                              │ string        │
│ service.instance.id                                            │ string        │
│ service.version                                                  │ string        │
└─────────────────────────────┴───────┘

 

INSERT INTO signoz_logs.distributed_logs_resource_keys (name, datatype)
VALUES ('os.name', 'string');

 

위와 같은 쿼리를 날려 데이터를 넣어 

signoz_logs.distributed_logs_v2 테이블의 resource_keys와

 

signoz_logs.distributed_logs_resource_keys 테이블의 데이터를 맞춰주니 필터가 정상적으로 동작하는 것을 확인했다.

+ Recent posts