• 기본 전제: Grafana, InfluxDB 및 Loki가 이미 설치되어 있다.
  • 운영체제: Amazon Linux 2

여기서는 편의상 sudo su 커맨드를 실행하여 루트 사용자로 전환한 상태에서의 작업 내용을 보여준다.

(1) Promtail 실행파일 다운받고 실행권한 부여

mkdir /opt/promtail && cd /opt/promtail
curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/promtail-linux-amd64.zip"
unzip "promtail-linux-amd64.zip"
chmod a+x "promtail-linux-amd64"

(2) yaml 환경설정 파일 편집

위와 동일하게 /opt/promtail 내에 위치한 상태에서 다음 커맨드를 실행하여 yaml 예제 파일을 다운받는다.

curl https://raw.githubusercontent.com/grafana/loki/master/docs/sources/clients/aws/ec2/promtail-ec2.yaml > ec2-promtail.yaml

그리고 이 파일을 열어서 아래와 같은 내용으로 편집해 준다.

server:
  http_listen_port: 3100
  grpc_listen_port: 0

clients:
  - url: https://<Loki 서버 URL>/loki/api/v1/push

positions:
  filename: /opt/promtail/positions.yaml

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      host: '<host name>'
      job: varlogs
      __path__: /var/log/*log

(3) Promtail을 데몬으로 띄우기

1) vim /etc/systemd/system/promtail.service을 실행한 후 아래 내용을 입력하여 서비스 생성

[Unit]
Description=Promtail

[Service]
User=root
WorkingDirectory=/opt/promtail/
ExecStartPre=/bin/sleep 30
ExecStart=/opt/promtail/promtail-linux-amd64 --config.file=./ec2-promtail.yaml
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

2) 데몬을 로딩한 후 시작해 주기

systemctl daemon-reload
systemctl enable promtail.service
systemctl start promtail.service
반응형

환경: Amazon Linux 2

작성 위치: /etc/bashrc

* 현재 접속중인 사용자가 누구냐에 관계 없이 전체 시스템에 적용하기 위해 /etc/bashrc 파일에 적용하기로 결정.

* 운영체제가 우분투인 경우, /etc/bash.bashrc

아래 내용을 맨 마지막에 추가해 준다. 여기서 'username:username'은 루트 계정이 아닌 현재 사용자가 접속중인 계정으로 바꿔준다.

if [ ! -f "/var/log/command_history.log" ]; then
    sudo touch /var/log/command_history.log
    sudo chown username:username /var/log/command_history.log
fi

export PROMPT_COMMAND='echo "$(date "+%Y-%m-%d.%H:%M:%S") $(whoami) $(pwd) $(history 1)" >> /var/log/command_history.log;'

 

추가한 내용을 저장한 후 source /etc/bashrc 커맨드 실행을 해주면, /var/log/command_history 내에 로그가 쌓이는 것을 확인할 수 있다.

반응형

운영체제 및 컴퓨팅 환경: AWS EC2 CentOS 7.6.1810

Nginx 버전: 1.12.2

 

이슈:
다음과 같이 엔진엑스에서 도메인을 타고 들어왔을 때 8080 포트로 포워딩이 되도록 설정하였음.

 

그러나 도메인 접속시 502 (Bad Gateway) 에러가 발생하였으며, 엔진엑스 로그를 확인해 보니 다음과 같은 에러 메세지를 내보내고 있었다.

 

2018/10/01 22:59:50 [crit] 881#0: *1 connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,
client: 211.60.50.190, server: jenkins.blablabla.com, request: "GET /favicon.ico HTTP/1.1", upstream:
"http://127.0.0.1:8080/favicon.ico", host: "jenkins.blablabla.com", referrer: "http://jenkins.blablabla.com/"

 

원인:

여러 검색 등을 통해 확인 결과, 기본적으로 EC2 인스턴스를 런치할 때 SELinux (Security Enhanced Linux)가 함께 작동하는데, 이 SELinux가 HTTP 프록시를 차단하고 있는 것이 문제였다.

 

해결:

이러한 문제를 해결하기 위해 HTTP 프록시를 허용해주는 커맨드를 실행하기로 하였고, 다음과 같이 실행하였다.

$setsebool -P httpd_can_network_connect true

 

여기서 -P는 persist의 의미로, 재부팅 후에도 환경설정이 그대로 적용된다는 말이다. 이렇게 함으로써 정상적으로 도메인 접속 후 포트포워딩이 문제 없이 이루어 지는 것을 확인할 수 있었다.

반응형

EC2 인스턴스 생성 후 인스턴스에 접속하여 (운영체제: CentOS 7.6.1810) date 커맨드를 실행하여 시스템 시간을 확인해 보면, 시간이 KST (한국 표준 시간)이 아닌 UTC로 맞춰져 있는 것을 확인할 수 있다. 따라서 인스턴스 가동 후 시간대를 한국 시간대로 바로잡아 주는 작업을 먼저 실행하도록 한다.

 

(1) 시간대 정보를 담고 있는 /etc/localtime 파일을 삭제한다.

$sudo rm /etc/localtime

 

(2) 변경하고자 하는 시간대 (여기선 한국시간) 정보가 담긴 파일에 대한 링크를 생성하여 /etc/localtime에 연결시킨다.

$sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

위의 작업을 진행한 후 date 커맨드를 다시 실행해 보면 변경된 정보를 확인할 수 있다.

반응형

+ Recent posts