auditctl -w /usr/bin/ssh -p x -k ssh_exec

 

/usr/bin/ssh 를 감시

 

실행되는 경우 

 

ssh_exec 라는 태그 적용

 

 

 

 

ausearch -k ssh_exec -i

 

ssh_exec 라는 태그가 붙은 로그 출력

 

 

'Linux' 카테고리의 다른 글

ulimit -a  (0) 2025.09.11
차단 IP 조회 쉘 스크립트  (1) 2025.08.11
[shell script] 조건문에 사용되는 연산자  (0) 2025.05.08
/run,tmpfs, journalctl  (0) 2025.03.19
자바 버전 설정 alternatives  (0) 2025.03.11

 

https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html

 

GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab 기반 DevSecOps 구축,컨설팅,교육,CICD Pipe

GitLab의 Selected 파트너 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 GitLab 공식 기술 문서의 한글판을 국내 최초로 제공합니다.

gitlab-docs.infograb.net

위의 문서를 접속하면 kroki 설정을 확인할 수 있다.

 

그런데 kroki 로 작성한 diagram이 출력이 안되는 문제 발생

mermaid는 작동하나 다른 다이어그램이 출력이 안되는 상황

curl도 제대로 나오고

 

svg도 서버에서 제대로 지원함

 

 

연결 문제라고 해서 확인해보니

현재 깃랩 버전에서는 diagram proxy를 지원을 안한다

 

그전에 kroki는 마크다운 문법으로 작성한 다이어그램을 랜더링해주는 랜더링 서버이다

gitlab -> kroki -> mermaid 엔진 -> SVG/PNG 생성 -> GitLab 화면 표시 

 

gitlab과 kroki간 통신도 확인했고 curl 을 이용하여 svg, png 도 잘 생성되는 것을 확인했다.

 

diagram proxy는 gitlab이 kroki 서버에서 직접 이미지를 가져와 사용자에게 보여주는 방식이다.

이것이 지원되지 않는 경우 사용자가 직접 kroki 서버에 접근할 수 있어야 이미지를 볼 수 있다.

 

 

방화벽 설정으로 자체 kroki 서버에 접근 허용하고 확인해보니

아래와 같이 출력이 잘 되었다.

 

 

swagger에서 아래와 같은 에러 발생

 

컨테이너에서 확인해 보니 아래와 같은 로그를 발견했다.

Caused by: java.lang.NoSuchMethodError: 'java.lang.String io.swagger.v3.oas.annotations.media.Schema.$dynamicRef()'

 

annotation과 core의 버전 불일치 문제라고 한다.

 

jar에 있는 파일 목록을 살펴보았다.

 

root:  /# jar tf ./app.jar | grep -E "swagger|springdoc" 
BOOT-INF/lib/springdoc-openapi-starter-common-2.8.16.jar 
BOOT-INF/lib/springdoc-openapi-starter-webmvc-api-2.8.16.jar 
BOOT-INF/lib/springdoc-openapi-starter-webmvc-ui-2.8.16.jar 
BOOT-INF/lib/swagger-annotations-2.2.21.jar 
BOOT-INF/lib/swagger-annotations-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-core-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-models-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-ui-5.32.0.jar

 

swagger-annotation과 annotaion-jakarta 의 버전이 맞지 않았다.

2.2.21에는 $dynamicRef() 메서드가 없어서 발생한 사건으로 보인다.

 

2.2.21이 너무 낮은 버전이어서 2.2.43 으로 build.gradle에 추가

 

dependencyManagement {
     dependencies {
        dependency 'io.swagger.core.v3:swagger-annotations:2.2.43'
    }
}

 

 

 

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