S01_모니터링서버설치

Created: May 24, 2022 11:14 AM Tags: 현대차증권 분류: 솔루션설치

모니터링 서버 설치

0. 설치순서

  1. openjdk 설치
  2. Elasticsearch 설치
  3. Kibana 설치
  4. 각 node 에 logstash 설치
  5. 로그 확인 / data 확인

Image

1. openjdk설치

  1. 설치
rpm -Uvh copy-jdk-configs-4.0-2.el8.noarch.rpm \
&& rpm -Uvh javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch.rpm \
&& rpm -Uvh lksctp-tools-1.0.18-3.el8.x86_64.rpm \
&& rpm -Uvh tzdata-java-2021e-1.el8.noarch.rpm \
&& rpm -Uvh java-11-openjdk-headless-11.0.13.0.8-4.el8_5.x86_64.rpm
  1. 그 외 package 설치 → 그 외 기본값으로 설치되어 있음 → rqm -pa로 확인만 진행
rpm -qa | grep 'alsa-lib-\|avahi-libs-\|crypto-policies-\|cups-libs\|freetype-\|graphite2-\|harfbuzz-\|lcms2-\|libjpeg\|libpng\|lua-\|nspr-\|nss-'

result

alsa-lib-1.2.5-4.el8.x86_64.rpm
avahi-libs-0.7-20.el8.x86_64.rpm
crypto-policies-20210617-1.gitc776d3e.el8.noarch.rpm
crypto-policies-scripts-20210617-1.gitc776d3e.el8.noarch.rpm
cups-libs-2.2.6-40.el8.x86_64.rpm
freetype-2.9.1-4.el8_3.1.x86_64.rpm
graphite2-1.3.10-10.el8.x86_64.rpm
harfbuzz-1.7.5-3.el8.x86_64.rpm
lcms2-2.9-2.el8.x86_64.rpm
libjpeg-turbo-1.5.3-12.el8.x86_64.rpm
libpng-1.6.34-5.el8.x86_64.rpm
lua-5.3.4-12.el8.x86_64.rpm
lua-libs-5.3.4-12.el8.x86_64.rpm
nspr-4.32.0-1.el8_4.x86_64.rpm
nss-3.67.0-7.el8_5.x86_64.rpm
nss-softokn-3.67.0-7.el8_5.x86_64.rpm
nss-softokn-freebl-3.67.0-7.el8_5.x86_64.rpm
nss-sysinit-3.67.0-7.el8_5.x86_64.rpm
nss-util-3.67.0-7.el8_5.x86_64.rpm

2. Elasticsearch 설치

sudo dnf install --disablerepo=* -y elasticsearch-oss

sudo systemctl daemon-reload
sudo systemctl enable --now elasticsearch.service
sudo systemctl status elasticsearch

sudo systemctl stop elasticsearch.service

elasticsearch.yml 설정 변경

vi /etc/elasticsearch/elasticsearch.yml
path.data= /mceadm/apps/elasticsearch/data
path.logs= /mceadm/apps/elasticsearch/log

network.host: 10.227.108.249
http.port: 9200
discovery.seed_hosts : ["10.227.108.249"]
cluster.initial_master_nodes : ["10.227.171.99"]
**@data, log directory 변경**

usermod -a -G hmc elasticsearch

mkdir -p /mceadm/apps/elasticsearch/data
mkdir -p /mceadm/apps/elasticsearch/log

chown mceadm:hmc /mceadm/apps/elasticsearch/
chown mceadm:hmc /mceadm/apps/

chown elasticsearch:elasticsearch /mceadm/apps/elasticsearch/data/
chown elasticsearch:elasticsearch /mceadm/apps/elasticsearch/log/

※ 참고 : one node 라도 cluster 설정이 필요 : https://stackoverflow.com/questions/59350069/elasticsearch-start-up-error-the-default-discovery-settings-are-unsuitable-for#59840175

Elasticsearch index 확인

curl -XGET '10.227.171.99:9200/_cat/indices?v&pretty'

3. kibana 설치

localhost:5601 에서 확인

sudo dnf install --disablerepo=* -y kibana-oss

systemctl enable kibana
systemctl start kibana

※ 참고 : elasticsearch 와 연결이 안되어 있어도 status 는 정상으로 보인다. 다만 log 에 ‘연결이 안되었다’고 보여준다.

kibana.yml 수정

vi /etc/kibana/kibana.yml
server.host: "10.227.108.249" 
server.port: 5601
elasticsearch.hosts: ["http://10.227.108.249:9200"]

키바나 재시작

systemctl restart kibana

※ 참고 : elasticsearch 가 실행된 상태에서 재시작 되어야 정상작동한다. -*실행이 안되어 있어도 kibana 실행은 되지만 정상작동하지 않음

확인

curl http://10.227.108.249:5601/api/status
curl -vL http://10.227.108.249:5601

4. logstash 설치

설치

dnf install --disablerepo=* -y ./logstash-oss-7.10.2-x86_64.rpm

systemctl enable logstash

cp ./logstash.conf /etc/logstash/conf.d
chmod 644 /etc/logstash/conf.d/logstash.conf

systemctl start logstash

logstash.conf 수정

# 개발쪽에선 mongodb port  elasticsearch 주소를 수정하자.

input {
   # https://www.elastic.co/guide/en/logstash/current/plugins-inputs-exec.html
   exec {
      command => "mongo mongodb://127.0.0.1:27617/admin -u root -p hmsecroot1@ --authenticationDatabase admin --eval 'db.serverStatus()' --quiet | sed 's/\(NumberLong([[:punct:]]\?\)\([[:digit:]]*\)\([[:punct:]]\?)\)/\2/' | sed 's/\(ISODate(\)\(.*\)\()\)/\2/'"
      interval => 7
      type => "server_status"
      id => "server_status"
   }
   exec {
      command => "mongo mongodb://127.0.0.1:27617/userhabit -u root -p hmsecroot1@ --authenticationDatabase admin --eval 'db.session.stats()' --quiet | sed 's/\(NumberLong([[:punct:]]\?\)\([[:digit:]]*\)\([[:punct:]]\?)\)/\2/' | sed 's/\(ISODate(\)\(.*\)\()\)/\2/' | sed 's/Timestamp(\([0-9]*\),[[:space:]]*[[:digit:]]*)/\1/' | sed 's/BinData([[:digit:]],\([^,]*\))/\1/'"
      interval => 7
      type => "coll_stats"
      id => "coll_stats_session"
   }
   exec {
      command => "mongo mongodb://127.0.0.1:27617/userhabit -u root -p hmsecroot1@ --authenticationDatabase admin --eval 'db.event.stats()' --quiet | sed 's/\(NumberLong([[:punct:]]\?\)\([[:digit:]]*\)\([[:punct:]]\?)\)/\2/' | sed 's/\(ISODate(\)\(.*\)\()\)/\2/' | sed 's/Timestamp(\([0-9]*\),[[:space:]]*[[:digit:]]*)/\1/' | sed 's/BinData([[:digit:]],\([^,]*\))/\1/'"
      interval => 7
      type => "coll_stats"
      id => "coll_stats_event"
   }
   exec {
      command => "mongo mongodb://127.0.0.1:27617/userhabit -u root -p hmsecroot1@ --authenticationDatabase admin --eval 'db.stats()' --quiet | sed 's/\(NumberLong([[:punct:]]\?\)\([[:digit:]]*\)\([[:punct:]]\?)\)/\2/' | sed 's/\(ISODate(\)\(.*\)\()\)/\2/' | sed 's/Timestamp(\([0-9]*\),[[:space:]]*[[:digit:]]*)/\1/' | sed 's/BinData([[:digit:]],\([^,]*\))/\1/'"
      interval => 7
      type => "db_stats"
      id => "db_stats"
   }
   exec {
      command => "mongotop -uri=mongodb://127.0.0.1:27617/userhabit -u root -p hmsecroot1@ --authenticationDatabase=admin --json -n 1"
      interval => 7
      type => "mongotop"
      id => "mongotop"
   }
   exec {
      command => "mongostat -uri=mongodb://127.0.0.1:27617/userhabit -u root -p hmsecroot1@ --authenticationDatabase=admin --json -n 1"
      interval => 7
      type => "mongostat"
      id => "mongostat"
   }
}

filter {
   json {
      source => "message"
   }
}

output {
   if [type] == "server_status" or [type] == "coll_stats" or [type] == "db_stats" or [type] == "mongotop" or [type] == "mongostat" {
      elasticsearch {
         hosts => ["10.227.108.249:9200"]
         index => "test-%{type}-metricbeat-%{+YYYY.MM.dd}"
      }
   }
   else {
      elasticsearch {
         hosts => ["10.227.108.249:9200"]
         index => "test-else-metricbeat-%{+YYYY.MM.dd}"
      }
   }
}

5. 로그 확인 / data 확인

로그확인

tail -f /var/log/logstash/ligstash-plain.log

※ logstash 가 실행할때 시간이 걸려서 바로 로그를 보려하면 파일이 존재 안할 수 있다

data 확인 : 모니터링 서버에 있는 elasticsearch 에서 data 가 들어오는지 확인

# 시간순으로 가장 최근것
curl '10.227.108.249:9200/test-coll_stats-metricbeat*/_search?pretty' -H 'Content-Type: application/json' -d '
{
"sort" : [{"@timestamp" : {"order":"desc"}}], "query":{"term":{"host":"dmcesv01"}}
}
'