'실시간 정보 > 실시간 인기 검색어' 카테고리의 다른 글
엑스(트위터) 실시간 인기 검색어 (2) | 2024.11.03 |
---|---|
네이버 실시간 인기 검색어 (2) | 2024.11.03 |
엑스(트위터) 실시간 인기 검색어 (2) | 2024.11.03 |
---|---|
네이버 실시간 인기 검색어 (2) | 2024.11.03 |
read 명령 옵션
|
의미
|
read answer
|
표준 입력으로부터 한 라인을 읽고 읽은 내용을 answer 변수의 값으로 할당
|
read first last
|
표준 입력으로부터 한 라인을 읽는데, 공백 또는 newline을 기준으로 첫 번째 단어는 first 변수의 값으로, 나머지 단어는 last 변수의 값으로 할당
|
read
|
표준 입력으로부터 한 라인을 읽고 REPLY 빌트인 변수의 값으로 할당
|
read –a arrayname
|
arrayname으로 명명된 배열의 단어 목록을 읽음
|
read –e
|
대화형 쉘에서 사용
|
read –p prompt
|
prompt를 출력하고, 입력을 기다리고, 입력 내용을 REPLY 변수에 저장
|
read –r line
|
백슬래시(\)를 포함하는 입력을 허용
|
위치 파라미터 변수
|
의미
|
$0
|
실행한 스크립트 이름을 할당
|
$#
|
위치 파라미터의 개수의 값을 가짐
|
$*
|
위치 파라미터들의 모든 목록을 가짐
|
$@
|
큰따옴표로 감싸졌을 경우를 제외하고 $*와 같은 의미임
|
“$*”
|
단일 아규먼트로 확장
예) “$1 $2 $3”
|
“$@”
|
아규먼트를 분리하여 확장
예) “$1” “$2” “$3”
|
$1 … ${10}
|
위치 파라미터들을 개별적으로 참조
|
test 명령 연산자
|
참일 때(true)
|
문자열 테스트
|
|
[ string1 == string2 ]
|
문자열1과 문자열2의 값이 같은지 테스트한다.
|
[ string1 = string2 ]
|
단일= 기호는 bash 2.x 버전 이상에서 사용할 수 있다.
|
[ string1 != string2 ]
|
문자열1과 문자열2의 값이 다른지 테스트한다.
|
[ string ]
|
문자열이 null이 아닌지 테스트한다.
|
[ -z string ]
|
문자열의 길이가 0인지 테스트한다.
|
[ -n string ]
|
문자열의 길이가 0이 아닌지 테스트한다.
|
[ -l string ]
|
문자열의 길이(문자의 개수)
|
논리적 테스트
|
|
[ string1 -a string2 ]
|
string1과 string2가 모두 true인지 테스트한다.
|
[ string1 -o string2 ]
|
string1과 string2 둘 중 하나라도 true인지 테스트한다.
|
[ ! string1 ]
|
string1과 매칭되지 않는지 테스트한다.
|
논리적 테스트(복합적)
|
|
[[ pattern1 && pattern2 ]]
|
패턴1과 패턴2 모두 true인지 테스트한다.
|
[[ pattern || pattern2 ]]
|
패턴1과 패턴2 둘 중 하나라도 true인지 테스트한다.
|
[[ ! pattern ]]
|
패턴과 매칭되지 않는지 테스트한다.
|
정수형 테스트
|
|
[ int1 –eq int2 ]
|
int1과 int2가 같은지 테스트한다.
|
[ int1 –ne int2 ]
|
int1과 int2가 다른지 테스트한다.
|
[ int1 –gt int2 ]
|
int1이 int2보다 큰지 테스트한다.
|
[ int1 –ge int2 ]
|
int1이 int2보다 크거나 같은지 테스트한다.
|
[ int1 –lt int2 ]
|
int1와 int2보다 작은지 테스트한다.
|
[ int1 –le int2 ]
|
int1이 int2보다 작거나 같은지 테스트한다.
|
파일 테스트를 위한 바이너리 연산자
|
|
[ file1 –nt file2 ]
|
file1이 file2보다 최근 파일(수정 일자)인지 테스트한다. 최근 파일7이라면 true이다.
|
[ file1 –ot file2 ]
|
file1이 file2보다 이전 파일인지 테스트한다.
|
[ file1 –ef file2 ]
|
file1과 file2가 같은 디바이스 또는 아이노드(inode) 번호를 가지고 있는지 테스트한다. 같다면 true이다.
|
파일 테스트 연산자
|
참(true)일 때 의미
|
-b filename
|
파일이 존재하고 블록 특수 파일이면 참
|
-c filename
|
파일이 존재하고 문자 특수 파일이면 참
|
-d filename
|
파일이 존재하고 디렉터리이면 참
|
-e filename
|
파일이 존재하면 참
|
-f filename
|
파일이 존재하고 일반 파일이면 참
|
-G filename
|
파일이 존재하고 유효 그룹 ID의 소유이면 참
|
-g filename
|
파일이 존재하고 set-group-id이면 참
|
-k filename
|
파일에 “스틱키(sticky)” 비트가 설정되어 있으면 참
|
-L filename
|
파일이 존재하고 심볼릭 링크이면 참
|
-p filename
|
파일이 존재하고 명명된(named) 파이프이면 참
|
-L filename
|
파일이 존재하고 심볼릭 링크이면 참
|
-p filename
|
파일이 존재하고 읽을 수 있으면 참
|
-O filename
|
파일이 존재하고 유효(effective) 사용자 ID의 소유이면 참
|
-f filename
|
파일이 존재하고 읽을 수 있으면 참
|
-S filename
|
파일이 존재하고 소켓이면 참
|
-s filename
|
파일이 존재하고 그 크기가 0보다 크면 참
|
-t fd
|
fd(파일 기술자)가 열린 상태이고 터미널이면 참
|
-u filename
|
파일이 존재하고 set-user-id 비트가 설정되어 있으면 참
|
-w filename
|
파일이 존재하고 쓸 수 있으면 참
|
-x filename
|
파일이 존재하고 실행 가능하면 참
|
스크립트 디버깅 옵션
|
옵션명
|
설명
|
bash –x 스크립트명
|
에코 옵션
|
변수 치환 후 그리고 실행 이전에 스크립트 각 라인을 출력한다.
|
bash –v 스크립트명
|
다양한 옵션
|
실행 이전에 스크립트의 각 라인을 출력한다.
|
bash –n 스크립트명
|
비실행 옵션
|
해석은 하지만 실행하지는 않는다.
|
set –x
|
에코 활성화
|
스크립트에서 실행을 추적한다.
|
set +x
|
에고 비활성화
|
스크립트에서 실행을 추적하지 않는다.
|
옵션
|
의미
|
-C sring
|
-c 플래그가 있으면 문자열로부터 명령을 읽어들인다. 문자열 뒤에 전달인수가 있으면 그 전달인수는 $0부터 시작하여 위치 매개변수로 지정된다.
|
-D
|
$로 시작되고, 큰 따옴표로 인용된 문자열들의 목록은 표준 출력으로 출력된다. 현재 로케일이 C 또는 POSIX가 아닐 때 이 문자열들은 언어 번역을 위한 제목이다.
|
-i
|
-I 플래그가 있으면 쉘은 대화형(interactive) 모드로 동작한다.
|
-s
|
-s 플래그가 있을 때 또는 옵션 처리 후에 남은 인수가 없을 때에는 표준 입력으로부터 명령을 읽어들인다. 이 옵션을 사용하여 대화형 쉘을 실행시킬 때 위치 매개변수를 설정 할 수 있다.
|
-r
|
제한된 쉘을 시작한다.
|
-
--
|
옵션의 마지막 시그널이며 옵션 프로세싱을 더 이상 할 수 없다.
--또는 –옵션 이후의 아규먼트들은 파일명과 아규먼트로 취급한다.
|
--dump-strings
|
-D 옵션과 같다.
|
--help
|
빌트인 명령을 위한 사용법 메시지를 출력하고 종료한다.
|
--login
|
bash가 마치 로그인 쉘로 시작된 것처럼 행동하게 한다.
|
--noediting
|
bash가 대화형 모드로 실행 중일 때 readline 라이브러리를 사용하지 않는다.
|
--noprofile
|
시스템 전역 시동 파일인 /etc/profile 또는 ~/.bash_profile, ~/.bash_login, ~/.profile 파일과 같은 모든 개인 초기화 파일을 읽지 않도록 한다. bash가 로그인 쉘로 실행될 때에는 기본적으로 이 모든 파일을 읽는다.
|
--norc
|
쉘이 대화형 모드일 때 유저 개인의 초기화 파일인 ~/.bashrc 파일을 실행하지 않도록 한다. 쉘을 실행할 때 bash9sh)라는 이름으로 실행하면 기본적으로 이 옵션이 켜진다.
|
--posix
|
기본적으로 POSIX 1003.2 표준과 다른 BASH 행동 방식을 바꾸어 표준에 부합되도록 지시한다.
|
--quiet
|
쉘을 시작할 때 상세한 정보를 보여주지 않는다. 즉, 쉘 버전과 기타 정보를 표시하지 않는다. 기본값이다.
|
--rcfile file
|
쉘이 대화형 모드일 때 표준적인 개인 초기화 파일인 ~/.bashrc 대신 파일의 명령을 실행한다.
|
--restricted
|
제한된 쉘을 시작한다. –r 옵션과 같다.
|
--vervose
|
vervose 옵션을 켠다. –v 옵션과 같다.
|
--version
|
bash 쉘에 대한버전 정보를 표시하고 종료한다.
|
set 명령 옵션
|
짧은 옵션
|
의미
|
allexport
|
-a
|
설정을 해제할 때까지 뒤이어서 나올 명령의 환경으로 export하기 위해 수정 또는 생성할 변수를 자동으로 표기한다.
|
breacexpand
|
-B
|
브레이스 확장이 가능하며 기본값으로 설정되어 있다.
|
emacs
|
|
이맥스 스타일의 명령행 편집 이터페이스를 사용하며, 기본값으로 설정되어 있다.
|
errexit
|
-e
|
명령이 0 아닌 상태값을 갖고 종료하면 즉시 종료한다. 만약 실패한 명령이 until 또는 while 루프의 일부, if 문의 일부, &&의 일부, || 목록의 일부이거나 또는 명령의 반환값이 !로 반전되면 종료하지 않는다.
|
histexpand
|
-H
|
! 스타일의 히스토리 치환을 사용한다. 쉘이 대화형 모드이면 기본으로 켜지는 플래그이다.
|
ignoreeof
|
|
쉘을 빠져나오기 위해 <Ctrl-d>를 눌러 EOF하지 못하도록 한다. 이때에는 exit 명령을 사용해야 한다. 쉘 명령 ‘IGNOREEOF=10’을 실행한 것과 같은 효과를 발휘한다.
|
keyword
|
-k
|
명령을 위한 환경에서 키워드 아규먼트를 배치한다.
|
interactive-comments
|
|
인터렉티브 쉘에서 이 옵션을 사용하지 않으면 # 주석을 사용할 수 없다. 기본값으로 설정되어 있다.
|
monitor
|
-m
|
잡 컨트롤을 허용한다.
|
noclobber
|
-C
|
리다이렉션이 사용될 때 덮어쓰기로부터 파일을 보호한다.
|
noexec
|
-n
|
명령을 읽지만 실행하지 않으며, 스크립트의 문법을 체크하기 위해 사용된다. 인터렉티브로 실행했을 때에는 이 옵션이 적용되지 않는다.
|
noglob
|
-d
|
경로명 확장을 할 수 없다. 와일드카드가 적용되지 않는다.
|
notify
|
-b
|
백그라운드 잡이 종료되었을 때 유저에게 알려준다.
|
nounset
|
-u
|
변수 확장이 설정되지 않았을 때 에러를 출력해 준다.
|
onecmd
|
-t
|
하나의 명령을 읽고, 실행한 다음 종료한다.
|
physical
|
-P
|
이 옵션이 설정되면 cd 또는 pwd를 입력했을 때 심볼릭 링크는 가져오지 못한다. 물리적인 디렉터리만 보여준다.
|
posix
|
|
기본 연산이 POSIX 표준과 매칭되지 않으면 쉘의 행동이 변경된다.
|
privileged
|
-p
|
이 옵션이 설정되었을 때 쉘은 .profile 또는 ENV 파일을 읽지 않으며, 쉘 함수는 환경으로부터 상속되지 않는다.
|
verbose
|
-v
|
쉘에서 행 입력을 받을 때마다 그 입력행을 출력한다.
|
vi
|
|
명령라인 에디터로 vi 에디터를 사용한다.
|
xtrace
|
-x
|
각각의 간단한 명령을 확장한 다음, bash PS4의 확장값을 표시하고 명령과 확장된 인수를 표시한다.
|
col 옵션
|
의미
|
-b
|
어떠한 백스페이스 문자도 출력하지 않는다. 백스페이스 문자와 연결되는 마지막 문자만 출력한다.
|
-f
|
밑줄 속성을 가진 문자열을(Forward half line feed) 변환하지 않는다. 일반적으로 밑줄 속성을 가진 문자열들은 다음 라인에서 밑줄이 나타난다.
|
-h
|
여러 공백문자를 탭문자로 바꾼다.
|
-x
|
여러 공백문자들을 그대로 둔다.
|
-l[num]
|
메모리에 한 번에 둘 수 있는 최대 라인수를 num 라인수로 한다.
초기값은 128라인이다.
|
find옵션
|
의미
|
-name 파일명
|
파일명으로 검색한다.
|
-user 유저명
|
유저명 또는 UID로 검색한다.
|
-group 그룹명
|
그룹명으로 검색한다.
|
-perm nnn
|
퍼미션이 nnn인 파일을 검색한다.(예 –perm 755)
# find. –perm -100 –print
실행 가능한 –x-----파일을 찾는다.
-perm 인자가 마이너스(-) 부호를 가지게 되면 setuid 설정 비트를 포함한 모든 퍼미션 비트들이 검사된다.
|
-type x
|
파일 타입이 x인 파일을 검색한다.
b(블록 특수 파일), c(문자 특수 파일), d(디렉터리), p(파이프), f(정규표현 일반 파일), l(심볼릭 링크 파일), s(소켓)
|
-atime +n
|
접근 시간이 n일 이전인 파일을 검색한다. (access)
|
-atime –n
|
접근 시간이 n일 이내인 파일을 검색한다. (access)
|
-ctime +n
|
n일 이전에 변경된 파일을 검색한다.
(change: 내용 수정이 아니라 모드 변경 또는 접근 시간 변경)
|
-ctime -n
|
n일 이내에 변경된 파일을 검색한다.
(change: 내용 수정이 아니라 모드 변경 또는 접근 시간 변경)
|
-mtime +n
|
n일 이전에 내용이 수정된 파일을 검색한다. (modify)
|
-mtime –n
|
n일 이내에 내용이 수정된 파일을 검색한다. (modify)
|
-empty
|
파일명이 비어있고(0 bytes) 일반 파일이거나 디렉터리를 검색한다.
|
-newer 파일명
|
파일명의 파일보다 최근에 수정된 파일을 검색한다.
|
-size n
|
파일 블록 크기가 n 이상인 파일을 검색한다.
b(블록-기본값), c(bytes), k(kbytes), w(2바이트 단어)
|
-links n
|
링크된 개수가 n인 파일을 검색한다.
|
-print
|
표준 출력
|
-exec 명령
|
검색된 파일을 찾으면 COMMAND 명령을 실행한다.
명령 인자(검색된 파일)는 {}으로 사용하며, 이때 명령 끝은 \;을 사용해야 한다. 즉, 명령구분 문자인 ‘;’을 탈출(\)시켜 주어야 한다.
|
operator
|
-a: and 연산, -o: or 연산, !: not 연산
|
-path 패턴
|
path가 패턴과 일치하는 path에 대해서 검색한다.
|
-regex 패턴
|
파일명이 패턴과 일치하는 정규표현식에 대하여 검색한다.
|
tee 옵션
|
의미
|
-a, --append
|
덮어쓰지 않고 주어진 파일에 표준 입력을 추가한다.
|
--help
|
표준 출력으로 사용법을 출력하고 정상적으로 종료한다.
|
-I, --ignore-interrupts
|
인터럽트 신호를 무시한다.
|
--version
|
표준 출력으로 버전 정보를 출력하고 정상적으로 종료한다.
|
fail2ban을 이용한 SSH 접속 IP 차단 방법 (1) | 2024.11.07 |
---|
Prometheus 는 확장성이 뛰어난 오픈 소스 모니터링 프레임워크입니다. Kubernetes 컨테이너 오케스트레이션 플랫폼 에 대한 즉시 사용 가능한 모니터링 기능을 제공합니다
Kubernetes Prometheus 모니터링 스택에는 다음 구성 요소가 있습니다.
1.Prometheus Server
2.Alter Manager
3.Grafana
-Promethues 설정 테스트는 minikube 서버에서 수행
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready control-plane,master 271d v1.22.3 172.21.134.231 <none> CentOS Linux 7 (Core) 3.10.0-1160.45.1.el7.x86_64 docker://1.13.1
|
git을 통해 필요한 Prometheus 환경구성에 필요한 yaml 파일을 가져옵니다.
다음 명령을 실행하여 Monitoring 이라는 새 네임스페이스를 만듭니다 .
kubectl create namespace monitoring
|
Prometheus는 Kubernetes API를 사용하여 노드, 포드, 배포 등에서 사용 가능한 모든 메트릭을 읽습니다.
이러한 이유로 필요한 API 그룹에 대한 read access 권한이 있는 RBAC 정책을 생성하고 monitoring 네임스페이스에 바인딩해야 합니다.
clusterRole.yaml파일을 사용하여 clusterrole 설정을 적용합니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups:
- extensions
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: default
namespace: monitoring
|
ClusterRole 적용
kubectl create -f clusterRole.yaml
|
prometheus.yaml: 이것은 모든 스크랩 구성, 서비스 검색 세부 정보, 저장 위치, 데이터 보존 구성 등을 보유하는 주요 Prometheus 구성입니다.
prometheus.rules: 이 파일에는 모든 Prometheus 경고 규칙이 포함되어 있습니다.
Prometheus 구성을 Kubernetes 구성 맵으로 외부화하면 구성을 추가하거나 제거해야 할 때마다 Prometheus 이미지를 빌드할 필요가 없습니다.
새 구성을 적용하려면 구성 맵을 업데이트하고 Prometheus 포드를 다시 시작해야 합니다.
모든 Prometheus 스크랩 구성 및 경고 규칙이 포함된 구성 맵은 및 파일의 /etc/prometheus위치 에 있는 Prometheus 컨테이너에 탑재됩니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-server-conf
labels:
name: prometheus-server-conf
namespace: monitoring
data:
prometheus.rules: |-
groups:
- name: devopscube demo alert
rules:
- alert: High Pod Memory
expr: sum(container_memory_usage_bytes) > 1
for: 1m
labels:
severity: slack
annotations:
summary: High Memory Usage
prometheus.yml: |-
global:
scrape_interval: 5s
evaluation_interval: 5s
rule_files:
- /etc/prometheus/prometheus.rules
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager.monitoring.svc:9093"
scrape_configs:
- job_name: 'node-exporter'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_endpoints_name]
regex: 'node-exporter'
action: keep
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https
- job_name: 'kubernetes-nodes'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
- job_name: 'kube-state-metrics'
static_configs:
- targets: ['kube-state-metrics.kube-system.svc.cluster.local:8080']
- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
- job_name: 'kubernetes-service-endpoints'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
action: replace
target_label: __address__
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
action: replace
target_label: kubernetes_name
|
prometheus.yaml파일에는 Kubernetes 클러스터에서 동적으로 실행되는 포드 및 서비스를 검색하기 위한 모든 구성 이 포함되어 있습니다. Prometheus 스크랩 구성 에는 다음과 같은 스크랩 작업이 있습니다.
prometheus.rules: Alertmanager에 경고를 보내기 위한 모든 경고 규칙이 포함되어 있습니다.
[참고]
https://prometheus.io/docs/prometheus/latest/configuration/configuration
Config-map 적용
kubectl create -f config-map.yaml
|
※ config-map.yaml 파일에 아래와 같이 설정을 추가하면 Wildfly, Jboss POD에 대해서도 모니터링이 가능합니다. (단 관리자 포트의 /metrics 를 8080포트로 노출해야 함)
...
- job_name: 'wildfly'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_endpoints_name]
# regex에 deplyment name을 설정해야 함
regex: 'wildfly'
action: keep
...
|
prometheus-deployment.yaml하고 다음 내용을 파일에 복사합니다. /etc/prometheus이 구성 에서는 이전 섹션에서 설명한 대로 Prometheus 구성 맵을 내부에 파일로 마운트합니다 .
참고: 이 배포는 도커 허브 의 최신 공식 Prometheus 이미지 를 사용합니다. 또한 Prometheus 저장소는 기본 설정이므로 영구 저장소 볼륨 을 사용하지 않습니다 .
프로덕션 사용 사례에 대해 Prometheus를 설정할 때 배포에 영구 저장소를 추가해야 합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-deployment
namespace: monitoring
labels:
app: prometheus-server
spec:
replicas: 1
selector:
matchLabels:
app: prometheus-server
template:
metadata:
labels:
app: prometheus-server
spec:
containers:
- name: prometheus
image: prom/prometheus
args:
- "--storage.tsdb.retention.time=12h"
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus/"
ports:
- containerPort: 9090
resources:
requests:
cpu: 500m
memory: 500M
limits:
cpu: 1
memory: 1Gi
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/
- name: prometheus-storage-volume
mountPath: /prometheus/
volumes:
- name: prometheus-config-volume
configMap:
defaultMode: 420
name: prometheus-server-conf
- name: prometheus-storage-volume
emptyDir: {}
|
Deployment 적용
kubectl create -f prometheus-deployment.yaml
|
Deployment 정보 확인
$ kubectl get deployments --namespace=monitoring
NAME READY UP-TO-DATE AVAILABLE AGE
prometheus-deployment 1/1 1 1 15h
|
기존 수신 컨트롤러 설정 이 있는 경우 수신 객체를 생성하여 Prometheus DNS를 Prometheus 백엔드 서비스로 라우팅할 수 있습니다.
또한 수신 계층에서 Prometheus용 SSL을 추가할 수 있습니다. 자세한 내용 은 Kubernetes 수신 TLS/SSL 인증서 가이드 를 참조하세요.
다음은 샘플 인그레스 개체입니다. SSL을 사용하는 샘플 수신 객체는 이 GitHub 링크 를 참조하십시오.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: prometheus-ui
namespace: monitoring
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
# Use the host you used in your kubernetes Ingress Configurations
- host: prometheus.example.com
http:
paths:
- backend:
serviceName: prometheus-service
servicePort: 8080
|
위 설정으로 ingress를 생성하려고 했으나, 아래와 같은 에러가 발생하였습니다.
$ kubectl create -f prometheus-ingress.yaml
error: unable to recognize "prometheus-ingress.yaml": no matches for kind "Ingress" in version "extensions/v1beta1"
|
아래와 같이 prometheus-ingress.yaml 파일을 수정합니다.
(참고: https://zetawiki.com/wiki/No_matches_for_kind_%22Ingress%22_in_version_%22extensions/v1beta1%22)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus-ui
namespace: monitoring
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
# Use the host you used in your kubernetes Ingress Configurations
- host: prometheus.example.com
http:
paths:
- pathType: ImplementationSpecific
backend:
service:
name: prometheus-service
port:
number: 8080
|
$ kubectl create -f prometheus-ingress.yaml
ingress.networking.k8s.io/prometheus-ui created
|
172.21.134.231 prometheus.example.com
|
Reference
https://devopscube.com/setup-prometheus-monitoring-on-kubernetes/
ExtendedStatus on
<Location /server-status>
SetHandler server-status
Require host .test.kr
Require ip 172.21
</Location>
|
$ ./apachectl restart
다운로드 페이지: https://github.com/Lusitaniae/apache_exporter/releases/tag/v0.11.0
$ wget https://github.com/Lusitaniae/apache_exporter/releases/download/v0.11.0/apache_exporter-0.11.0.linux-amd64.tar.gz
$ tar -zxvf apache_exporter-0.11.0.linux-amd64.tar.gz
$ /SW/prometheus/apache_exporter-0.11.0.linux-amd64/apache_exporter --scrape_uri=http://localhost/server-status/?auto
※ curl http://localhost/server-status/?auto 명령어를 수행하여 apache status를 정상적으로 불러오는지 확인 필요
다운로드 페이지: https://prometheus.io/download/$ wget https://github.com/prometheus/prometheus/releases/download/v2.38.0/prometheus-2.38.0.linux-amd64.tar.gz
$ tar -zxvf prometheus-2.38.0.linux-amd64.tar.gz
# my global config
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
evaluation_interval: 15s # By default, scrape targets every 15 seconds.
external_labels:
monitor: 'www.test.kr'
rule_files:
scrape_configs:
# ...
- job_name: 'apache-exporter'
scrape_interval: 5s
static_configs:
# httpd(apache), apache-exporter 설치된 인스턴스 IP:9117
- targets: ['localhost:9117']
|
Prometheus 시작
$ /SW/prometheus/prometheus-2.38.0.linux-amd64/prometheus
다운로드 페이지: https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1$ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.1.5.linux-amd64.tar.gz
$ cd grafana-9.1.5
$ /SW/grafana/grafana-9.1.5/bin/grafana-server
-계정/패스워드: admin/admin
-Apache 대시보드 json파일을 다운받아 적용한다.
https://grafana.com/grafana/dashboards/3894-apache/
Dashboards → + import → Upload JSON file(apache_rev7.json)
Nginx upstream Active,Backup 설정 테스트 (2) | 2025.01.02 |
---|---|
Windows Apache 설치 (4) | 2024.10.31 |
Linux Apache 컴파일 설치(CentOS7) (2) | 2024.10.31 |
Apache -> WAS 연동 간 503에러 Fail-over 설정 (1) | 2024.10.31 |
Apache/Jbcs 서버 헤더 변경 방법 (3) | 2024.10.31 |
-설치파일 다운로드(https://www.apachelounge.com/download/)
httpd-2.4.43-win64-VS16.zip
-압축 해제 후 설치경로로 이동 또는 복사
> httpd-2.4.43-win64-VS16.zip 압축해제 후 하위의 Apache24 폴더 설치 경로로 복사
-관리자 권한 CMD 접속
-기본 설치
cd D:\Apache24\bin
httpd.exe -k install
-이름 및 환경파일 지정
httpd.exe -k install -n apache-test -f D:\Apache24\conf\test-httpd.conf
Nginx upstream Active,Backup 설정 테스트 (2) | 2025.01.02 |
---|---|
Apache - Prometheus, Apache-exporter, Grafana 연동 방법 (2) | 2024.10.31 |
Linux Apache 컴파일 설치(CentOS7) (2) | 2024.10.31 |
Apache -> WAS 연동 간 503에러 Fail-over 설정 (1) | 2024.10.31 |
Apache/Jbcs 서버 헤더 변경 방법 (3) | 2024.10.31 |
패키지 설지
yum -y install gcc*
yum -y install libtool*
yum -y install expat-devel
1.pcre 설치
cd /FILES/apache
wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
tar -zxvf /FILES/apache/pcre-8.43.tar.gz
cd pcre-8.43
./configure --prefix=/SW/package/pcre-8.43
make && make install
2.apr 설치
cd /FILES/apache
wget http://archive.apache.org/dist/apr/apr-1.6.5.tar.gz
tar -zxvf apr-1.6.5.tar.gz
cd apr-1.6.5
./configure --prefix=/SW/package/apr-1.6.5
make && make install
3.apr-util 설치
cd /FILES/apache
wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/SW/package/apr-util-1.6.1 --with-apr=/SW/package/apr-1.6.5
make && make install
4.openssl 설치
cd /FILES/apache
wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz
tar -zxvf openssl-1.1.1b.tar.gz
cd openssl-1.1.1b
./config--prefix=/SW/package/openssl-1.1.1b
make && make install
5.apache 설치
cd /FILES/apache
wget http://mirror.apache-kr.org/httpd/httpd-2.4.39.tar.gz
tar -zxvf httpd/httpd-2.4.39.tar.gz
cd httpd-2.4.39
----------------------------------------------------------------
# prefork(Process 방식) 설치 #
"./configure" \
"--prefix=/SW/apache/apache-2.4.39" \
"--with-apr=/SW/package/apr-1.6.5" \
"--with-apr-util=/SW/package/apr-util-1.6.1" \
"--with-pcre=/SW/package/pcre-8.43" \
"--with-ssl=/SW/package/openssl-1.1.1b" \
"--with-expat" \
"--enable-ssl" \
"--enable-sockets" \
"--enable-mods-shared=all" \
"--enable-module=so" \
"--enable-shared=max" \
"--enable-rewrite"
# mpm(Thread 방식) 설치 #
"./configure" \
"--prefix=/SW/apache/apache-2.4.39" \
"--with-apr=/SW/package/apr-1.6.5" \
"--with-apr-util=/SW/package/apr-util-1.6.1" \
"--with-pcre=/SW/package/pcre-8.43" \
"--with-ssl=/SW/package/openssl-1.1.1b" \
"--with-expat" \
"--with-mpm=MPM" \
"--enable-ssl" \
"--enable-sockets" \
"--enable-mods-shared=all" \
"--enable-module=so" \
"--enable-shared=max" \
"--enable-rewrite"
----------------------------------------------------------------
make && make install
6.tomcat connector 설치
yum -y install perl
cd /FILES/apache
wget http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
tar -zxvf tomcat-connectors-1.2.46-src.tar.gz
./configure --with-apxs=/SW/apache/apache-2.4.39/bin/apxs
make && make install
Apache - Prometheus, Apache-exporter, Grafana 연동 방법 (2) | 2024.10.31 |
---|---|
Windows Apache 설치 (4) | 2024.10.31 |
Apache -> WAS 연동 간 503에러 Fail-over 설정 (1) | 2024.10.31 |
Apache/Jbcs 서버 헤더 변경 방법 (3) | 2024.10.31 |
Nginx 설치 테스트(ubuntu20.04) (2) | 2024.10.29 |