Elasticsearch와 AWX 로그 통합
11577 단어 ElasticsearchawxLogstashkubernetes
소개
k3s의 검증 환경상에 Elasticsearch 과 AWX 가 갖추어졌으므로, AWX 실행 로그를 제휴해 보았습니다.
이전과 마찬가지로, @sky_jokerxx 씨의 Blog를 참고하면서, ES·AWX가 같은 Kubernetes 클러스터상에 있는 구성에서의 설정의 일례로서 기록을 남겨 둡니다.
참고 : Ansible Tower(AWX)의 시스템 로그 및 작업 실행 로그를 먼저 Elasticsearch에 가져와 가시화하는 순서(비망록)입니다. | 일상 엔지니어의 Tech Blog
환경
Logstash 배포
Elasticsearch와 데이터를 연결하기 위해 Logstash도 Kubernetes에 배포합니다.
logstash-awx.yaml---
apiVersion: v1
kind: ConfigMap
metadata:
name: logstash-awx
namespace: awx
data:
logstash.conf: |-
input {
http {
port => 5140
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => "elasticsearch-es-http.elastic"
index => "awx"
user => "elastic"
password => "<Elasticsearchのパスワード>"
}
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: logstash-awx
namespace: awx
spec:
selector:
matchLabels:
app: logstash-awx
template:
metadata:
labels:
app: logstash-awx
spec:
containers:
- image: docker.elastic.co/logstash/logstash-oss:7.4.1
name: logstash-awx
ports:
- name: logstash
containerPort: 5140
protocol: TCP
volumeMounts:
- name: config
mountPath: /usr/share/logstash/pipeline
readOnly: true
command:
- "/bin/sh"
- "-c"
- "sed -i -e 's/Xms1g/Xms256m/g' -e 's/Xmx1g/Xmx256m/g' /usr/share/logstash/config/jvm.options; logstash"
resources:
limits:
memory: 0.5Gi
cpu: "500m"
requests:
memory: 0.5Gi
cpu: "500m"
volumes:
- name: config
configMap:
name: logstash-awx
items:
- key: logstash.conf
path: logstash.conf
---
apiVersion: v1
kind: Service
metadata:
name: logstash-awx
namespace: awx
labels:
app: logstash-awx
spec:
selector:
app: logstash-awx
ports:
- name: logstash
port: 5140
targetPort: 5140
protocol: TCP
Logstash의 namespace는 AWX와 같은 (awx)에 배포하고 있습니다.
동일한 클러스터의 다른 네임 스페이스에있는 서비스를 대상으로 지정할 때,
.
라고 지정하면 OK입니다. (ConfigMap의 Elasticsearch 호스트 지정 부분)
Elasticsearch의 User/Password는 대개 기본값을 지정합니다.
다른 namespace에서는 Secret을 참조 할 수 없기 때문에 Password도 직접 쓰고 있습니다. (향후 요 검토)
또한 호스트 리소스에 여유가 없기 때문에 리소스를 깎기로 결정했습니다.
(Java 힙을 잘 바꾸는 방법이 없고, 역업에서 어떻게든하고 있습니다)
이 YAML 파일을 배포하고
$ kubectl apply -f logstash-awx.yaml
configmap/logstash-awx created
deployment.apps/logstash-awx created
service/logstash-awx created
부팅하고 포트가 LISTEN될 때까지 기다립니다.
$ kubectl get pod -n awx
NAME READY STATUS RESTARTS AGE
awx-postgresql-postgresql-0 1/1 Running 0 13h
awx-0 4/4 Running 0 13h
logstash-awx-786599d98b-hswsk 1/1 Running 0 8s
$ kubectl logs -f logstash-awx-786599d98b-hswsk -n awx
〜中略〜
[2019-10-24T08:07:20,044][INFO ][logstash.inputs.http ] Starting http input listener {:address=>"0.0.0.0:5140", :ssl=>"false"}
AWX에서 로그 출력 설정
왼쪽 메뉴 하단의 "설정"-> "시스템"을 클릭한 후 상단의 "로깅"을 선택하고 각 항목에 다음 값을 설정합니다.
로그 어그리게이터: http://logstash-awx
로그 어그리게이터 포트: 5140 로그 애그리 게이터 유형 : "logstash"선택 로그 애그리 게이터 프로토콜 : "HTTPS/HTTP"선택
로그 어그리게이터의 프로토콜은 TCP에서도 테스트는 성공하지만, 실제 데이터 연동시 JSON 파싱에 실패합니다.
또한 HTTPS/HTTP를 선택한 경우는 어그리게이터의 지정에 「http://」를 붙이지 않으면 https로 접속해 가고, 접속에 실패합니다.
값을 입력한 후 테스트를 클릭하고 문제가 없으면 저장합니다.
저장 후 상단의 "외부 로깅 사용"을 켭니다.
설정이 완료되면 적당히 작업을 움직여보십시오.
Elasticsearch(Kibana)에서 확인
Kibana에 로그인하고 Management->Elasticsearch Index Management 란에 "awx"라는 인덱스가 보이면 로그 연동이 가능합니다.
Kibana Index Patterns에서 "Create index pattern"을 클릭,
"Time Filter field name"에 "@timestamp"을 지정하여 작성하면 OK입니다.
끝에
우선 로그의 제휴까지는 할 수 있었습니다.
그리고는 Kibana의 Dashboard(visualization)를 만들면 완벽합니다만, 만드는 방법을 잘 모르고…
Reference
이 문제에 관하여(Elasticsearch와 AWX 로그 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ussvgr/items/45a19360fb6c0ca32081
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
---
apiVersion: v1
kind: ConfigMap
metadata:
name: logstash-awx
namespace: awx
data:
logstash.conf: |-
input {
http {
port => 5140
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => "elasticsearch-es-http.elastic"
index => "awx"
user => "elastic"
password => "<Elasticsearchのパスワード>"
}
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: logstash-awx
namespace: awx
spec:
selector:
matchLabels:
app: logstash-awx
template:
metadata:
labels:
app: logstash-awx
spec:
containers:
- image: docker.elastic.co/logstash/logstash-oss:7.4.1
name: logstash-awx
ports:
- name: logstash
containerPort: 5140
protocol: TCP
volumeMounts:
- name: config
mountPath: /usr/share/logstash/pipeline
readOnly: true
command:
- "/bin/sh"
- "-c"
- "sed -i -e 's/Xms1g/Xms256m/g' -e 's/Xmx1g/Xmx256m/g' /usr/share/logstash/config/jvm.options; logstash"
resources:
limits:
memory: 0.5Gi
cpu: "500m"
requests:
memory: 0.5Gi
cpu: "500m"
volumes:
- name: config
configMap:
name: logstash-awx
items:
- key: logstash.conf
path: logstash.conf
---
apiVersion: v1
kind: Service
metadata:
name: logstash-awx
namespace: awx
labels:
app: logstash-awx
spec:
selector:
app: logstash-awx
ports:
- name: logstash
port: 5140
targetPort: 5140
protocol: TCP
라고 지정하면 OK입니다. (ConfigMap의 Elasticsearch 호스트 지정 부분)
Elasticsearch의 User/Password는 대개 기본값을 지정합니다.
다른 namespace에서는 Secret을 참조 할 수 없기 때문에 Password도 직접 쓰고 있습니다. (향후 요 검토)
또한 호스트 리소스에 여유가 없기 때문에 리소스를 깎기로 결정했습니다.
(Java 힙을 잘 바꾸는 방법이 없고, 역업에서 어떻게든하고 있습니다)
이 YAML 파일을 배포하고
$ kubectl apply -f logstash-awx.yaml
configmap/logstash-awx created
deployment.apps/logstash-awx created
service/logstash-awx created
부팅하고 포트가 LISTEN될 때까지 기다립니다.
$ kubectl get pod -n awx
NAME READY STATUS RESTARTS AGE
awx-postgresql-postgresql-0 1/1 Running 0 13h
awx-0 4/4 Running 0 13h
logstash-awx-786599d98b-hswsk 1/1 Running 0 8s
$ kubectl logs -f logstash-awx-786599d98b-hswsk -n awx
〜中略〜
[2019-10-24T08:07:20,044][INFO ][logstash.inputs.http ] Starting http input listener {:address=>"0.0.0.0:5140", :ssl=>"false"}
AWX에서 로그 출력 설정
왼쪽 메뉴 하단의 "설정"-> "시스템"을 클릭한 후 상단의 "로깅"을 선택하고 각 항목에 다음 값을 설정합니다.
로그 어그리게이터의 프로토콜은 TCP에서도 테스트는 성공하지만, 실제 데이터 연동시 JSON 파싱에 실패합니다.
또한 HTTPS/HTTP를 선택한 경우는 어그리게이터의 지정에 「http://」를 붙이지 않으면 https로 접속해 가고, 접속에 실패합니다.
값을 입력한 후 테스트를 클릭하고 문제가 없으면 저장합니다.
저장 후 상단의 "외부 로깅 사용"을 켭니다.
설정이 완료되면 적당히 작업을 움직여보십시오.
Elasticsearch(Kibana)에서 확인
Kibana에 로그인하고 Management->Elasticsearch Index Management 란에 "awx"라는 인덱스가 보이면 로그 연동이 가능합니다.
Kibana Index Patterns에서 "Create index pattern"을 클릭,
"Time Filter field name"에 "@timestamp"을 지정하여 작성하면 OK입니다.
끝에
우선 로그의 제휴까지는 할 수 있었습니다.
그리고는 Kibana의 Dashboard(visualization)를 만들면 완벽합니다만, 만드는 방법을 잘 모르고…
우선 로그의 제휴까지는 할 수 있었습니다.
그리고는 Kibana의 Dashboard(visualization)를 만들면 완벽합니다만, 만드는 방법을 잘 모르고…
Reference
이 문제에 관하여(Elasticsearch와 AWX 로그 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ussvgr/items/45a19360fb6c0ca32081텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)