전체 글

IT/Clean Code

[Clean Code] 2-1 Class 와 Method 이름

Class 이름 Class와 Object의 이름은 명사가 적합하다. [Good] Customer, WikiPage, Account, AddressParser [Bad] Manager, Processor, Data, Info Method 이름 Method와 Function의 이름은 동사가 적합하다. [Good] postPayment, deletePage, save javabean 표준에 따라서 Accessor(접근자), Mutator(변경자), Predictate(조건자)는 앞에 get, set, is 를 붙인다. 이름을 혼용하지마라 여러 Class에 add() 함수의 역할과 Paramerter와 Return 이 동일하다면 계속 사용해도 되지만 기존과 다른 성격을 지닌다면 insert() 나 append(..

Python/Open Source

[Python] Colorful print

Example from colorful_print import color color.black('Print Black') color.red('Print Red') color.green('Print Green') color.yellow('Print Yellow') color.blue('Print Blue') color.magenta('Print Magenta') color.cyan('Print Cyan') color.white('Print White') print() color.red('Print Red') color.green('Print Bold Green', bold = True) color.yellow('Print Bold Italic Yellow', bold = True, italic = True..

Infrastructure/Fluentd

[Fluentd] MySQL slow log 연동

Fluentd MySQL slow log 연동하기 MySQL slow log MySQL slow log 는 멀티라인입니다. 따라서, conf 를 꿍짞꿍짝 해서 나중에 수정불가한 conf 를 생성 하거나 open soruce 사용해서 연동을 하면 되는데 착하신 분이 미리 mysqlslowquery 라는 것을 만들어 놓아서 이걸로 연동 했습니다. 설치 및 사전 준비 gpasswd mysql -a td-agent apt install -y ruby ruby-dev libc6-dev # 현재 서버에서 사용중인 gem 레포지가 # td-agent-gem 인지 fluentd-gem 인지 gem 인지 먼저 확인하세요 td-agent-gem install fluent-plugin-mysqlslowquery설정 # IN..

Infrastructure/Prometheus

Promtheus + MySQL Exporter 연동

MySQL Exporter 설치 및 연동 MySQL Exporter 다운로드 # 버전 MySQL >= 5.6. MariaDB >= 10.2 # 유저 없으면 추가, 있으면 접속 useradd -m -s /bin/bash prometheus su - prometheus # 다운로드 wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz tar zxvf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz mv mysqld_exporter-0.13.0.linux-amd64/ mysql_exporter exit MySQL 에 권한 추..

Infrastructure/Prometheus

Prometheus + Node Exporter + Grafana 연동

프로메테우스 설치 https://prometheus.io/ # 유저 추가 useradd -m -s /bin/bash prometheus su - prometheus # 다운로드 cd /home/prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.28.0/prometheus-2.28.0.linux-amd64.tar.gz tar -xzvf prometheus-2.28.0.linux-amd64.tar.gz # 폴더명 변경 로그아웃 mv prometheus-2.28.0.linux-amd64/ prometheus exit# 시스템 서비스 등록 vi /etc/systemd/system/prometheus.service [Unit..

OS/Ubuntu

[Ubuntu 20.04] MySQL 5.6.xx 설치

삭제 cd /home rm /var/lib/mysql/ -R rm /etc/mysql/ -R apt-get autoremove -y mysql* --purge apt-get remove -y apparmorMySQL 설치 apt install -y libaio1 libncurses5 groupadd mysql useradd -g mysql mysql wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz tar -xvf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz mv mysql-5.6.51-linux-glibc2.12-x86_64 /usr/local/mysql..

Infrastructure/Fluentd

[Fluentd] Php 연동

PHP 연동 PHP 7 이상 (https://github.com/fluent/fluent-logger-php) composer.json 추가 "fluent/logger": "1.0.*" PHP 7 미만 (https://github.com/DQNEO/php-fluent-simplelogger) 오픈소스 라이브러리 설치 샘플 use Fluent\Logger\FluentLogger; defined('BASEPATH') or exit('No direct script access allowed'); function f_log(string $label, array $data) { try { # TODO : Constants setting $logger = new FluentLogger('192.168.10.7', ..

Infrastructure/Fluentd

[Fluentd] Python 연동

테스트 환경 : python3.7 라이브러리 설치 $ pip install fluent-logger 샘플 소스 def log(label: str, data: dict): try: from fluent import sender, event except ImportError: raise ImportError('Install fluent-logger. pip install fluent-logger') try: # TODO : Constants setting sender.setup(tag = 'apps', host = 'localhost', port = 24232) event.Event(label, data) except Exception as e: # TODO : 에..

Infrastructure/Fluentd

[Fluentd] 8. Prometheus 연동

Prometheus 연동 https://github.com/fluent/fluent-plugin-prometheus Prometheus 플러그인은 총 6개를 제공 연동전 설치 CentOS 라 td-agent $ td-agent-gem install fluent-plugin-prometheus 샘플 input plugin 은 promethues 사용해서 server_ip:24231/metrics 를 리스닝 상태로 두고 output plugin은 prometheus_output_monitor 사용해서 10 초마다 promethues 에서 pull 해가도록 한다. @type prometheus bind 0.0.0.0 port 24231 metrics_path /metrics @type prometheus_ou..

Infrastructure/Fluentd

[Fluentd] 7. Nginx 연동

Nginx 로그 연동 개요 리눅스 서버에서 nginx의 access log 와 error log 를 수집하려고 한다. 우선, Nginx 는 날짜별로 파일 로그를 생성하고 날짜가 지나면 압축시켜 버린다. 그렇다면 Input 시에는 현재 작성하고 있는 파일에 접근해서 데이터를 수집해야 하기때문에 Input 플러그인은 tail 을 사용할 것이고 tail plugin은 access.log, error.log 를 대상으로 수집을 진행 할것이다. 또, Nginx 폴더에 그룹 권한이 admin으로 되어 있다. fluentd 를 adm 그룹으로 추가해주자. # CentOS 7 $ gpasswd adm -a td-agent 연동 @type tail @label @NGINX_LOG @id NGINX_ACCESS_LOG t..

Infrastructure/Fluentd

[Fluentd] 6. 서버간 연동

서버간 연동 aggregator 서버 @type forward @id input_forward port 24232 bind 0.0.0.0 @type stdout @id output_nginx @log_level debug forwarder 서버 @type tail @label @NGINX_LOG @id NGINX_ACCESS_LOG tag nginx.access path /var/log/nginx/access.log pos_file /var/log/td-agent/nginx-access.log.pos @type nginx @type tail @label @NGINX_LOG @id NGINX_ERROR_LOG tag nginx.error path /var/log/nginx/error.log pos_file..

Infrastructure/Fluentd

[Fluentd] 5. Output plugin

Output Plugin https://docs.fluentd.org/output file file 은 이름처럼 데이터를 파일로 생성 @type file path /var/log/fluent/myapp compress gzip timekey 1d timekey_use_utc true timekey_wait 10m forward output 에서 forward 는 local fluentd 데이터를 external fluentd 로 전송해 줌 아래 보면 myserver1과 myserver2 로 local event data를 전송해주고 운영시에 장애가 발생해도 문제 없이 운영이 가능 하도록 2개의 서버로 데이터를 보내는 것 유추 쌉가능 @type forward send_timeout 60s recover_w..

Infrastructure/Fluentd

[Fluentd] 4. Input plugin

Input Plugin https://docs.fluentd.org/input tail tail 은 꼬리로, 텍스트 파일의 꼬리를 쫓는다. 리눅스 커맨드 tail 과 비슷하다. 아래는 Nginx access log tail 샘플 @type tail @label @NGINX_LOG @id NGINX_ACCESS_LOG tag nginx.access path /var/log/nginx/access.log pos_file /var/log/td-agent/nginx-access.log.pos @type nginx @log_level debug forward forward 는 포트 열고 통신 대기한다고 생각하면 됨 fluentd -> fluentd fluentd -> prometheus @type forward ..

Infrastructure/Fluentd

[Fluentd] 3. 설정 파라미터

설정 Common Parameter @type type 은 plugin 의 이름? 을 지정 @type my_plugin_type @type my_filter @id id 는 설정의 unique 값으로, buffer, storage, logging 등에서 사용 @type file @id service_www_accesslog path /path/to/my/access.log # ... @log_level log_level 은 log의 level 을 지정으로 system 선언에서 전체 log_level(default:info) 를 지정할 수도 있고, 특정 플러그인의 log level을 선언할 수도 있다. log_level info # ... @log_level debug # shows debug log on..

Infrastructure/Fluentd

[Fluentd] 2. 설정 개요

설정 How Does Fluentd Works 우선 Fluentd 에서 모듈별로 어떻게 작동하는지 순서를 봐보자. 그렇다고 한다. Component Role Input Input 은 로그를 수집하는 Plugin. Input 플러그인은 외부에서 event log 를 pull 후 fluentd 로 전송 이외에도 착하고 똑똑한 애들이 미리 개발 해놓은 Extension Plugin 설치를 통해 사용할 수 있음. Parser (option) Parser 는 Input 으로 읽은 데이터의 포맷이 fluentd에서 지원하지 않는 경우에 파싱을 위해 선택적으로 사용. Filter (option) Filter 는 Output 으로 보내기 전에 뭔가를 한다. 필터링 데이터 필드 추가, 삭제, 마스킹 로그 데이터에서 라벨..

Infrastructure/Fluentd

[Fluentd] 1. 설치

Before Installation Increase the Maximum Number of File Descriptors # 확인 $ ulimit -n 65535 # 서버마다 다른지 모르겠지만, CentOS는 1024가 default # 아래 파일 내용 추가 $ vi /etc/security/limits.conf root soft nofile 65536 root hard nofile 65536 * soft nofile 65536 * hard nofile 65536 systemd 서비스 사용중인 os는 'LimitNOFILE=65536' 추가, 이외 os 는 default 로 set 되어 있음 Optimize the Network Kernel Parameters $ vi /etc/sysctl.conf ne..

OS/Centos

[CentOS] CPU, Memory 사용량 로그

CentOS CPU, Memory 사용량 로그 확인하기 #설치 yum insatll sysstat # 크론탭 확인 cat /etc/cron.d/sysstat CPU 사용률 # CPU 사용률(오늘) sar # CPU 사용률(날짜별) sar -f /var/log/sa/sa날짜 메모리 사용률 # 메모리 사용률 (오늘) sar -r # 메모리 사용률 (날짜별) sar -r -f /var/log/sa/sa날짜

OS/Centos

[CentOS 7] Prometheus + Grafana 설치

CentOS 7 에 Prometheus + Grafana 설치 메뉴얼 프로메테우스 설치 https://prometheus.io/ # 유저 추가 useradd -m -s /bin/bash prometheus su - prometheus # 다운로드 cd /home/prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.21.0/prometheus-2.21.0.linux-amd64.tar.gz tar -xzvf prometheus-2.21.0.linux-amd64.tar.gz # 폴더명 변경 로그아웃 mv prometheus-2.21.0.linux-amd64/ prometheus exit # 시스템 서비스 등록 vi /etc..

IT/Git

Git Branch 를 통한 Gitflow

참고 : gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html

IT/Git

Git Branch 사용법

Git Branch 사용법 Jetbrain IDE를 사용합니다 1. branch 확인하기 git branch 현재 master branch 만 존재, *는 현재 활성화 branch 표시 git branch -r 원격 저장소 branch 확인 2. branch 생성 및 이동 첫번째 방법 git branch feature/#1 git branch git checkout feature/#1 두번째 방법 git checkout -b feature/#1 3. branch 삭제 git branch -d feature/#1 4. branch Github 원격 저장소 push git push --set-upstream origin feature/#1 혹은 git push -u origin feature/#1 로컬에만 ..

상쾌한기분
상쾌한기분