묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
Loki 아키텍처 관련
강의를 듣다보니...프로메테우스 아키텍처랑도 비슷하다는 느낌이 많이 드네요?loki도 설치하면 grafana가 존재하나요? 아니면 prometheus설치했을때 존재하는 그라파나를 같이 사용하나요? 결론은 로깅 시스템 구성할때 loki는 어플리케이션 로그 수집용이고 프로메테우스는 노드 메트릭 수집용이라는 차이인거네요?
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
Elastic Cloud 에서 "Logs and metrics" 기능 관련 질문 있습니다.
Elastic Cloud 에서 "Logs and metrics" 기능 활성화를 통해 나중에 문제 발생시 로그 및 매트릭 확인을 위해서 해당 기능을 활성화 하고자 하는데요.이 기능은 좋은데 문제점이 너무 빠르게 용량을 잡아 먹는다는 것 입니다.저 예산으로 가야 되는 상황이라 어쩔 수 없이 낮은 사양으로 할 수 밖에 없는 상황이지만 그렇다고 "Logs and metrics" 기능을 비활성화 하기에 나중에 문제 발생시 대처가 안 될 것 같아서 고민이 됩니다. 한번 여러 방면으로 대책법을 찾아보니필수 로그 및 메트릭만 수집 (필터링)수집 주기 조정 (Metrics 기준)이렇게 대응 방법을 말해주고 있는데요. 지금부터 ChatGPT 가 답변해준 글을 공유 하도록 하겠습니다. ==================================================💥 주요 성능 부하 원인🔁수집량 과다수집 주기 짧음, 많은 필드 → 데이터 폭주📥Ingest Pipeline 부하Elastic Agent가 사용하는 Ingest Pipeline이 CPU/RAM 자원 소비💾인덱싱 부하많은 로그가 빠르게 들어오며 디스크 I/O 및 CPU 부하 증가🔍자동 매핑 확장필드가 자동으로 확장되어 메모리, 클러스터 상태 불안정🧠ILM 미적용 / 장기 보존오래된 데이터가 계속 쌓이며 성능 하락 및 디스크 압박✅ 해결책: 성능 최적화 전략1. 필수 로그 및 메트릭만 수집 (필터링)수집 대상 최소화:log.level: error, source: app-* 등 필요 데이터만 수집예: Elastic Agent policy에서 수집 대상 제외 설정processors: - drop_event: when: not: equals: log.level: "error"2. 수집 주기 조정 (Metrics 기준)리소스기본 주기추천 조정Metrics (System, Docker 등)10s~15s→ 30s~60s로 늘리기Elastic Agent 정책에서 조정 가능 (Kibana → Fleet → Integration Policy → Advanced options)3. ILM 수명주기 정책 설정오래된 로그/메트릭 자동 삭제 또는 cold/warm tier로 이동예: logs-*, metrics-* 인덱스 7일 후 삭제 📍 Elastic Agent Policy 설정 페이지 찾는 방법🔹 경로:Kibana에 로그인왼쪽 메뉴에서 "Management" → "Fleet" 클릭→ Fleet은 Elastic Agent를 중앙에서 관리하는 UI입니다.상단 탭에서 "Agents" 또는 "Agent policies" 클릭원하는 정책 이름 클릭 (예: Agent policy 1)Integrations 리스트가 보이면, 로그/메트릭 관련 항목 클릭 (예: System, NGINX, Kubernetes 등)Advanced Options 또는 Streams 탭에서 수집 조건/필터 조정 가능🎯 필수 로그/메트릭만 수집하는 핵심 위치Integrations 안의 Stream 설정예: system.syslog → enabled ✅ / ❌메트릭 → 수집 주기(Collect every 10s 등)Advanced YAML (고급 설정)예를 들어, error 레벨만 수집하도록 필터 추가:processors: - drop_event: when: not: equals: log.level: "error" 🧭 화면 예시 흐름Kibana └─ Management └─ Fleet ├─ Agent Policies ← 여기서 정책 선택 │ └─ [Agent policy 1] │ └─ System integration 등 클릭 │ └─ Streams or Advanced options 설정 ==================================================이렇게 필수로그 수집 기능 및 수집 주기 조정 기능으로 조금이나마 성능 부하를 줄이고자 할려고 하는데요. 말 그래도 키바나 접속 해서 Fleet 페이지로 가서 먼저 agent policy 등록를 하고등록한 agent policy 접근 해서 system-1 클릭하면 Edit System integration 페이지 접근 할텐데요. 여기서 Collect metrics from System instances 에서 Change defaults 클릭 하고 여기서 원하는 Period 를 설정 하면 되는게 맞는 것인지 궁금 합니다... 혹시 또 추가적으로 설정 해야 하는 부분이 있을까요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
grafana 대시보드 datasource관련
기존에 mymonitoring이라고 해서 cpu//memory 대시보드 만든건 쿼리에 메트릭조회가 잘 됩니다.거기에서 보면 DataSource 부분에 mixed가 선택되어있고 밑에 A, B 쿼리에서 ${datasource}가 선택되어있는데 ...저 mixed선택부분에 밑에 여러개 리스트가 보이던데 원래 mixed그대로 두는게 맞는지..저기에 보이는거랑 밑에 A,B에서 선택하는거랑 무슨차이가 있는지요? 왜 여쭤보냐면 nginx-controller 강사님 하신대로 대시보드 복사해서 왔는데 거기에는 A,B,C에는 Datasource 이미 prometheus가 선택되어있고 A,B,C에는 선택이아니라 그냥 이름만 표시되어있어서요..어떻게 하는게 맞는건지 헷갈립니다.${datasource} 그리고 그랸 Prometheus 이거 차이는뭔지 헷갈립니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
scrap_config확인후에 잡등록 여부확인 내용은
job이름이 조회가 되면 Operator까지의 기능은 동작을 잘 한거다. 라호 하신 부분은 즉, operator가 여기에 secret을 보고 prometheus에 nginx 메트릭 가져올 serviceMoinitor를 선택한 설정을등록했다고 보면되는것이다라고 보면될까요?아니면 저 잡등록된 의미는 무엇일가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
Prometheus CRD serviceSMonitorSelector매핑확인시
prometheus리소스 야믈내용을 아래에서 보면 이 값과 매칭되는 레이블에 이 내용이 있는 ServiceMonitor 를 찾는것이다.release: monitoring 이라고 prometheus리소스 야믈내용에 있는데요. values.yaml의 serviceMonitorSelector 설정을 통해 수정 가능하다고 하셨는데serviceMonitor를 monitoring이라고 선택하는부분을 변경할강사님이 만드신 values-custom.yaml에도 없고values-yaml에도 해당 항목이 없던데release: monitoring은 설정이 없을때 디폴트값인가요???만약 추가할려면 values.yaml에 어떻게 넣어야 하나요? 항목이 안보여서요..그나마 values.yaml안에 serviceMonitor항목 하위 항목들중에 jobLabel: jobLabel selector: {} # matchLabels: # k8s-app: kube-dns이부분이 보이긴 하던데..여기에 release: monitoing 이라고 넣어야 하는건가요?
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
must_not 쿼리는 term 쿼리만 사용 가능한가요 ?
안녕하세요. 유익한 강의 열심히 수강하고 있습니다. 이번에 must_not 쿼리를 공부하는 과정에서 filter와 같이 term 쿼리를 사용하셨습니다. 주어진 상황이 광고 게시판의 글이 아니고 공지 글이 아니라 유연한 검색이 필요하지 않는 상황이어서 term 쿼리를 쓰신 것 같습니다. 그럼 만약, "검색엔진" 키워드를 제외한 관련된 게시글을 조회하고 싶다고 가정한다면 아래와 같은 쿼리문을 작성할 수 있을까요 ? "query" : { "bool" : { "must_not" : [ "match" : { "title" : "검색엔진" } ] }}
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
nori 관련 질문드립니다.
안녕하세요 강사님 강의 잘 보고 있습니다.다름 아니라 nori 토큰화 과정에서 이해가 안되는 부분이 있어서 질문드립니다.get /_analyze { "text":"", "analyzer":"nori" } 간단한 nori analyzer 테스트 쿼리입니다.해운대 결과{ "tokens": [ { "token": "해운", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "대", "start_offset": 2, "end_offset": 3, "type": "word", "position": 1 } ] }해운대로 결과{ "tokens": [ { "token": "해운", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "대", "start_offset": 2, "end_offset": 3, "type": "word", "position": 1 } ] }해운대구 결과{ "tokens": [ { "token": "해운대", "start_offset": 0, "end_offset": 3, "type": "word", "position": 0 }, { "token": "구", "start_offset": 3, "end_offset": 4, "type": "word", "position": 1 } ] }해운대, 해운대로 결과에서는 해운대가 해운 + 대 로 토큰화 되었습니다.해운대구 결과에서는 마찬가지로 해운 + 대 + 구 로 토큰화 될 것이라 예상했지만 해운대 + 구 로 토큰화 되었습니다. 어떤 이유로 이렇게 동작하는지 궁금합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
대시보드 cpu쿼리 관련
기존 대시보드에서 쿼리를 가져오는데cpu 패널 그리는데 쿼리가A Query :sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="a-anotherclass-434",container!=""})by(pod, container)/sum(kube_pod_container_resource_requests{job="kube-state-metrics", namespace="a-anotherclass-434", resource="cpu"})by(pod, container) 이렇게 되어있던데...두번째 kube_pod_container_resource_requests 함수의 sum값으로 왜 갑자기 나누기를 했는지가 궁금합니다. 어떤 의도이신지요?그리고 앞 쿼리를 나누기 전에 대략 cpu값들이 20~30%라면 뒤에 request는 0.1%에 해당됩니다. 그러면 20/0.1로 나눠버리면 200이 나오는게 맞는데..강사님은...그렇게 안나오는게 좀 이해가 안가네요 ? 추가로 메모리할때는 requests는 메모리와 1:1 비율이니까 max값을 1로 했는데 request가 메모리와 1:1비율이라는게 무슨의미안가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
대시보드에서 질문드립니다.
일단 따라하고 있는데 보이지 않던 value가 보입니다.총 쿼리가 A,B,C 세개인데..그리고 궁금한건...아니...직접 강사님은 node를 by옵션으로 추가하거나 이런건 어떻게 감감적으로 알수있는지 궁금하고 B같은경우에 Options값에는 legends에 그대로 안건들고 capacity라고 뒀는데 이유가있고 또 저건 뭔지도...궁금합니다.실제로 혼자 한다고 했을땐 legend값이나 by 부분 처가한거나..node를 추가한거나..이런걸 다 어떻게 알고 해야하나 갑갑하네요..감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
metrics 함수 변경여부
그라파나 지표 생성시기존꺼에서 가져오고 이전 함수들은 최신함수로 변경하셨는데 지표값이 안나오면...그런 특정 메트릭이 변경됐고 어떤걸로 해야할지는 구글링으로 확인하면될가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
serviceMonitor관련문의드려요
이 단원 들어오면서 어렵네요.operator가 prometheus crd를 보고 statefulset prometheus 를 만들어준다고했는데그럼 serviceMonitor crd를 보고는 operator가 무얼 만들어줍니까? serviceMonitor crd도 있고 prometheus설치하면서 service 리소스 타입도 있던데....이건 servicemonitor리소스와는 또 어떤관계인건지...?servicemonitor라는 crdservicemonitor kind타입의 리소스아래 service들......[root@k8s-master kube-prometheus-stack]# k get service -n monitoringNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEalertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 18hmonitoring-grafana ClusterIP 10.109.212.0 <none> 80/TCP 18hmonitoring-kube-prometheus-alertmanager ClusterIP 10.106.151.30 <none> 9093/TCP,8080/TCP 18hmonitoring-kube-prometheus-operator ClusterIP 10.105.53.49 <none> 443/TCP 18hmonitoring-kube-prometheus-prometheus ClusterIP 10.105.22.75 <none> 9090/TCP,8080/TCP 18hmonitoring-kube-state-metrics ClusterIP 10.99.143.250 <none> 8080/TCP 18hmonitoring-prometheus-node-exporter ClusterIP 10.101.93.137 <none> 9100/TCP 18hprometheus-operated ClusterIP None <none> 9090/TCP 18h그리고 아래 설명에서 말한 service들은 대체 어떤 service들인가요? 실제 서비스할 앱들이 있는 pod를 select하고있는 service 리소스들을 말하나요? 아니면 아래 service라고 칭한건....promethues 설치하면서 만들어진 serivceMonitor crd를 통해 만들어진 servermonitor 리소스가 있고 또 monitoring 네임스페이스에 있는 service 리소스들이 있는데 무얼 말하는지~~서비스서비스 계속 나오니 누구 어떤 서비스를 의미하는건지 구분이 통~ 안됩니다. ㅠㅠ 그리고serviceMonitor crd안에 잇는selector:matchLabels:app.kubernetes.io/instance: monitoringapp.kubernetes.io/name: prometheus-node-exporter이 설정을 그대로 monitoring-prometheus-node-exporter 라는 service 리소스에서 사용하는건가요? 여기 아래 서비스들. 앱이 들어있는 파드 select하는 서비스를 말하는지..kube-prometheus-stack 설치시 생성되는 service리소스를 말하는지...도통 ㅠㅠ- endpoints : 매칭될 타겟 Service의 Port 이름- jobLabel : 타겟 Service의 Label에 key가 jobLabel을 찾아 value 값을 매트릭의 job 라벨로 사용- selector : 매칭될 타겟 Service의 Label 정보
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
kube-prometheus-stack설치시 설명중에
values-custom.yaml내용중에 storageSpec: volumeClaimTemplate: spec: #storageClassName: "storageClassName" accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi selector: matchLabels: app.kubernetes.io/name: prometheus-volume근데 만약 파드를 늘리게 되면 이 스펙에 PVC가 또 만들어지는 거기 때문에 물론 PV를하나 더 수동으로 만들면 연결은 되겠지만 관리적으로 좋지가 않아서 테스트 환경에서 불가피할때만 이렇게 사용을 하시는 게 좋아요 라고 하신부분이 이전 설명에서 말한 prometheus 는 statefulset이라 데이타 공유를 하면 단일서버용으로 만들어진 시스템이라 데이터충돌이 난다고 말씀하셨던 그 부분을 말하는 내용입니까?
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
라우팅 편집 경로
안녕하세요. <라우팅 편집> 에서 경로 설명해주시는 부분에서 궁금한 점이 있습니다. 10.0.0.0/16 -> local vpc 내부에서 10.0.0.0/16 으로 보내는 트래픽은 local 로 보낸다. (private ip 를 활용해서 내부에서만 통신해라)-> 위의 말이 이해가 잘 안됩니다. 예시를 들어주실 수 있나요? 10.0.0.0/16 가 어차피 vpc 전체를 의미하는건데 "보낸다"는 의미를 잘 모르겠습니다. 그냥 말 그대로 내부에서 서로 보내는 것들은 내부 ip 안에서 놀아라~ 이런 의미라고 이해하면 될까요? 감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
Prometheus PV관련문의
Pod를 두개로 늘리려면 PV만 수동으로 하나더 만들면되긴 하는데 그렇게 하면 두 Prometheus가 결국 한볼륨을 바라보게 된다. 그럼 문제가 된다.?prometheus는 단일 서버용으로 만들어진 시스템이다.이부분에서StatefulSet인 파드를 두개로 만들었으면 그리고 PV를 수동으로 하나더 만들엇으면 어차피 storageclass라서 동적으로 pvc도 하나더 만들어지고 각각의 파드가 pod -pvc -pv구조로 연결되는거 아닌가요? 왜 결국 한 한볼륨을 결국 바라보게된다는게 이해가 안갑니다. statefuleset pod마다 각각의 고유 pvc를 사용하는거 아닌가요?
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
rds 다중 AZ
안녕하세요.좋은 강의 감사합니다. rds 를 수정해서 다중AZ 를 설정하면가용영역의 모든 곳에 다 복제가 되는건가요?물론 눈으로 볼 수 없다고 하지만, 저 rds 를 바라보고 있는 다른 서브넷(ex. instagram-server-b) 의 인스턴스가 속한 가용영역의 서브넷에 자동으로 rds 인스턴스가 다 생기는건가요. 즉 instagram-server-c, instagram-server-d .. 여러대에서 다 instagram-server-a 의 서브넷에 있는 rds 인스턴스를 바라보고 있다면 c, d 쪽에도 다 생기는지 궁금합니다. 그리고 만약 4곳 (a, b, c, d) 이 있다면 그 중에서 a, b, c만 생성되도록 설정할 수도 있는 건가요? 감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
쿠버네티스 업그레이드 관련 문
먼저 강의 질문 드리고 그 외 질문드려보겠습니다.강의에서 파드를 사전에 1,2개를 삭제해서 다른 worker노드로 보낸건 트래픽이 안끊게 하기위해 실습을 위해 보여주기위함인거죠? 만약 실운영에서 woker노드가 3개이상이면 그럴 필요없는지..실무에서 그렇게 원래하는건지 궁금합니다. 두번째는 실제 업그레이드 할때 강사님이 말씀해주신 부분외에...가령 리소스의 특정 annotation이나 버전값 등등 뭔가 버전업되면서 바뀌어야 하는정보들에 대한 실 가이드 문서를 별도로 보질 않아서 그런것들에 대해 파악하는법을 좀 알고싶습니다.쿠버 공식문서에 버전업 할때 필요한 모든 정보가 하나의 가이드에 다 들어있지 않을것 같긴한데요...가령 changelog라든가 이렇게 있던데..실제보면 양이 상당하고 모두 영어인데다가 ㅠㅠ그래서 실제 뭐뭐 바뀌는지...실무에서 정말 하나하나 다보고 파악하고 정리해야하나요?실무에서 놓치지 않고 업그레이드를 위해 빠지지 않고 다 업그레이드에 변경사항들 다 녹일려면 뭐뭐 봐야하는지...그리고 changelog보는법도 좀 알려주십시오.이것도 상당히 중요한부분같다는 생각이 들거등요이건 강의에 없는내용이고 평소궁금한부분이라 남겨봤습니다. 감사합니다.
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
bastion 통해서 private 서브넷의 rds 접근
안녕하세요 같은 vpc 내에서는 서로 같은 네트워크로 인식되는 것은 이해가 되었습니다. 그런데 단순하게 db 툴 설정에서, ssh 터널로 bastion 호스트에 대한 정보를 입력하는 것만으로 rds 에 어떻게 접속이 되는지 잘 이해가 안되네요. 즉 같은 vpc 내라고 하더라도, 특정한 private 서브넷에 접속하려면 그것과 동일한 vpc 에 존재하는 외부에 열려있는 아무 서버(ex. web-server With pem키) 를 그냥 입력하기만 하면 되는건가요? 내부에서 어떻게 web-server(public) <-> rds(private) 서로 연결되는지 궁금해서요! 좋은 강의 감사합니다
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
bastion 역할
안녕하세요 좋은 강의 감사합니다. private 서브넷에 있는 ec2 들을 보호하기 위해서 밖에서 접근을 안되도록 NAT 게이트웨이를 두고, 대신에 접근할 수 있는 ec2 인스턴스(bastion-host)를 뒀잖아요!? 그러면 결국 밖에서 어떻게든 bastion 으로 접근을 할 수도 있고, 그렇다면 결국 동일한 vpc 의 private 서브넷에 있는 ec2 들에도 접근을 할 수 있다면 보안적으로 뚫려있는 것은 동일한 것 아닌가요? 감사합니다.
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
(질문아님)Windows에서 Elasticsearch 하는 법
Docker를 설치한다. = 설치 방법은 구글링에 "Windows Docker 설치"만 검색해도 많은 자료가 있습니다. vim 설치 = 기본적으로 windows는 리눅스 환경이 아니기 때문에 CMD 또는 Powershell에서 강의처럼 vim을 사용하지 못합니다. 아래 링크를 통해서 설치만 해주고 프롬프트에 vim 입력하시면 사용 가능합니다. https://velog.io/@deadkim/windows-vim-windows%EC%97%90%EC%84%9C%EC%9D%98-vim-%EC%82%AC%EC%9A%A9
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
안녕하세요 선생님 Elastic Cloud 비용 관련해서 질문 드립니다.
의지 할 곳이 선생님 밖에 없어서 이렇게 질문 드립니다 ㅠ,ㅠ우리 회사에서 Elastic Search 를 이용해서 검색 기능을 서비스 출시 하고자 합니다. 참고로 데이터는 20~30만건 정도 됩니다. Elastic Cloud 에서 비용에서 각각 기능에 따라 등급이 있더군요. Standard Gold Platinum Enterprise 차이 간단하게 이렇게 검색해서 한번 확인 해보니깐 잘 나와 있긴 합니다만... 아무래도 선생님이 제공해주신 강의 보고 처음 접해보고 이것을 상용에서 적용 하고자 하니 비용적 부분에서 고민을 안 할 수가 없습니다. Enterprise 으로 갈수록 비용이 2배로 가긴 하지만 기능을 더 제공해주는 것 같습니다.하지만 저희는 20~30만개 정도 데이터를 활용 및 서치 기능을 구현하는 것이고기능도 선생님께서 알려주신 기능 안에서 해결이 가능 할 것 같습니다. 정리하자면20~30만개 정도 데이터를 이용해 검색 기능 제공 해야함 (앞으로 데이터 추가는 예상 됩니다.)기능은 선생님이 알려주신 기능에서 충분히 가능 할 것 같습니다.가능한 모니터링 기능이 있었으면 좋겠습니다. 그럼 standard 도 괜찮은 선택인지 알고 싶네요. 아무래도 회사가 큰 규모가 아니다 보니 비용적 부분에서 생각 안 할 수가 없습니다. (모니터링 기능도 있었으면 좋겠네요.) 다시 한번 영상 강의 만들어 주셔서 감사드리고 앞으로 더 좋은 강의 기대하도록 하겠습니다. 응원합니다. 감사합니다 :)