본 포스팅을 작성하는 이유는??? 머리가 나뿌기도 하지만… 지인에게 도움이 되고자 포스팅을 작성하게 되었음.

우선 이 이슈의 계기???

free 명령으로 확인을 하였을때 알 수 없는 used 사이즈가 잡혀 있더란??? ps_mem 으로 확인을 하여도 잡히지 않고
그렇다고 slab 값도 높지 않은 상황?
그럼 어디서 사용을 하고 있는 걸까?

그래서 확인 해 본결과 hugepage 설정을 해 놓았더라는…

### HugePages 설정 전
# cat /proc/meminfo
Slab:             388708 kB

AnonHugePages:     24576 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB


# ps_mem.py
---------------------------------
                        177.1 MiB
=================================
Warning: Swap is not reported by this system.


# free -m
              total        used        free      shared  buff/cache   available
Mem:           7821         252         204          24        7364        7157
Swap:          2047           0        2047

### HugePages 설정 후
# echo "vm.nr_hugepages = 1024" >> /etc/sysctl.conf
# sysctl -p 

# cat /proc/meminfo
Slab:             343616 kB

AnonHugePages:     24576 kB
HugePages_Total:     962
HugePages_Free:      962
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

# ps_mem.py
---------------------------------
                        175.7 MiB
=================================
Warning: Swap is not reported by this system.

# free -m
              total        used        free      shared  buff/cache   available
Mem:           7821        2147         221          24        5452        5265
Swap:          2047           0        2047

# HegePages 설정 전 메모리 used 계산 값
7821(Total)-204(Free)-7364(buff/cache) =  253(Used),  ps_mem 결과 177.1MiB ( slab 388708 kB )

# HegePages 설정 전 메모리 used 계산 값
7821(Total)-221(Free)-5452(buff/cache) =  2148(Used),  ps_mem 결과 175.7MiB ( slab 343616 kB )

위의 예제에서 볼 수 있듯이 HugePages 를 설정 하기 전에는 ps_mem 과 free 상에는 used 를 점유하고 있는
메모리 사용량 출처를 대략적으로 확인 할 수 있지만 HugePages 를 설정 하고 난 후에는 /proc/meminfo 상에 
Hugepagesize(2mB) * HugePages_Total = ??? 를 계산하면 free 상의 used 에서 확인되지 않던 사용량을 확인
할 수 있다.

참고 사이트 :
Link : http://blog.seabow.pe.kr/?p=6744
Link : https://oracle-base.com/articles/linux/configuring-huge-pages-for-oracle-on-linux-64
Link : https://access.redhat.com/solutions/2533271

 

ubuntu 17.10 에서 /etc/resolv.conf 를 설정 후 reboot 을 하게되면 /etc/resolv.conf 파일이 초기화? 되는 상황이 있다.

ex)
nameserver 127.0.0.x ( 초기 값 )
Modify
nameserver 8.8.8.8 ( 변경 )
reboot 
nameserver 127.0.0.x ( 초기화 )

위 같은 상황일때 아래의 방법으로 해결 가능하다.

 

#vi /etc/resolv.conf

nameserver 8.8.8.8 
>> 추가

# apt-get install resolvconf
>> 패키지가 설치되어 있어야 함

# dpkg-reconfigure resolvconf
>> 명령어 실행

Prepare /etc/resolv.conf for dynamic updates?
>> 위와 같은 문구가 나오면 "yes" 또는 "예" 를 선택 한다.

# reboot

위와 같이 설정 후 resolv.conf 를 확인 해 보자.
그 외 아래와 같은 방법도 있으므로 참고.
Link : https://askubuntu.com/questions/966870/dns-not-working-after-upgrade-17-04-to-17-10

ps_mem
설명 : 프로그램의 핵심 메모리 사용량을 정확하게 보고하는 유틸리티

다운로드 : 

# git clone https://github.com/pixelb/ps_mem.git
Cloning into 'ps_mem'...
remote: Counting objects: 197, done.
remote: Total 197 (delta 0), reused 0 (delta 0), pack-reused 197
Receiving objects: 100% (197/197), 62.20 KiB | 0 bytes/s, done.
Resolving deltas: 100% (101/101), done.
Checking connectivity... done.

실행 :

# cd ps_mem
# ./ps_mem.py   
Private  +   Shared  =  RAM used Program
252.0 KiB +  73.0 KiB = 325.0 KiB agetty
340.0 KiB + 159.5 KiB = 499.5 KiB cron
348.0 KiB + 202.0 KiB = 550.0 KiB logger
564.0 KiB + 263.0 KiB = 827.0 KiB vsftpd
...
 80.2 MiB + 357.0 KiB =  80.6 MiB mysqld 
---------------------------------
                        220.8 MiB
=================================
Warning: Swap is not reported by this system.

Swap 사용량을 추가로 확인 할 경우

# ./ps_mem.py -S  
Private  +   Shared  =  RAM used   Swap used Program 

152.0 KiB +  74.0 KiB = 226.0 KiB     0.0 KiB agetty 
228.0 KiB + 197.0 KiB = 425.0 KiB     0.0 KiB logge 
340.0 KiB + 150.5 KiB = 490.5 KiB     0.0 KiB cron 
488.0 KiB + 126.5 KiB = 614.5 KiB     0.0 KiB mysqld_safe 
... 
170.0 MiB + 356.0 KiB = 170.3 MiB     0.0 KiB mysqld 
---------------------------------
                        273.4 MiB 
=================================

ps_mem 을 이용하면 Linux 에서 사용하는 Application 의 메모리 사용량을 
대략적으로 확인 할 수 있다.

이번 글은 요즘 핫한 PaaS 솔루션인 OpenShift Online 에 대한 내용 입니다.
아시는 분들도 있을지 모르겠지만??? 

OpenShift Online 가 체험판 격인 제품이 있어서 무료로 이용을 할 수 있답니다. ( 물론 작은 규모용 이죠 )

우선 아래의 링크를 클릭합니다.
Link : https://www.openshift.com/devpreview/register.html

웹페이지가 열리면 “LOGIN WITH RED HAT” 를 클릭 합니다. ( 계정 생성을 해야겠죠? )

 

위에 보시면 아시겠지만…
일반 계정을 생성하셔도 되지만… 그 외 SNS 계정과의 연동도 가능 합니다.
만약 위의 SNS 계정이 있으시다면 연동을 해 보세요.

계정 생성이 완료되고 email 확인까지 끝나면 이제 상품 신청이 가능 해 진답니다.

메뉴가 2가지네요.
Starter 버전과 Pro 버전 보시면 아시겠지만 Starter 은 FREE 버전이며 Pro 버전은 실제 서비스를 하기위한
상품 이라고 보시면 됩니다.
일단 맛 보기??? 이므로 FREE 를 선택 합니다.

그리고 Cluster/Region 을 선택 합니다.
한국 Region 이 있으면 좋겠지만… US Ease, US West 밖에 없군요.
전 US East(Virginia) 를 선택 합니다.

최종적으로 신청한 내역을 화인하고 Confirm 을 누릅니다. ( 일부 내용이 변경 되었습니다. )
이 경우 메일로 계정 활성화 정보가 날라올 것입니다.

계정 활성화가 되면…
콘솔 화면에 로그인을 할 수 있습니다.

 

 

 

 

 

이 후 프로젝트를 생성하고 서비스를 디플로이 할 수 있습니다. ( 기존 오픈 쉬프트와 거의 유사해요. )
리소스가 작아서 큰 서비스는 사용 할 수 없지만.

테스트 용도 또는 오픈쉬프트에 대한 확인 용도로 충분 하리라 생각 됩니다.

 

 

 

 

 

이번 포스팅은 Red Hat 의 지원 서비스에 대해서 입니다.

Log Reaper 라고…
쉽게 얘기하면 Log 분석 툴??? 정도 될까요? ( 해결 방법까지 제시를 해 줍니다. )

해당 툴은 아래의 로그 포멧을 지원 합니다.

  • Syslog (/var/log/messages)
  • Log4j logs (JBoss, RHEVM, ect..)
  • LSOF output
  • Apache access
  • VDSM logs

Link : https://access.redhat.com/labs/logreaper/

Link : https://access.redhat.com/labsinfo/logreaper

해당 툴은 서브스크립션 고객에 한하여 제공되는 서비스 입니다.

SNS 에서 netdata 관련 포스팅을 보고 급… 궁금해져서 설치를 진행 함.

요즘은 좋은 세상이라???  힘들게 컴파일 하지 않아도 되는???
컨테이너란 편리한 실행 방법이 있음.

관련 내용 : https://hub.docker.com/r/titpetric/netdata/

실행 방법 : ( RHEL7, CentOS7 기준 )

# yum install docker -y
>> docker 를 설치 함.
# systemctl start docker
>> docker 서비스 실행
# docker run -d --cap-add SYS_PTRACE -v /proc:/host/proc:ro -v /sys:/host/sys:ro -p 19999:19999 titpetric/netdata
>> docker 가 구동되어 있는 상태에서 위의 명령어를 입력하면 docker image 를 먼저 pull 하고  컨테이너를 run 함.
# docker ps -a
>> 실행 상태 확인

docker 컨테이너가 실행 되었다면 브라우져에서 아래의 주소로 접속

http://$(ip):19999
ex)
http://192.168.10.2:19999

 

페이지가 접속되면 아래와 같은 화면을 볼 수 있음.

호스트에 대한 전체 리소스 사용량

현재 docker 로 구동된 컨테이너 자원 사용량

kvm 기반 windows vm 자원 사용량

 

netdata 관련 정보 모음

표출 가능한 정보들 : 
Link : https://github.com/firehol/netdata

netdata 관련 Demo 모음 : 
Link : https://github.com/firehol/netdata/wiki

그 외 추가 가능한 챠트들을 제공함.
Link : https://github.com/firehol/netdata/wiki/Add-more-charts-to-netdata

마지막으로 시스템별 netdata 설치 방법 안내 :
Link :  https://github.com/firehol/netdata/wiki/Installation

 

 

아래의 문구가 출력되면서 Tvheadend-Testing 버전이 설치가 안 되는 경우?

Tvheadend-Testing :
이 패키지에 대해 구성된 포트 undefined이(가) 다른 서비스에서 사용 중이거나 시스템 용도로 예약되어 있습니다.
충돌하는 서비스를 비활성화 또는 수정하거나 개발자에게 연락하여 패키지 구성을 수정하십시오.

검색 결과??? 기존에 파일이 정상적으로 삭제가 되지 않아 문제가 된 것으로 추측됨.

# pwd
/usr/local/etc/services.d

# cat tvheadend-testing.sc
[tvheadend]
title=”Tvheadend-Testing”
desc=”Tvheadend-Testing”
port_forward=”yes”
dst.ports=”9981,9982/tcp”

위 파일을 삭제 하면 해결됨.

 

RHEL7(CentOS7) 기반의 grub2 의 사용법에 대해서 간단히 알아 보려고 한다.

 

1. grub2 의 커널 파라미터 설정(CMDLINE) 

기존에는 /etc/grub.conf or /boot/grub/grub.conf 를 수정해야 했으나 grub2 에서는 아래의 파일에 내용을 수정한다.

file : /etc/default/grub

 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.font=latarcyrheb-sun16 vconsole.keymap=ko crashkernel=256M

위 내용을 수정하고 아래 명령어를 실행 한다.

 

# grub2-mkconfig -o /boot/grub2/grub.cfg
 
Found linux image: /boot/vmlinuz-3.10.0-514.26.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.26.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.10.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.10.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-89f67b9113e64947ab85be3002ef89c9
Found initrd image: /boot/initramfs-0-rescue-89f67b9113e64947ab85be3002ef89c9.img

grub2-mkconfig 명령을 실행하면 위 /etc/default/grub 에 설정한 내용을 기반으로 모든 커널 라인에 해당 설정을 적용 해 준다.

 

2.  Default 커널 버전을 어떻게 설정 하는가?

우선 아래의 명령으로 커널 버전별 엔트리 및 인덱스 넘버를 확인 합니다.

 

 
# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

0 : CentOS Linux (4.12.2-1.el7.elrepo.x86_64) 7 (Core)
.
.
4 : CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)
5 : CentOS Linux (3.10.0-514.10.2.el7.x86_64) 7 (Core)
6 : CentOS Linux (0-rescue-89f67b9113e64947ab85be3002ef89c9) 7 (Core)

기본 항목은 / etc / default / grub 파일의 GRUB_DEFAULT 행에 의해 정의됩니다.
그러나 GRUB_DEFAULT 행이 saved로 설정되면 매개 변수는 / boot / grub2 / grubenv 파일에 저장됩니다.

# grub2-editenv list
 saved_entry=0

/boot/grub2/grubenv 파일은 수동으로 편집 할 수 없습니다. 아래의 명령어를 사용 하시기 바랍니다.

# grub2-set-default 2    <== 설정
# grub2-editenv list  <== 확인
saved_entry=2   <== 설정 결과

설정이 완료되면 reboot 을 합니다. 위에서 지정한 커널 버전으로 부팅 된 것을 확인 할 수 있습니다.

 

참고 : 
Link : https://wiki.centos.org/HowTos/Grub2