http://www.cyberciti.biz/faq/comparing-numbers-in-bash-shell/
2016년 6월 25일 토요일
AWS CloudWatch 메모리 감시 | AWS CloudWatch Memory Monitoring
Step 1
Make a policy for CloudWatch monitoring at IAM.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics",
"cloudwatch:PutMetricData",
"ec2:DescribeTags"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Step 2
Add CloudWatch monitoring policy to an IAM user, and get AWSAccessKeyID and AWSSecretKey .
Step 3
Run this script.
#!/bin/bash
set -e
sudo su -p <<HERE
# yum packages
yum -y install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https
# install cloudwatch monitoring scripts
cd /opt/aws
curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm -rf CloudWatchMonitoringScripts-1.2.1.zip
touch /opt/aws/aws-scripts-mon/awscreds.conf
# awscreds
echo 'AWSAccessKeyId=XXXXXXXXXXXXXXXX' >> /opt/aws/aws-scripts-mon/awscreds.conf
echo 'AWSSecretKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' >> /opt/aws/aws-scripts-mon/awscreds.conf
# crontab
echo '*/1 * * * * /opt/aws/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail' >> mycron
crontab mycron
rm -rf mycron
HERE
Step 4
Now you can get metrics about memory at CloudWatch.
빈 crontab에 job 더하기 | Add a job to an empty crontab
echo '*/1 * * * * /path/job' >> mycron
crontab mycron
rm -rf mycron
2016년 6월 24일 금요일
Linux 메모리 확인 | Linux Memory Check
Entire memory usage
free -m
Memory usage of each process
ps aux --sort -rss
2016년 6월 23일 목요일
2016년 6월 22일 수요일
캐시 Redis 설정 | Redis configuration as a cache
You may use Redis as a database. However, in order to use Redis as a cache, you have to modify the configuration.
Modification options
maxmemory 100mb
maxmemory-policy allkeys-lru
stop-writes-on-bgsave-error no
Entire configuration as a cache
# Default - http://download.redis.io/redis-stable/redis.conf
bind 127.0.0.1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 100mb
maxmemory-policy allkeys-lru
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
How to set timeout for a key-value set?
Use this command instead of SET [key] [value].
SETEX [key] [expire-time(seconds)] [value]
Read more
2016년 6월 21일 화요일
AWS Amazon Linux EC2에 Nginx와 pm2, nvm을 이용해서 Node.js 서버 구축 | Deploy Node.js server with Nginx, pm2 and nvm on AWS Amazon Linux EC2
deploy.conf - Configuration file for deploy scripts
#!/bin/bash
set -e
YUM_PACKAGES='gcc gcc-c++ git nginx'
NODEJS_VERSION='4.4.5'
PROJECT_NAME='aws-nodejs'
WEB_ROOT='/var/www'
PROJECT_DIR=$WEB_ROOT'/'$PROJECT_NAME
SSH_HOST='aws-nodejs'
_initialize - Deploy script to initialize EC2 and start Node.js application
set -e
source ./deploy.conf
sudo su -p <<HERE
set -e
# Set locale to C
echo 'LC_ALL=C' >> /etc/sysconfig/i18n
export LC_ALL=C
# yum packages
yum -y update
yum -y install $YUM_PACKAGES
# nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
source ~/.bashrc
nvm install $NODEJS_VERSION
nvm use $NODEJS_VERSION
# user www-data
mkdir -p $PROJECT_DIR
useradd www-data
usermod -a -G www-data ec2-user
# Extract project
tar -xzf /home/ec2-user/$PROJECT_NAME.tar.gz -C $PROJECT_DIR
# directory permission
chown -R www-data:www-data $WEB_ROOT
chmod 2775 $WEB_ROOT
find $WEB_ROOT -type d -exec sudo chmod 2775 {} +
find $WEB_ROOT -type f -exec sudo chmod 0664 {} +
# npm install
cd $PROJECT_DIR
npm install --save
# pm2
npm install -g pm2
pm2 start $PROJECT_DIR/server.js
pm2 save
pm2 startup amazon -u www-data
chmod u+x /etc/init.d/pm2-init.sh
chkconfig --add pm2-init.sh
chown -R www-data:www-data ~/
# nginx
yes | cp -rf $PROJECT_DIR/deploy/nginx.conf /etc/nginx
chkconfig nginx on
# service
service nginx start
HERE
_release - Deploy script to release Node.js application
#!/bin/bash
set -e
source ./deploy.conf
sudo su -p <<HERE
set -e
source ~/.bashrc
# Extract project
tar -xzf /home/ec2-user/$PROJECT_NAME.tar.gz -C $PROJECT_DIR
# directory permission
chown -R www-data:www-data $WEB_ROOT
chmod 2775 $WEB_ROOT
find $WEB_ROOT -type d -exec sudo chmod 2775 {} +
find $WEB_ROOT -type f -exec sudo chmod 0664 {} +
# nginx
yes | cp -rf $PROJECT_DIR/deploy/nginx.conf /etc/nginx
# service
service nginx restart
service pm2-init.sh restart
HERE
Read More
2016년 6월 13일 월요일
Django에서 Celery 설정 | Celery with Django
pip packages
$ pip install celery
[project]/celery.py
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '[project].settings')
app = Celery('[project]')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
[project]/settings.py
from datetime import timedelta
CELERY_TIMEZONE = 'UTC'
CELERYBEAT_SCHEDULE = {
'schedule-30-seconds': {
'task': 'helpers.tasks.sum_and_print',
'schedule': timedelta(seconds=30),
'args': (1, 2),
}
}
helpers/__init__.py
(empty)
helpers/tasks.py
from celery import shared_task
@shared_task(time_limit=30)
def sum_and_print(a, b):
result = a + b
print(result)
How to execute
$ python manage.py runserver
$ exec celery -A [project] worker -B --loglevel INFO --purge
Read More
2016년 6월 12일 일요일
Shell 사칙연산 | Shell Arithmetic Operations
a=5
b=2
let c=a+b
echo $c
7
a=5
b=2
echo $(($a+$b))
echo $(($a-$b))
echo $(($a*$b))
echo $(($a/$b))
7
3
10
2