Files
datasaker-agent-ansible/README_ko.md
2024-01-19 12:30:38 +09:00

12 KiB

Ansible Datasaker Role

Ansible을 이용하여 Datasaker Agent를 설치할 수 있습니다.

Requirements

  • Ansible v2.6+가 필요합니다.
  • 대부분의 Debian Linux 배포판을 지원합니다.
  • 대부분의 Redhat Linux 배포판을 지원합니다.
  • Amazon Linux 2 배포판을 지원합니다.

Installation

Ansible Galaxy에서 Datasaker role을 설치합니다.

ansible-galaxy install dsk_bot.datasaker

에이전트를 배포하기 위하여 Ansible playbook을 작성합니다.

*dsk-log-agent 설치 시 fluent-bit 이 자동으로 설치됩니다.

아래는 기본 설치에 대한 예시입니다.

Host Agent Default Install Example

- hosts: servers
  become: true
  roles:
    - role: dsk_bot.datasaker
  vars:
    datasaker_api_key: "<YOUR_API_KEY>"
    datasaker_agents: ["dsk-node-agent","dsk-log-agent"] 

Docker Agent Default Install Example

- hosts: servers
  become: true
  roles:
    - role: dsk_bot.datasaker
  vars:
    datasaker_api_key: "<YOUR_API_KEY>"
    datasaker_docker_agents: ["dsk-docker-node-agent","dsk-docker-log-agent"]

필수 설정

변수명 설명 Default
datasaker_api_key API Key를 입력합니다.
datasaker_agents 각 호스트에 설치하고자 하는 Host Agent 리스트입니다.
dsk-node-agent dsk-trace-agent dsk-log-agent dsk-postgres-agent dsk-plan-postgres-agent
dsk-node-agent
datasaker_docker_agents 각 호스트에 설치하고자 하는 Docker Container Agent 리스트입니다.
Docker Container Agents를 넣으면 Host Agent 설치는 자동으로 비활성화 됩니다.
dsk-docker-node-agent dsk-docker-trace-agent dsk-docker-log-agent dsk-docker-postgres-agent
dsk-docker-node-agent

Docker Container Agent 설정

변수명 설명 Default
datasaker_docker_config_path Datasaker Global Config 위치 설정.
~/.datasaker
datasaker_docker_global_config Datasaker Global Config 이름 설정.
~/.datasaker/config.yml
docker_default_path Datasaker Docker Log Agent에 마운트할 Docker Log 수집 위치 설정.
/var/lib/docker/containers/
datasaker_docker_path Datasaker Docker Agent Container 위치 설정.
/var/datasaker
container_agent_restart_policy dsk-container-agent Container Restart Policy 설정.
always
node_agent_restart_policy dsk-node-agent Container Restart Policy 설정.
always
trace_agent_restart_policy dsk-trace-agent Container Restart Policy 설정.
always
log_agent_restart_policy dsk-log-agent Container Restart Policy 설정.
always
postgres_agent_restart_policy dsk-postgres-agent Container Restart Policy 설정.
always
container_agent_log_level dsk-container-agent Log Level 설정.
INFO
node_agent_log_level dsk-node-agent Log Level 설정.
INFO
trace_agent_log_level dsk-trace-agent Log Level 설정.
INFO
log_agent_log_level dsk-log-agent Log Level 설정.
INFO
postgres_agent_log_level dsk-postgres-agent Log Level 설정.
INFO

Datasaker Agent 상세 설정

  • Host Agent 와 Docker Container Agent는 같은 설정값을 사용합니다.
  • mysql-agent 와 plan-mysql-agent는 같은 설정값을 사용합니다.
  • maria-agent 와 plan-maria-agent는 같은 설정값을 사용합니다.
변수명 설명 Default
trace_sampling_rate dsk-trace-agent 에서 collector에 적용되는 샘플링 비율 설정.
- 100 이상일 때 모든 데이터가 수집.
10
logs[*].service 로그 수집 대상의 서비스 이름 설정. default
logs[*].tag 로그 수집 대상의 태그 설정. None
logs[*].keyword 로그 수집 키워드 설정. 키워드가 포함된 로그만 수집. None
logs[*].multiline.format 멀티라인 로그 포맷 설정 (예 : go, java, ruby, python). None
logs[*].multiline.pattern 멀티라인 로그 패턴 설정. (예 : ^\d{4}-\d{2}-\d{2}). None
logs[*].masking[*].pattern 마스킹할 로그 패턴 설정. (예 : ^\d{4}-\d{2}-\d{2}) 사용자 커스텀 정규식 패턴 사용 가능. None
logs[*].masking[*].replace 마스킹 패턴이 대체될 문자열 설정. (예 : ******). None
logs[*].collect.type 로그 수집 방법 설정 (file, driver 중 하나의 값을 작성). file
logs[*].collect.category 서비스 분류 설정 (app, database, syslog, etc 중 하나의 값을 작성). etc
logs[*].collect.address 데이터베이스 host 및 port 정보 설정 (서비스 분류가 database인 경우 설정). None
logs[*].collect.file.paths 로그 수집 대상 경로 설정. 예 : /var/log/sample/*.log. ['/var/log/*.log']
logs[*].collect.file.exclude_paths 로그 수집 제외 대상 경로 설정. None
custom_log_volume Docker 사용 시 수집할 로그가 있는 경로 마운트. /var/lib/docker/containers/
postgres_user_name dsk-postgres-agent에 Postgres user ID 설정.
None
postgres_user_password dsk-postgres-agent에 Postgres user password 설정.
None
postgres_database_address dsk-postgres-agent에 Postgres address 설정.
None
postgres_database_port dsk-postgres-agent에 Postgres port 설정.
None
reids_address reids_address에 redis address 설정. -
redis_agent_port redis_agent_port에 redis agent port 설정. 19121
redis_user redis_user에 redis user 설정. (없을 경우 생략) -
redis_pass redis_pass에 redis user password 설정. (없을 경우 생략) -
aws_access_key_id aws_access_key_id에 cloudwatch agent 사용을 위한 key id 설정. -
aws_secret_access_key aws_secret_access_key에 cloudwatch agent 사용을 위한 access key 설정. -
database 모든 database agent에 사용되는 공통 변수 (아래 참고) -
    maria: # maria or mysql or postgres
      agent_name: ''
      agent_cluster: ''
      db:
        - host: '' # database 호스트의 주소
          port: '' # database port
          user_name: '' # database 유저
          user_password: '' # database 유저 패스워드
          database: '' # 대상 database
          ssl_skip: '' # ssl skip 여부 (default : false)
          ssl_ca: '' # ca 파일 경로
          ssl_cert: '' # cert 파일 경로
          ssl_key: '' # key 파일 경로
          ssl_tls: '' # tls 여부 (default : false)
          interval_enabled: '' # interval 활성화 여부
          scrape_interval: '' # scrape interval 설정 (default : 5s)
          append_db:
            - database: '' # 대상 database
              long_session: '' # long session 설정 (default : 5s)

# ssl_skip 값이 false 일 경우 ssl_* 변수들 생략 가능
# interval_enabled 값이 false 일 경우 scrape_interval , append_db 생략 가능

Ansible Playbook 상세 설정 Example (Linux)

- hosts: servers
  become: true
  roles:
    - role: dsk_bot.datasaker
  vars:
    datasaker_api_key: "<YOUR_API_KEY>"
    datasaker_agents: ["dsk-node-agent","dsk-maria-agent","dsk-log-agent"]
    maria:
      agent_name: ''
      agent_cluster: ''
      db:
        - host: ''
          port: ''
          user_name: ''
          user_password: ''
          database: ''
          ssl_skip: ''
          interval_enabled: ''
          scrape_interval: ''
          append_db:
            - database: ''
              long_session: ''
    logs:
    - collect:
        type: file
        file:
          paths:
          - /var/log/*.log

Ansible Playbook 상세 설정 Example (Docker)

- hosts: servers
  become: true
  roles:
    - role: dsk_bot.datasaker
  vars:
    datasaker_api_key: "<YOUR_API_KEY>"
    datasaker_agents: ["dsk-node-agent","dsk-maria-agent","dsk-log-agent"]
    maria:
      agent_name: ''
      agent_cluster: ''
      db:
        - host: ''
          port: ''
          user_name: ''
          user_password: ''
          database: ''
          ssl_skip: ''
          interval_enabled: ''
          scrape_interval: ''
          append_db:
            - database: ''
              long_session: ''
    logs:
    - collect:
        type: file
        file:
          paths:
          - /var/log/*.log
          - /var/lib/docker/containers/*/*.log
  custom_log_volume:
    - /var/log/
    - /var/lib/docker/containers

Uninstallation

Datasaker Agent를 제거 할 수 있습니다. datasaker_clean은 uninstall이 True로 설정되어야 합니다.

변수명 설명 Default
uninstall datasaker_agents 또는 datasaker_docker_agents 에 작성된 Agent만 제거.
False
datasaker_clean datasaker_agents 또는 datasaker_docker_agents 에 작성된 Agent 와 생성 된 폴더 및 설정 파일까지 제거.
False

Datasaker Agents Uninstall Example

- hosts: servers
  become: true
  roles:
    - role: dsk_bot.datasaker
  vars:
    datasaker_agents: ["<AGENT_NAME>"]
    uninstall: True
    datasaker_clean: True