Table of Contents
- Ⅰ. OVERVIEW
- Ⅱ. Prometheus 설치
- 1. Prometheus
- 2. Prometheus 설치
- 3. Node Exporter 설치
- 4. Prometheus 및 Node Exporter 연동
- Ⅲ. Grafana 설치
- 1. Grafana
- 2. Grafana 설치
- 3. Grafana 서버 구성
- Ⅳ. Exporter 구성
- 1. DB - MySQL Exporter 구성
- 2. WAS - Tomcat JMX Exporter 구성
- 3. WEB - Apache Exporter 구성
- 4. DB - Oracle DB Exporter 구성
- 5. WAS - WebLogic Monitoring Exporter 구성
- 6. WEB - Apache Exporter 구성 (OHS)
- Ⅴ. Grafana Loki 구성
- 1. Grafana Loki
- 2. Grafana Loki 설치
- 3. Promtail 설치
- 4. Grafana 서버 구성
목차 중, Prometheus Exporter 구성에 관한 파트입니다.
그리고 그 중 오픈소스인 Apache HTTP Server, Tomcat, MySQL를 Prometheus와 연동해봅니다.
Product | Version | IP Address |
3-Tier 아키텍쳐 (오픈소스) |
Apache HTTP Server 2.4.43 | 192.168.56.113 |
Tomcat 9.0.71 | ||
MySQL 8.0.31 | ||
Exporter | Apache Exporter 0.11.0 | |
JMX Exporter 0.17.2 | ||
MySQLD Exporter 0.14.0 |
Ⅳ. Exporter 설치
1. DB - MySQL Exporter 구성 (192.168.56.113)
# 사용자 계정 설정
cmd> su - grafana
cmd> mysql -u root -p
<password>
mysql> CREATE USER 'grafana'@'localhost' IDENTIFIED BY '<PASSWORD>' WITH MAX_USER_CONNECTIONS 3;
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'grafana'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
# 서드파티 프로그램의 연결 설정
cmd> vi /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
user=grafana
password=<PASSWORD>
■ MySQLD Exporter 다운로드 링크 https://prometheus.io/download/#mysqld_exporter ➩ 버전 0.14.0로 설치할 것입니다. |
cmd> wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
cmd> tar -xvf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /monitoring/prometheus/
cmd> cd /monitoring/prometheus/mysqld_exporter-0.14.0.linux-amd64
cmd> vi startMySQLExporter.sh
./mysqld_exporter --config.my-cnf=/etc/my.cnf &
cmd> vi stopMySQLExporter.sh
ps -ef | grep mysqld_exporter | awk {'print "kill -9 " $2'} | sh -x
cmd> chmod 750 *.sh
cmd> ./startMySQLExporter.sh
실행 확인 후 로컬 브라우저를 통해 http://192.168.56.113:9104 에 접속 성공 확인
4) [옵션] MySQL Exporter 시스템 데몬 등록
cmd> sudo vi /etc/systemd/system/mysql_exporter.service
[Unit]
Description=Prometheus MySQL Exporter
After=network.target
User=grafana
Group=grafana
[Service]
Type=simple
Restart=always
ExecStart=/monitoring/prometheus/mysqld_exporter-0.14.0.linux-amd64/mysqld_exporter \
--config.my-cnf=/etc/my.cnf \
--web.listen-address=0.0.0.0:9104 \
--collect.engine_tokudb_status \
--collect.global_status \
--collect.global_variables \
--collect.info_schema.clientstats \
--collect.info_schema.innodb_metrics \
--collect.info_schema.innodb_tablespaces \
--collect.info_schema.innodb_cmp \
--collect.info_schema.innodb_cmpmem \
--collect.info_schema.processlist \
--collect.info_schema.processlist.min_time=0 \
--collect.info_schema.query_response_time \
--collect.info_schema.replica_host \
--collect.info_schema.tables \
--collect.info_schema.tables.databases=‘*’ \
--collect.info_schema.tablestats \
--collect.info_schema.schemastats \
--collect.info_schema.userstats \
--collect.mysql.user \
--collect.perf_schema.eventsstatements \
--collect.perf_schema.eventsstatements.digest_text_limit=120 \
--collect.perf_schema.eventsstatements.limit=250 \
--collect.perf_schema.eventsstatements.timelimit=86400 \
--collect.perf_schema.eventsstatementssum \
--collect.perf_schema.eventswaits \
--collect.perf_schema.file_events \
--collect.perf_schema.file_instances \
--collect.perf_schema.file_instances.remove_prefix=false \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.memory_events \
--collect.perf_schema.memory_events.remove_prefix=false \
--collect.perf_schema.tableiowaits \
--collect.perf_schema.tablelocks \
--collect.perf_schema.replication_group_members \
--collect.perf_schema.replication_group_member_stats \
--collect.perf_schema.replication_applier_status_by_worker \
--collect.slave_status \
--collect.slave_hosts \
--collect.heartbeat \
--collect.heartbeat.database=true \
--collect.heartbeat.table=true \
--collect.heartbeat.utc
[Install]
WantedBy=multi-user.target
cmd> sudo systemctl daemon-reload
cmd> sudo systemctl enable mysql_exporter --now
cmd> ./stopMySQLExporter.sh
cmd> sudo systemctl restart mysql_exporter
cmd> curl -X GET http://192.168.56.113:9104
<html>
<head><title>MySQLd exporter</title></head>
<body>
<h1>MySQLd exporter</h1>
<p><a href='/metrics'>Metrics</a></p>
</body>
</html>
5) Prometheus & MySQL Exporter 연동 (192.168.56.112)
cmd> su - grafana
cmd> cd /monitoring/prometheus/prometheus-2.40.1.linux-amd64
cmd> vi conf/prometheus.yml
...
- job_name: "prometheus-mysql"
static_configs:
- targets: ["146.56.161.62:9104"]
labels:
app: mysql
cmd> ./stopPrometheus.sh
cmd> ./startPrometheus.sh
# 데몬 형태로 띄웠다면
cmd> sudo systemctl restart prometheus
프로메테우스 실행 확인 후 로컬 브라우저를 통해 http://192.168.56.112:9090/targets 에 mysql job이 up된 것을 확인합니다.
MySQL Exporter가 수집한 메트릭을 모니터링하는 대시보드(ID : 7362)를 생성해줄 것입니다.
대시보드 링크 - MySQL Overview | Grafana Labs
대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.
해당 대시보드에서 MySQL 관련 메트릭을 상세 확인할 것입니다. ex) MySQL 커넥션, 테이블락, 임시오브젝트, 쿼리캐시 등
2. WAS - Tomcat JMX Exporter 구성 (192.168.56.113)
cmd> cd /monitoring/install
cmd> wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar
cmd> tar -xvf jmx_prometheus_javaagent-0.17.2.jar
cmd> mkdir /monitoring/prometheus/jmx_exporter-0.17.2 && cd $_
# jar 파일을 현 위치(.)로 옮겨오기
cmd> mv /monitoring/install/jmx_prometheus_javaagent-0.17.2.jar .
# export 설정파일 작성
cmd> cd /monitoring/prometheus/jmx_exporter-0.17.2
cmd> vi config.yml
---
lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:
- pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)'
name: java_lang_OperatingSystem_$1
type: GAUGE
- pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)'
name: java_lang_threading_$1
type: GAUGE
- pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)'
name: catalina_globalrequestprocessor_$3_total
labels:
port: "$2"
protocol: "$1"
help: Catalina global $3
type: COUNTER
- pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)'
name: catalina_servlet_$3_total
labels:
module: "$1"
servlet: "$2"
help: Catalina servlet $3 total
type: COUNTER
- pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)'
name: catalina_threadpool_$3
labels:
port: "$2"
protocol: "$1"
help: Catalina threadpool $3
type: GAUGE
- pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)'
name: catalina_session_$3_total
labels:
context: "$2"
host: "$1"
help: Catalina session $3 total
type: COUNTER
- pattern: ".*"
여기까지 했으면, jmx exporter 디렉터리에 config.yml과 jar 파일 하나만 있을 것입니다.
WAS에 구성하는 Exporter는 다른 Exporter들과는 다르게,
따로 실행 파일을 돌려서 프로세스를 띄우는 방식으로 사용하지 않습니다.
WAS 인스턴스 기동 스크립트에 OPTS 형태로 추가해주거나, (JMX Exporter의 케이스)
혹은 WAR 형태로 Application을 배포해주면 됩니다. (WebLogic Monitoring Exporter의 케이스)
cmd> cd ${TOMCAT_HOME}
cmd> vi bin/catalina.sh
...
JMX_EX_HOME=/monitoring/prometheus/jmx_exporter_0.17.2
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${JMX_EX_HOME}/jmx_prometheus_javaagent-0.17.2.jar=8181:${JMX_EX_HOME}/config.yml"
...
cmd> ./bin/shutdown
cmd> ./bin/startup
실행 확인 후 로컬 브라우저를 통해 http://192.168.56.113:8181 에 접속 성공 확인
3) Prometheus & JMX Exporter 연동 (192.168.56.112)
cmd> su - grafana
cmd> cd /monitoring/prometheus/prometheus-2.40.1.linux-amd64
cmd> vi conf/prometheus.yml
...
- job_name: "prometheus-tomcat-jmx"
static_configs:
- targets: ["192.168.56.113:8181"]
labels:
app: tomcat
cmd> ./stopPrometheus.sh
cmd> ./startPrometheus.sh
# 데몬 형태로 띄웠다면
cmd> sudo systemctl restart prometheus
프로메테우스 실행 확인 후 로컬 브라우저를 통해 http://192.168.56.112:9090/targets 에 tomcat-jmx job이 up된 것을 확인합니다.
JMX Exporter가 수집한 JVM 관련 메트릭을 모니터링하는 대시보드(ID : 3457)를 생성해줄 것입니다.
대시보드 링크 - JMX Overview | Grafana Labs
대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.
해당 대시보드에서 JVM 관련 메트릭을 상세 확인할 것입니다. ex) Tomcat 성능정보, 메모리 힙/논힙, 스레드, GC 등
3. WEB - Apache Exporter 구성 (192.168.56.113)
cmd> cd /monitoring/install
cmd> wget https://github.com/Lusitaniae/apache_exporter/releases/download/v0.11.0/apache_exporter-0.11.0.linux-amd64.tar.gz
cmd> tar -xvf apache_exporter-0.11.0.linux-amd64.tar.gz -C /monitoring/prometheus
cmd> cd /monitoring/prometheus/apache_exporter-0.11.0.linux-amd64
cmd> vi startApacheExporter.sh
./apache_exporter &
cmd> vi stopApacheExporter.sh
ps -ef | grep apache_exporter | awk {'print "kill -9 " $2'} | sh -x
cmd> chmod 750 *.sh
cmd> ./startApacheExporter.sh
실행 확인 후 로컬 브라우저를 통해 http://192.168.56.113:9117 에 접속 성공 확인
3) [옵션] Apache Exporter 시스템 데몬 등록
cmd> sudo vi /etc/systemd/system/apache_exporter.service
[Unit]
Description=Prometheus
Documentation=https://github.com/Lusitaniae/apache_exporter
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=grafana
Group=grafana
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/monitoring/prometheus/apache_exporter-0.11.0.linux-amd64/apache_exporter \
--insecure \
--scrape_uri=http://192.168.56.113:<APACHE_PORT>/server-status/?auto \
--telemetry.address=192.168.56.113:9117 \
--telemetry.endpoint=/metrics
SyslogIdentifier=apache_exporter
Restart=always
[Install]
WantedBy=multi-user.target
cmd> sudo systemctl daemon-reload
cmd> sudo systemctl enable apache_exporter --now
cmd> ./stopApacheExporter.sh
cmd> sudo systemctl restart apache_exporter
cmd> curl -X GET http://192.168.56.113:9117
<html>
<head><title>Apache Exporter</title></head>
<body>
<h1>Apache Exporter</h1>
<p><a href='/metrics'>Metrics</a></p>
</body>
</html>
cmd> cd ${HTTPD_HOME}
cmd> sudo vi conf/httpd.conf
<Location /server-status>
SetHandler server-status
</Location>
cmd> ./bin/apachectl stop
cmd> ./bin/apachectl -k start
# 데몬 형태로 띄웠다면
cmd> sudo systemctl restart httpd
이 핸들러를 활성화시켜줘야 Exporter를 통한 메트릭 수집이 가능해집니다.
아파치 실행 확인 후 로컬 브라우저를 통해 http://192.168.56.113:<APACHE_PORT>/server-status?auto 에 apache의 server-status 관련 메트릭 목록이 나오는지 확인합니다.
5) Prometheus & Apache Exporter 연동 (192.168.56.112)
cmd> su - grafana
cmd> cd /monitoring/prometheus/prometheus-2.40.1.linux-amd64
cmd> vi conf/prometheus.yml
...
- job_name: "prometheus-apache"
static_configs:
- targets: ["192.168.56.113:9117"]
labels:
app: apache
cmd> ./stopPrometheus.sh
cmd> ./startPrometheus.sh
# 데몬 형태로 띄웠다면
cmd> sudo systemctl restart prometheus
프로메테우스 실행 확인 후 로컬 브라우저를 통해 http://192.168.56.112:9090/targets 에 apache job이 up된 것을 확인합니다.
Apache Exporter가 수집한 메트릭을 모니터링하는 대시보드(ID : 3894)를 생성해줄 것입니다.
대시보드 링크 - Apache | Grafana Labs
대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.
해당 대시보드에서 Apache 관련 메트릭을 상세 확인할 것입니다. ex) Apache 가동시간, 총 송신/접근 현황, 스코어보드, worker 상태 등
다음 글 참고
[Grafana] 서버 구성 (4) - Prometheus Exporter 구성 (오라클 제품) (tistory.com)
[Grafana] 서버 구성 (4) - Prometheus Exporter 구성 (오라클 제품)
Ⅰ. OVERVIEW Ⅱ. Prometheus 설치 1. Prometheus 2. Prometheus 설치 3. Node Exporter 설치 4. Prometheus 및 Node Exporter 연동 Ⅲ. Grafana 설치 1. Grafana 2. Grafana 설치 3. Grafana 서버 구성 Ⅳ. Exporter 설치 1. DB - MySQL Exporter 구
tikus.tistory.com
'Grafana' 카테고리의 다른 글
[Grafana] 서버 구성 (5) - Grafana Loki 구성 (0) | 2023.01.29 |
---|---|
[Grafana] 서버 구성 (4) - Prometheus Exporter 구성 (오라클 제품) (0) | 2023.01.27 |
[Grafana] 서버 구성 (2) - Grafana 설치 (0) | 2023.01.25 |
[Grafana] 서버 구성 (1) - Prometheus 설치 (0) | 2022.12.26 |