2015년 1월 29일 목요일

MRTG 설치하기




기본적으로 APM 설치가 되어있어야 한다.


APM yum 설치하기




1. 준비사항

CentOS, APM




2. snmp 설치

1) snmp 설치
[root@nell /]# yum install net-snmp*





 2) /etc/snmp/snmpd.conf 설정


# First, map the community name "public" into a "security name"
#       sec.name  source          community
#com2sec notConfigUser  default       public
com2sec fserver          127.0.0.1     community

# Second, map the security name into a group name:
#       groupName      securityModel securityName
#group   notConfigGroup v1           notConfigUser
#group   notConfigGroup v2c           notConfigUser
group    fgroup         v1      fserver
group    fgroup         v2c    fserver
# Third, create a view for us to let the group have rights to:
# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
#view    systemview    included   .1.3.6.1.2.1.1
#view    systemview    included   .1.3.6.1.2.1.25.1.1
view     all           included   .1
# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
#access  notConfigGroup ""      any       noauth    exact  systemview none none
access   fgroup         ""      any       noauth    exact  all        none none


3) snmp 데몬 실행

/etc/init.d/snmpd start







3. MRTG 설치

[root@nell /]#  cd /usr/src
[root@nell /]#  wget http://oss.oetiker.ch/mrtg/pub/mrtg-2.17.4.tar.gz
[root@nell /]#  tar xvfz mrtg-2.17.4.tar.gz
[root@nell /]#  cd mrtg-2.17.4
[root@nell /]#  ./configure –with-gd=/usr/local/gd –with-z=/usr/local/zlib –with-png=/usr/local/libpng
[root@nell /]#  make
[root@nell /]#  make install




4. MRTG 웹 설정

  1) 웹설정 (<Directory> 설정)
[root@nell /]#  adduser mrtg
[root@nell /]#  mkdir /home/mrtg/public_html
[root@nell /]#  mkdir /home/mrtg/public_html/localhost
[root@nell /]#  mkdir /home/mrtg/conf
[root@nell /]#  chmod 755 /home/mrtg
[root@nell /]#  chown mrtg.mrtg /home/mrtg
[root@nell /]#  vi /etc/httpd/conf/httpd.conf

~ 중략 ~
<IfModule mod_userdir.c>
    # UserDir disabled
    UserDir public_html

</IfModule>
<Directory /home/*/public_html>
</Directory>
~ 중략 ~








2) cfgmaker
   (모니터링할 대상항목의 Config 파일을 생성하는 작업 )


[root@nell /]#  cd /usr/local/mrtg-2/bin
[root@nell /]#  ./cfgmaker –global 'WorkDir: /home/mrtg/public_html/localhost' –global 'Options[_]: bits,growright' –output /home/mrtg/conf/localhost.cfg community@127.0.0.1







3) 모니터링 Config 수정
  (/home/mrtg/conf/localhost.cfg 하단부에 추가 합니다.)




### CPU Load Average ###
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:community@127.0.0.1
MaxBytes[cpu]: 2000
#Unscaled[cpu]: dwmy
Options[cpu]: integer, gauge,withzeroes, growright, noinfo, nopercent
YLegend[cpu]: CPU Load Average
ShortLegend[cpu]: (%)
LegendI[cpu]: Aver 1/minite
LegendO[cpu]: Aver 5/min
Legend1[cpu]: Aver 1/minite
Legend2[cpu]: Aver 5/min
Title[cpu]: CPU Load
PageTop[cpu]: </p><h1>CPU Load Average</h1>
### Rate of CPU use ###
Target[cpu_use]: .1.3.6.1.4.1.2021.11.50.0&.1.3.6.1.4.1.2021.11.52.0:community@127.0.0.1
MaxBytes[cpu_use]: 100
Options[cpu_use]: growright, noinfo, nopercent
YLegend[cpu_use]: CPU usage(%)
ShortLegend[cpu_use]: (%)
LegendI[cpu_use]: User
LegendO[cpu_use]: System
Legend1[cpu_use]: CPU usage(User)(%)
Legend2[cpu_use]: CPU usage(System)(%)
Title[cpu_use]: Rate of CPU use
PageTop[cpu_use]: <h1>Rate of CPU use</h1>
### Memory Free ###
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:community@127.0.0.1
MaxBytes1[mem]: 7513968
MaxBytes2[mem]: 7513968
Unscaled[mem]: dwmy
Options[mem]: gauge, growright, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: RAM [MBytes]
Legend2[mem]: Swap Memory [MBytes]
Title[mem]: Memory Free
PageTop[mem]: <h1>Memory Free</h1>






4) indexmaker 및 mrtg 쿼리
[root@nell /]#  cd /usr/local/mrtg-2/bin
[root@nell /]#  ./indexmaker –title "Localhost" /home/mrtg/conf/localhost.cfg > /home/mrtg/public_html/localhost/index.html
[root@nell /]#  env LANG=C /usr/local/mrtg-2/bin/mrtg /home/mrtg/conf/localhost.cfg


------------------------------------------------


5. 웹사이트 및 crontab 적용
 
 1) 리다이렉션 페이지 생성

[root@nell /]#  cat > /home/mrtg/public_hml/index.html
<meta http-equiv="refresh" content="1;url=./localhost/index.html">




  2) 모니터링 스크립트 작성 및 crontab 등록


[root@nell /]#   cat > /script/mrtg.sh

#!/bin/bash
env LANG=C /usr/local/mrtg-2/bin/mrtg /home/mrtg/conf/localhost.cfg



[root@nell /]#  crontab -e 
*/1 * * * * /scripts/mrtg.sh






























APM(Apache + PHP + Mysql) yum 설치




1. APM 설치

[root@nell /]# yum -y install httpd php mysql mysql-server php-mysql






2. 라이브러리 설치

[root@nell /]# yum -y install zlib zlib-devel freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel php-gd php-xml php-mbstring






3. 서비스 시작

[root@nell /]# service httpd restart; service mysqld restart






4. RHEL Repository 추가

[root@nell /]# cd /usr/src
[root@nell /]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@nell /]# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
[root@nell /]# rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
[root@nell /]# ls -1 /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo







5. php-mcrypt 설치

[root@nell /]# yum -y install libmcrypt libmcrypt-devel php-mcrypt





6. Directory 설정 및 phpMyadmin 설치

1) Apache Directory 설정 (httpd.conf 편집)

[root@nell /]# vi /etc/httpd/conf/httpd.conf

 # UserDir disabled
       UserDir public_html



2) phpMyadmin 설치

[root@nell /]# adduser phpma
[root@nell /]# cd /home/phpma
[root@nell /]# wget http://jaist.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.1.12/phpMyAdmin-4.1.12-all-languages.tar.gz
[root@nell /]# tar xvfz phpMyAdmin-4.1.12-all-languages.tar.gz
[root@nell /]# mv phpMyAdmin-4.1.12-all-languages public_html
[root@nell /]# chown phpma.phpma ./public_html/ -R
[root@nell /]# chmod 755 /home/phpma























awk 사용방법

“awk 는 유닉스에서 처음 개발된 스크립트 언어로 텍스트 형태로 되어있는 데이타를 필드로 구분하여 처리하는 기능을 기본으로 합니다. 주로 패턴검색과 조작을 통해  레포트를 만드는 등의 작업에 사용됩니다. 여기서는 awk 를 활용할 수 있는 몇가지 예제와 문법을 설명합니다. 
1. awk 활용예제
 1) date 명령의 결과값을 awk 로 년도와 월만 출력하는 보고서 형태
[root@localhost ~]# date | awk '{print "Year : "$1 "\nMonth : "$2}'
Year : 2015.
Month : 01.
2) /etc/passwd 파일을 ‘:’ 구분자로 나누어 세번째 필드 uid 가 500 이상인 경우 첫번째 필드 출력
[root@localhost ~]# cat /etc/passwd | awk -F: '$3 > 500 {print $1}'
apple
mark
kimC
3) 디스크 사용량이 10MB 이상인 경우만 출력
[root@localhost home]# du ./ | awk '$1 > 10000 {print}'
10604   ./abc/public_html/locale
33296   ./abc/public_html
41864   ./abc
4) ClamAV 스캔결과 감염된 파일에 대한 내용을 수합한 파일 test.txt 에서 전체 합계를 구하기
[root@localhost home]# cat test.txt
Infected files: 0
Infected files: 0
Infected files: 3
Infected files: 0
Infected files: 0
Infected files: 5
Infected files: 1
Infected files: 0
Infected files: 1
[root@localhost home]# awk '{sum += $3 } END {printf "SUM : " sum"\n"}' ./test.txt
SUM : 10
– 여려개의 txt 파일에서 한번에 합계 구하기
[root@localhost ~]# find ./ -name '0*.txt' | xargs cat | awk '$1 == "Infected" {sum += $3 } END {printf "SUM : " sum"\n"}'
SUM : 10
5) /var/log 디렉토리에 500MB 이상 파일을 압축
[root@localhost log]# ls -al mes* | awk '$5 > 500000 {system("gzip -f "$8)}'
6) 로그인 정보 중 root 가 로그인한 로그 중 부팅시 발행한 로그를 제외하고 출력
[root@localhost ~]# last | awk '$1 =="root" && $3 != "boot" {print}'
root     pts/0        192.168.11.6     Tue Jan 20 09:03   still logged in
root     tty1                          Tue Jan 20 09:02   still logged in
root     pts/0        192.168.11.6     Tue Jan 20 01:02 - down   (00:24)
~
2. awk 문법
1)  awk 프로그램의 구조
awk ‘패턴 {액션}’ 파일명
2) awk 의 패턴
BEGIN    입력화일을 읽어들이기 전 옆에 제시되는 문자열을 실행
END       awk 가 모든 입력을 처리한 후 옆에 제시되는 문자열을 실행
3) awk 의 연산자
=    +=    -=    *=    /=    %=    배정연산자
+    –    *    /    %    ++    —      산술연산자
||    &&    !                            논리연산자(OR, AND, NOT)
>    >=    <    <=    ==    !=      비교연산자
v ~p                                       변수 v가 패턴 P에 부합되면 참
v !~p                                      변수 v가 패턴 P에 부합되지 않으면 참
4) awk 에 미리 정의된 변수
변수              내용
FILENAME    현재 처리되고 있는 입력 파일의 이름
FS                  입력 필드 분리문자
NR                 현재 레코드(행)의 번호
NF                  현재 레코드(행)의 필드의 갯수
OFS                출력되는 필드의 분리문자

windows xcopy와 robocopy (rsync와 같음) 옵션 및 사용방법



1. Robocopy 사용법

 1) 사용 예
c:\robocopy d:\data e:\back /MIR /R:1 /LOG:e:\back\backup_log_%date%.txt

2) 사용법
robocopy 원본 대상 [옵션]
3) 옵션
/E                            ::    비어 있는 디렉터리를 포함하여 하위 디텍터리를 복사
/L                            ::    실제 복사하지 않고 목록만 출력
/XF file [file]…       ::    지정된 이름/경로/와일드카드와 일치하는 파일을 제외
/XD dirs [dirs]…    ::    지정된 이름/경로와 일치하는 디렉터리를 제외
/PURGE                 ::    원본에 없는 대상 파일/디렉터리를 삭제
/MIR                      ::    미러링. /E 와 /PURGE 를 함께 쓰는 것
/R:n                       ::    실패한 복사본에 대한 다시 시도 횟수
/W:n                      ::    다시 시도 간 대기시간
/LOG:file               ::    상태를 로그파일에 출력
robocopy/? 통해 많은 옵션을 확인가능



-------------------------------------

2. xcopy 사용법

1) xcopy 사용 예
@echo off
xcopy /C/R/E/D/H/S/Y D:\data E:\back

2) 사용법
xcopy [옵션] 원본 대상
3) 옵션
/C        오류가 생겨도 계속복사
/R        읽기 전용 파일을 겹쳐쓰기
/E        비어 있는 경우를 포함 디렉터리와 하위 디렉터리를 복사
/D        대상 파일보다 새로운 원본 파일만 복사
/H        숨겨진 파일과 시스템 파일도 복사
/S        비어 있지 않는 디렉터리와 하위 디렉터리를 복사
/Y        기존 대상 파일을 덮어쓸지 여부를 묻지 않음











2015년 1월 28일 수요일

xcopy 배치파일




예)
@echo off

xcopy C:\Backup D:\Database_Backup\ /s /e /y





옵션 

----------------------------------------------------------------------
SET SOURCE=원본파일이들어있는 디렉토리
SET DESTINATION=복사할 목적지 디렉토리

xcopy.exe %SOURCE% %DESTINATION% /S /E /Y /D
----------------------------------------------------------------------




xcopy /?

파일과 디렉터리 트리를 복사합니다.
XCOPY 원본 [대상] [/A | /M] [/D[:데이터]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
                           [/EXCLUDE:파일1[+파일2][+파일3]...]
  원본         복사할 파일을 지정합니다.
  대상         새 파일의 디렉터리와 또는 파일 이름을 지정합니다.
  /A           보관 특성을 가진 파일을 복사하며, 보관 특성을 수정하지
               않습니다.
  /M           보관 특성을 가진 원본 파일을 복사하며, 보관 특성을
               지웁니다.
  /D:m-d-y     지정된 날짜 이후에 바뀐 파일만 복사합니다.
               날짜가 지정되지 않으면, 대상 파일보다 새로운 원본 파일만
               복사합니다.
  /EXCLUDE:파일1[+파일2][+파일3]...
               문자열을 포함하는 파일 목록을 지정합니다.
               각 문자열은 파일의 다른 행에 있어야 합니다.
               일부 문자열이 복사할 파일의 절대 경로의 일부분과
               일치하면 복사할 파일에서 제외됩니다.
               예를 들면, \obj\ 또는 .obj에서는 obj 디렉터리 내의
               모든 파일을 제외하거나 .obj 확장자를 갖는 모든 파일을
               제외합니다.
  /P           각 대상 파일을 만들기 전에 물어봅니다.
  /S           비어 있지 않은 디렉터리와 하위 디렉터리를 복사합니다.
  /E           디렉터리와 하위 디렉터리를 (비어 있어도) 복사합니다.
               /S /E 스위치와 같으며, /T를 수정하는 데 사용될 수 있습니다.
  /V           각각의 새 파일을 확인합니다.
  /W           복사하기 전에, 아무 키나 누르라고 프롬프트합니다.
  /C           오류가 생겨도 복사를 계속합니다.
  /I           대상을 찾을 수 없고 두 파일 이상을 복사하면, 대상을 디렉터리로
               지정합니다.
  /Q           복사하는 동안 파일 이름을 표시하지 않습니다.
  /F           복사하는 동안 원본과 대상 파일의 전체 경로 를 표시합니다.
  /L           복사는 하지 않고, 복사할 파일을 표시만 합니다.
  /G           암호화 기능을 지원하지 않은 대상에 암호화된 파일을
               복사하도록 허용합니다.
  /H           숨겨진 파일과 시스템 파일도 복사합니다.
  /R           읽기 전용 파일을 겹쳐 씁니다.
  /T           파일은 복사하지 않고 디렉터리 구조만 복사합니다. 빈 디렉터리와
               하위 디렉터리는 포함되지 않습니다. /T /E 스위치를 함께 사용하면
               빈 디렉터리와 하위 디렉터리를 포함합니다.
  /U           대상에 이미 있는 파일을 업데이트합니다.
  /K           특성을 복사합니다. 일반적으로 Xcopy는 읽기 전용 특성을 지웁니다.
  /N           만들어진 짧은 파일 이름을 사용하여 복사합니다.
  /O           파일 소유권과 ACL 정보를 복사합니다.
  /X           파일 감사 설정을 복사합니다(/O 의미).
  /Y           이미 있는 대상 파일을 덮어쓸지를 확인하기 위해
               묻는 것을 금합니다.
  /-Y          이미 있는 대상 파일을 덮어쓸지를 확인하기 위해
               묻습니다.
  /Z           다시 시작할 수 있는 모드에서 네트워크 파일을 복사합니다.
/Y 스위치가 COPYCMD 환경 변수에 나타날 수 있다.
명령줄에 있는 /-Y와 함께 무시될 수 있다.