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

RHEL 제품에 대한 패치 버전중? z-stream 이 의미하는게 뭘까?
대충 짐작은 가지만??? 자세하게 알길이 없으니…

——————————————————————————————————————–
EUS streams are numbered X.Y.Z, where X is the major release number
Y is the minor release supported by the EUS stream, and Z signifies that
it is an EUS stream.
——————————————————————————————————————–
Link : https://www.redhat.com/f/pdf/rhel/LIFECYCLE_EUS_Datasheet_22_DEC.pdf

문서를 찾아 보던중… 위와 같은 내용을 발견했다.
X.Y.Z 라는 체계를 가져가며… X 는 메이져 번호, Y 는 마이너 번호 , Z 가 붙어 있으면…
EUS 버전이라는 뜻? 이라고 한다.

그리고 메이져, 마이너, 비동기 에레타? 에 대한 비교 자료도 함께 첨부 한다.
What’s the difference between a major, minor, and asynchronous release?
Link : https://access.redhat.com/solutions/401413

일반적인 경우엔 사용 할 일이 없겠지만.
피치 못할 사정으로 특정  CPU 이하로 사용해야 되는 경우가 발생 할 수 있다.
이런 경우??? 사용하는 방법…

우선 CPU 에 대한 정보 확인 해보자.

# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
core id : 0
cpu cores : 6
apicid : 0
initial apicid : 0
.
.
.
processor : 11
1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt
bogomips : 4200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
Stepping: 4
CPU MHz: 1899.761
BogoMIPS: 4200.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 15360K
NUMA node0 CPU(s): 0-11

위 내용 중 6-11 번까지 논리적인 CPU 쓰레드를 활성/비활성화 시키고 싶은경우 아래의 명령을 실행

### Disable
# echo 0 > /sys/devices/system/cpu/cpu6/online

.
.
echo 0 > /sys/devices/system/cpu/cpu11/online 

or

# chcpu -d 6,7,8,9,10,11
CPU 6 disabled
CPU 7 disabled
CPU 8 disabled
CPU 9 disabled
CPU 10 disabled
CPU 11 disabled

### Enable
# echo 1 > /sys/devices/system/cpu/cpu6/online
.
.
echo 1 > /sys/devices/system/cpu/cpu11/online 

or

# chcpu -e 6,7,8,9,10,11
CPU 6 enabled
CPU 7 enabled
CPU 8 enabled
CPU 9 enabled
CPU 10 enabled
CPU 11 enabled

위 명령은 OS 를 재 부팅 하게되면 초기화 되며 /etc/rc.local 등에 넣어서 사용하는게 좋다.

그리고 만약 장기적으로 특정 갯수 이하로 CPU 갯수를 비 활성화 해야 되는경우 아래의 방법을 사용하면 된다.

file : /etc/grub.conf
kernel 해당 라인에 maxcpus=??? 갯수를 입력하고 재부팅 하면 된다.

ex)
kernel /boot/vmlinuz-2.6.13 root=/dev/sda1 ro maxcpus=2

예전 기억으로 windows 에서 위의 UNIX Attributes 가 기본 기능으로 들어간 줄 알았는데
기본은 비 활성화 군요… 활성화 해야 쓸 수 있는데…

# Dism.exe /online /enable-feature /featurename:adminui /all
# Dism.exe /online /enable-feature /featurename:nis /all
# Dism.exe /online /enable-feature /featurename:psync

아마 위 명령어를 실행 시키면 reboot 이 실행 되었던거 같아요.

윈도우 2012R2 버전에서 ntp 를 연동하는 경우 설정 방법에 대해서 설명 한다.

# w32tm /config /manualpeerlist:”0.pool.ntp.org 1.pool.ntp.org” /syncfromflags:MANUAL
# Stop-Service w32time
# Start-Service w32time
>> ntp 서버 설정 및 서비스 재시작

# w32tm /query /status
>>  리눅스의 ntpq -p 와 같은 ntp 동기화 상태 보는 방법

# w32tm /resync
>> 다시 한번 sync 를 실행 해 주는 것

일반적으로 extX, xfs 등의 user,group quota  는 기본적으로 어느정도 이해가 있다고 생각하고
이번엔 xfs filesystem 의 project quota 설정 방법에 대해서 설명 해 볼까 합니다.

*) 본 내용은 RHEL7(CentOS7) 기반으로 작성되어 있으므로 설정 파일 위치나 이름이 다를 수 있습니다.

xfs filesystem 의 project quota 는 project 기반의 지정된 경로에 대하여 block, inode, realtime block 으로 제한이
가능하므로 여타 파일 시스템 보다 관리적인 효율이 좋다고 할 수 있다. ( Directory 기반으로도 가능 )

 

Step 1. /etc/fstab 에 pquota 옵션 추가 

#/etc/fstab
/dev/vg00/lv00 /data xfs defaults,pquota 0 0

Step 2. 마운트

# mount -a

Step 3. 마운트 확인 

# mount | grep /data
/dev/mapper/vg00-lv00 on /data type xfs (rw,relatime,attr2,inode64,prjquota)

Step 4. /etc/projects 파일 생성 ( quota 를 이용할 경로 )
프로젝트 넘버와 디렉토리 트리를 맵핑

ex)
project id : Directory Tree

# echo “1:/data/data1/” >> /etc/projects
# echo “2:/data/data2/” >> /etc/projects
# echo “3:/data/data3/” >> /etc/projects

Step 5. /etc/projid 파일 생성 ( quota 를 이용할 경로 )
프로젝트 넘버와 프로젝트 네임을 맵핑

ex)
project name : project id

# echo “data1:1” >> /etc/projid
# echo “data2:2” >> /etc/projid
# echo “data3:3” >> /etc/projid

Step 6. Project quota 실행 하기
project 와 제한을 걸려고 하는 Directory 맵핑 하기 

ex)
xfs_quota -x -c ‘project -s $(project name) ‘ $(Filesystem MountPoint)

# xfs_quota -x -c ‘project -s data1’ /data
# xfs_quota -x -c ‘project -s data2’ /data
# xfs_quota -x -c ‘project -s data3’ /data

Step 7. quota 제한 실행 하기
size 기반으로 제한을 걸기 

ex)
xfs_quota -x -c ‘limit $(limit options) $(project id)’ $(Filesystem Mount)

# xfs_quota -x -c ‘limit -p bsoft=300m bhard=350m 1’ /data

inode 기반으로 제한을 걸기 

ex)
xfs_quota -x -c ‘limit $(limit options) $(project id)’ $(Filesystem Mount)

# xfs_quota -x -c ‘limit -p isoft=500 ihard=700 1’ /data

Step 8. quota 제한 확인 하기
size 및 inode 기반 확인

ex)
xfs_quota -x -c ‘repore $(option)’ $(Filesystem Mount)

### inode size
# xfs_quota -x -c ‘report -ih’ /data
Project quota on /data (/dev/mapper/vg00-lv00)
Inodes
Project ID Used Soft Hard Warn/Grace
———- ———————————
#0      3     0     0     00 [——]
data1 331 500 700 00 [——]
data2 151 0     0     00 [——]
data3 201 0     0     00 [——]

### block size
# xfs_quota -x -c ‘report -h’ /data
Project quota on /data (/dev/mapper/vg00-lv00)
Blocks
Project ID Used Soft Hard Warn/Grace
———- ———————————
#0      0           0         0        00 [——]
data1 330.0M 300M 350M 00 [0 days]
data2 150M    100M 150M 00 [0 days]
data3 200M    150M 200M 00 [0 days]

위 방법을 사용하여 활용할 수 있는 부분은 nfs export 를 해야 하는 시스템에서 각 nfs export path 별로
사이즈 제한을 해야 되는경우 일반적으로 lvm 이나 partition 사이즈를 기반으로 사이즈 제한을 하지만.
>> 파일 시스템 갯수가 많아지므로 관리에 어려움이 발생 함.

1개의 Filesystem 기반의 xfs project quota 기능을 이용하여 Directory Tree 기반으로 제한을 하는경우
관리에 있어서 효율화를 이룰 수 있다.