준비물은 이렇습니다. Ansible의 hosts파일에 연결될 node pc의 IP를 작성하고, 해당 node pc를 ansible ping을 통해 연결이 된 후에 아래의 playbook을 실행시킬 수 있습니다. 위의 준비물은 다른 게시글에도 많기에 저는 playbook내용을 준비했습니다. 핵심인 playbook의 내용입니다. --- - hosts: exporter gather_facts: no tasks: - name: Create main dir # 없어도 되는 부분입니다. file: path: /home/daou_docker/exporters state: directory - name: Install packages # docker-compose를 위해 wegt을 설치해줍니다. vars: ansibl..
전체 글
제가 원하는 바는 아래와 같습니다. Grafana에 알람이 발생했을 경우 그것을 Slack으로 확인하고 필요한 Command를 Slack에 날려주면 Flask(bot)이 이를 확인하여 Command를 실행시키는 것입니다. 코드는 아래와 같습니다. 준비물은 Salck bot의 토큰, Grafana의 Slack을 통한 알람, 실행할 Command가 필요합니다. import json, requests, subprocess from flask import Flask, request, make_response from slack_sdk import WebClient token = "" # Slack bot의 토큰 app = Flask(__name__) def post_message(token, channel, t..
·OS
제가 참고할 내용이기에 별 도움이 되진 않습니다. Xshell로 Gateway에 접속했으면 ~/.ssh 경로에 접속할 EC2 Pem키를 저장하고 chmod 400 key.pem 을 하여 권한을 줍니다. 그 후 ssh -i key.pem ec2-user@퍼블릭IP 를 하면 EC2에 접속됩니다.
·OS
Ansible Playbook을 통해서 다른 가상 서버에 node-exporter를 설치하였지만, 정상적으로 작동이 되지 않아 해당 서버에 접속해서 아래의 명령어를 작성했습니다. systemctl status node_exporter active(running)이 떴지만 해당 인스턴스 IP:9100으로 접속이 안되는 상황이었습니다. 뭔가 이상함을 느껴 아래와 같이 방화벽 포트를 설정해봤습니다. firewall-cmd --list-all - 방화벽 설정을 확인한 다음 firewall-cmd --add-port=9090/tcp --permanent firewall-cmd --add-port=9100/tcp --permanent 으로 방화벽 포트를 설정했습니다 firewall-cmd --reload 를 해주셔..
·OS
우분투에서 Ansible을 설치하셨다면 SSH Key를 생성할 차례입니다 먼저 우분투 안에서 ssh-keygen -t rsa를 입력합니다 맨 처음은 파일 위치를 지정합니다. 기본 위치로 사용하시려면 Enter 두번째는 비밀번호를 설정합니다. 비밀번호 없이 사용하려면 Enter 세번째는 비밀번호를 확인합니다. 이렇게 위의 3차례를 하셨다면 Key가 생성이 되며 기본 위치라면 /root/.ssh/ 에 id_rsa라는 Key를 확인할 수 있습니다. 이제 이 Key로 다른 PC에 접근하려면 아래를 통해 Key를 복사해줍니다. ssh-copy-id -i @ 의 안에 값은 사용자마다 입력값이 다르니 유의하시길 바랍니다. 그후 저는 Ansible hosts에 다른 PC의 IP를 입력하고 ansbile all -m p..
·OS
이번엔 Ansible의 공식문서만 보고 우분투에 설치해보겠습니다. 먼저 데비안 11(Bullseye) == 우분투 20.04 일 경우deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main 데비안 8~10 == 우분투 14~18일 경우deb http://ppa.launchpad.net/ansible/ansible/ubuntu MATCHING_UBUNTU_CODENAME_HERE main 위의 명령어를 /etc/apt/sources.list 또는 /etc/apt/sources.list.d/ansible.list 에 추가합니다. 그 후 아래의 명령을 실행합니다. $ sudo apt-key adv --keyserver keyserver.ubuntu.com..
ansible을 사용하던 중 playbook의 작성요령을 숙지하고 있어야 된다는 생각이 들었습니다. 그렇기에 따로 공부하면서 계속해서 작성해보도록 하겠습니다. --- - name: install nginx # playbook의 이름을 정합니다. hosts: all # 어떤 그룹에 실행할지 선정합니다. become: yes # 대상 호스트에 root 사용자로 작업을 수행합니다. connection: local # 대상 호스트가 ssh대신 local 연결을 합니다. gather-facts: no # facts를 수집하지 않음으로써 성능을 향상시킵니다. tasks: # 수행할 업무들입니다. - name: install epel-release # 업무에 대한 이름을 정합니다. yum: # yum과 관련된 모듈을..
·이론
Grafana는 오픈 소스 시각화 및 분석도구입니다. Prometheus,, InfluxDB, Elasticsearch 등 여러 데이터 소스와 통합이 가능하며, 시계열 메트릭 데이터를 표현하기에 좋습니다. 특히, Prometheus와 Grafana 둘 다 Grafana Labs에서 관리하고 있기 때문에 두가지를 연동해서 많이 사용합니다. 데이터베이스와 연동하여 시각화 대시보드를 제공해주며 커스터마이징이 좋은 편이다. 많은 장소의 데이터를 단일 대시 보드로 결합할 수 있는 도구입니다. Grafana 대신 Kibana도 또 다른 시각화 도구이지만 Kibana는 ELK스택에 최적화 되어있기에, Prometheus와 시계열 데이터가 많다면 Grafana를 주로 선호하고 있습니다. 시각화를 포함해서 차트, 그래프..
·이론
쿠버네티스에서 모니터링 시스템을 구착한다면 많은 사람들이 Prometheus를 사용합니다. 동시에 Grafana, AlertManager 등과 같은 솔루션을 연동해서 사용하는 편입니다. 그 중 Prometheus에 대해서 공부해봤습니다. Prometheus는 메트릭 수집, 시각화, 알림 기능을 모두 제공하는 오픈 소스 모니터링 시스템입니다. Pull방식으로 메트릭을 수집하며, 시계열 데이터를 저장합니다. Node Exporter가 설치된 머신의 CPU, Memory 등의 메트릭 정보를 수집하고, Client Library는 애플리케이션 코드를 계측하기 위해 쓰입니다. 다른 것들도 많지만 주로 Node Exporter를 많이 사용하는 것으로 보입니다. 시각화 영역으로는 Grafana를 많이 쓰기에 제가 이..
pip를 대신할 수 있는 패키지관리자인데 사용법은 pip와 유사하지만 가상환경을 만들 수 있습니다. 주로 파이썬 버전을 바꿔가면서 개발하는 등, 환경과 패키지를 관리하기 용이하게 하는 오픈소스입니다. 사용법은 아래의 블로그에 잘 정리되어 있으니 명령어를 위주로 정리하겠습니다. https://velog.io/@doondoony/pipenv-101 🚀 Pipenv 로 파이썬 가상환경 설정 Pipenv Tutorial velog.io 패키지와 관련된 명령어는 check, graph, clean, install, lock, sync, uninstall, update 실행과 관련된 명령어는 open, run, shell check - 보안 취약점이 있는 패키지가 설치되어있는지 체크해줍니다. graph - 프로젝트..