달력

4

« 2019/4 »

  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
  •  
2019.04.17 12:07

Installing Nagios Agent (NRPE) on CentOS 7 Tech/Linux2019.04.17 12:07

Installing Nagios Agent (NRPE) on CentOS 7

CloudwaferHQ - July 13, 2018

 

After installing Nagios on our server, the next step is to install the Nagios agent. " Nagios Remote Plugin Executor". With NRPE, Nagios Administrators can use NRPE to monitor Linux servers as it allows you to remotely execute plugins/commands on our Linux machines and get the result back of the executed command.

 

In this guide, we will install NRPE on our CentOS 7 in order for it to be monitored through a Nagios server.

 

Deploying your cloud server
If you have not already registered with Cloudwafer, you should begin by getting signed up. Take a moment to create an account after which you can easily deploy your own cloud servers.

Once you have signed up, log into your Cloudwafer Client Area with the password provided in your mail and deploy your Cloudwafer cloud server.

 

Step 1: Install EPEL Repository
The NRPE packages and plugins which will be installed are available under the EPEL yum repository, Enable EPEL repository using one of the below commands.

rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

 

Step 2: Install NRPE and NRPE-plugins
Type the commands below to enable the EPEL repository followed by the command below to install NRPE and its plugins.

yum --enablerepo=epel -y install nrpe nagios-plugins

yum install -y nrpe nagios-plugins-all

 

Step 3: Configure NRPE Add-on

Next, we need to modify the NRPE configuration file to accept connection from the Nagios server by editing the /etc/nagios/nrpe.cfg file.

nano /etc/nagios/nrpe.cfg

Add the Nagios servers IP address, separated by comma like below.

allowed_hosts=127.0.0.1,192.168.1.1

 

Step 4: Configure Nagios Checks
There are some basic attributes and services to monitor on a Linux server which includes the CPU, Memory, Disk, HTTP, FTP, etc. The /etc/nagios/nrpe.cfg file contains the basic commands to check these attributes and services on remote hosts.

Listed below are some command lines that lets you monitor attributes with the help of Nagios plugins.

Note: The path to Nagios plugins may change depends on your operating system architecture (i386 or x86_64)

command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10

command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20

command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/centos-root

command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 20% -c 10%

command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200

Note: In the above command definition -w stands for warning and -c stands for critical.

 

Step 5: Restart NRPE
After entering the commands, restart the NRPE service:

systemctl start nrpe 
systemctl enable nrpe

 

Step 6 – Test NRPE from Nagios Server
Lastly, login to the Nagios server and execute the following command to verify that Nagios server is able to connect to clients NRPE services.

check_nrpe -H 196.168.1.2

If the connection is successful, it will show a version of clients NRPE package.

 

원본글 : https://cloudwafer.com/blog/installing-nagios-agent-npre-on-centos/

 

Installing Nagios Agent (NRPE) on CentOS 7

After installing Nagios on our server, the next step is to install the Nagios agent. " Nagios Remote Plugin Executor". With NRPE, Nagios Administrators can use NRPE to monitor Linux servers as it allows you to remotely execute plugins/commands on our Linux

cloudwafer.com

 

Posted by 멋지다마라송
2019.04.05 21:03

크론탭 crontab 정리 Tech/Linux2019.04.05 21:03

/etc/crontab 파일 - 설정방법 정리.

 

리눅스에서 정해진 시간마다 특정 파일을 실행할 수 있게 해주는 크론 cron 이 있습니다.

 

크게 /etc/crontab 파일을 수정하는 방법과,

로그인 계정마다 실행 주기와 실행 파일을 지정할 수 있는 crontab 실행파일이 있습니다.

 

서로 혼동될 수 있으니 두가지 방법중에서 하나를 정해 그거만 사용하는게 좋습니다.

 

저는 첫번째 방법인 /etc/crontab 파일만 사용합니다.

 

vi 로 파일을 열어서 수정하면 되고, 띄어쓰기나 탭으로 구분합니다.

 

구분되는 필드의 의미는 순서대로 

분   시   일   월   요일   유저   실행커멘드.가 됩니다.

 

분 : 0-59

시 : 0-23

일 : 1-31

월 : 1-12 

요일 : 0-7 (0과 7은 일요일입니다. 1=월요일)

 

 

예를 보면 쉽습니다.

 

매시 17분 : 한시간에 한번 실행.

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

 

매일 06시 25분 : 하루에 한번 실행.

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

 

매주 일요일 06시 47분 : 일주일에 한번 실행.
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

 

매월 1일, 06시 52분에 실행 : 한달에 한번 실행.
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

 

콤마 구분으로 여러개 지정, 나누어 떨어지는 숫자 지정 등도 가능합니다.

 

 

 

5분마다 실행.

*/5 * * * * root /bin/bash /root/bin/e5m.sh

 

00시 00분, 12시 00분에 실행.

00 00,12 * * * root /bin/bash /root/bin/2h.sh

 

짝수날 06시 25분 : 짝수날 한번 실행.

25 6  */2 * *   root /bin/bash /root/bin/e2d.sh

 

짝수달 01일 00시 00분에 실행 : 두달에 한번 실행.

00 00 01 */2 * root /bin/bash /root/bin/e2m.sh

Posted by 멋지다마라송
2018.10.18 23:56

Bash - if 구문 Tech/Linux2018.10.18 23:56


Bash - if 구문 


  1. #!/bin/bash
  2. # else example
  3. if [ $# -eq 1 ]
  4. then
  5. nl $1
  6. else
  7. nl /dev/stdin
  8. fi
OperatorDescription
! EXPRESSIONThe EXPRESSION is false.
-n STRINGThe length of STRING is greater than zero.
-z STRINGThe lengh of STRING is zero (ie it is empty).
STRING1 = STRING2STRING1 is equal to STRING2
STRING1 != STRING2STRING1 is not equal to STRING2
INTEGER1 -eq INTEGER2INTEGER1 is numerically equal to INTEGER2
INTEGER1 -gt INTEGER2INTEGER1 is numerically greater than INTEGER2
INTEGER1 -lt INTEGER2INTEGER1 is numerically less than INTEGER2
-d FILEFILE exists and is a directory.
-e FILEFILE exists.
-r FILEFILE exists and the read permission is granted.
-s FILEFILE exists and it's size is greater than zero (ie. it is not empty).
-w FILEFILE exists and the write permission is granted.
-x FILEFILE exists and the execute permission is granted.


TAG Bash, IF, Shell, 배시
Posted by 멋지다마라송

리눅스 서버 관리 - Parallel SSH - SSH 를 이용해서 여러대 리눅스 머신으로 명령어 보내기


중앙 서버에서 여러대의 리눅스 서버로 명령어를 보내도록 만들어서 편하게 관리할 수 있습니다.


먼저 Parallel SSH 를 설치합니다. 유저 user 는 루트 root 로 설치합니다.

# Debian 또는 Ubuntu
apt install python-pip python-setuptools
pip install parallel-ssh
apt install pssh

# 레드헷 RHEL, CentOS
yum install python-pip python-setuptools
pip install parallel-ssh
yum install pssh



아래와 같이 3대의 서버가 있다고 한다면,

1번 서버 : 192.168.1.100 : 중앙서버 : 이 서버에만 로그인을 해서 명령을 실행합니다.

2번 서버 : 192.168.1.101 : 호스트1 : 원격 명령이 실행될 서버1

3번 서버 : 192.168.1.102 : 호스트2 : 원격 명령이 실행될 서버2


1번 서버 : 중앙서버에서 SSH 퍼블릭 키를 만듭니다.


marasong@vm-marasong:~$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/marasong/.ssh/id_rsa): [엔터]

Enter passphrase (empty for no passphrase): [엔터]

Enter same passphrase again: [엔터]

Your identification has been saved in /home/marasong/.ssh/id_rsa.

Your public key has been saved in /home/marasong/.ssh/id_rsa.pub.

The key fingerprint is:


생성된 퍼블릭 키값을 호스트1, 2 두 서버에 복사합니다.

cat ~/.ssh/id_rsa.pub 


이런 형태로 나오는데,

2번 서버 : 192.168.1.101 / 3번 서버 : 192.168.1.102 : ~/.ssh/authorized_keys 파일에 저 내용을 복사합니다.


2번, 3번 서버에 .ssh 디렉토리가 없다면 디렉토리를 만들고 퍼미션을 수정합니다.

mkdir .ssh

chmod 700 .ssh

chmod 640 .ssh/authorized_keys


이제 1번 서버에서 2번, 3번 서버로 ssh 로그인을 해봅니다. 암호 없이 로그인이 가능해야 합니다.

ssh userID@192.168.1.101 -p 22

ssh userID@192.168.1.102 -p 22



2번, 3번 서버 정보를 hosts.test 파일로 저장합니다.


userID@192.168.1.101:22

userID@192.168.1.102:22


이제 아래와 같은 방법으로 여러 서버로 명령을 내릴 수 있습니다.


/usr/bin/parallel-ssh -i -h hosts.test "ls -al"




이걸 아래처럼 배시 스크립트로 만들어두면 편하게 이용할 수 있습니다.


#!/bin/bash


cmd_text=${1}


if [ -z "${cmd_text}" ]

then

        # 입력 파라미터 값이 없을때 기본값 정의

        cmd_text="ls"

fi


/usr/bin/parallel-ssh -i -h /home/ubuntu/hosts.test "${cmd_text}"



참고 : https://www.tecmint.com/




Posted by 멋지다마라송

CentOS 센트OS - 파라미터 최적화 스크립트


첨부파일 참조하여 주세요 ~ 

check.centos.sh


root 루트로 실행해야 합니다.


스왑이 0 일때 (스왑 파일이 없는 경우) echo 로 출력되는 부분을 그대로 한줄씩 실행하면 됩니다.


대신 메모리가 1기가라면

dd if=/dev/zero of=/data/swapfile bs=1M count=1024


8기가라면

dd if=/dev/zero of=/data/swapfile bs=1M count=8192


이렇게 실행하시면 됩니다.


#!/bin/bash

#echo -e "32768\t61000" > /proc/sys/net/ipv4/ip_local_port_range
#$ sysctl -w net.ipv4.tcp_wmem="253952 253952 16777216"
#$ sysctl fs.file-max
#$ sysctl fs.file-nr 

echo "----------------------------------"
check_value=`getenforce`
echo "GetEnforce : ${check_value}"
echo "----------------------------------"
echo -e "Parameter\tNow\tRecommand"
echo "----------------------------------"

# Recommand value = 0
recom_value="0"
for check_param in net.ipv4.tcp_timestamps net.ipv4.conf.all.accept_source_route net.ipv4.ip_forward net.ipv4.conf.all.accept_redirects net.ipv4.tcp_tw_reuse
do
        check_param2=${check_param%*.*}
        check_param3=`echo ${check_param} | sed -e "s/${check_param2}//" | cut -c 2-`
        check_value=`sysctl -n ${check_param}`

        if [ "$check_value" -eq "${recom_value}" ]
        then 
                echo -e "${check_param3}\t${check_value}\t${recom_value}\t OK"
        else
                echo -e "${check_param3}\t${check_value}\t${recom_value}"
                read -s -n1 -p "    ${check_param3} ${check_value}->${recom_value} : Submit Now? (y/n) : " submit_yn
                if [ "$submit_yn" == "y" ]
                then
                        echo -e "\tsysctl -w ${check_param}=${recom_value}"
                        echo "$check_param = \"${recom_value}\"" >> /etc/sysctl.conf 
                fi
                echo ${submit_yn}
        fi
done

# Recommand value = 1
recom_value="1"
for check_param in net.ipv4.icmp_echo_ignore_broadcasts net.ipv4.conf.all.log_martians net.ipv4.tcp_syncookies net.ipv4.tcp_window_scaling 
do
        check_param2=${check_param%*.*}
        check_param3=`echo ${check_param} | sed -e "s/${check_param2}//" | cut -c 2-`
        check_value=`sysctl -n ${check_param}`

        if [ "$check_value" -eq "${recom_value}" ]
        then 
                echo -e "${check_param3}\t${check_value}\t${recom_value}\t OK"
        else
                echo -e "${check_param3}\t${check_value}\t${recom_value}"
                read -s -n1 -p "    ${check_param3} ${check_value}->${recom_value} : Submit Now? (y/n) : " submit_yn
                if [ "$submit_yn" == "y" ]
                then
                        echo -e "\tsysctl -w ${check_param}=${recom_value}"
                        echo "$check_param = \"${recom_value}\"" >> /etc/sysctl.conf 
                fi
                echo ${submit_yn}
        fi
done


check_value=`sysctl -n .net.ipv4.ip_local_port_range`
echo -e "Port.Range\t${check_value}\t1024\t65535"
check_value=`sysctl -n .net.ipv4.tcp_max_syn_backlog`
echo -e "MAX.BackLog\t${check_value}\t1024"

check_value=`sysctl -n net.ipv4.tcp_max_tw_buckets`
echo -e "TcpTW.Buckets\t${check_value}\t65536"

# check : ulimit -a / sysctl -n fs.file-nr
check_value=`sysctl -n fs.file-max`
echo -e "FS.FileMax\t${check_value}\t77052"
check_value=`sysctl -n net.core.netdev_max_backlog`
echo -e "NetdevMxBackLog\t${check_value}\t30000"
check_value=`sysctl -n net.core.somaxconn`
echo -e "MaxConnections\t${check_value}\t1024"

echo "----------------------------------------------------------------------------"
free -m
echo "----------------------------------------------------------------------------"
swap_size=`free -m | grep -i swap | awk '{print $2}'`
if [ "$swap_size" -eq "0" ]
then
        echo -e "----------------------------------------------------------------------------"
        echo -e "\tdd if=/dev/zero of=/data/swapfile bs=1M count=[1024|2048|8192]"
        echo -e "\tmkswap /data/swapfile"
        echo -e "\tswapon /data/swapfile"
        echo -e "\tchmod 600 swapfile"
        echo -e "\t/data/swapfile swap swap defaults 0 0 >> /etc/fstab"
        echo -e "----------------------------------------------------------------------------"
fi

ulimit -a
echo "----------------------------------------------------------------------------"

echo "sysctl -p"
sysctl -p


sysctl 이라는 명령어로 수정합니다.

수정할때에는 sysctl -w [파라미터] 로 수정하고, 적용은 sysctl -p 하면 됩니다.


Posted by 멋지다마라송