dd-agent로 RDS MySQL을 모니터링하려고했습니다.

3296 단어 MySQLDatadogRDS

개요



Datadog에서는 MySQL을 모니터링하기 위한 MySQL Integration이 제공되고 있지만, 기본적으로 MySQL이 가동하고 있는 서버에 datagg-agent를 인스톨 해 localhost의 mysqld로부터 데이터를 취득하는 것을 상정해 각종 문서 등이 쓰여져 있는 느낌이 있다.

RDS에서 MySQL을 이용하고 있는 경우, CloudWatch로 취득할 수 있는 값은 제작도 없이 Datadog에 먹일 수 있는 것이지만, 간신히 OS 리소스적인 메트릭스가 많아, MySQL 고유의 값을 모니터링의 대상으로 하고 싶은 경우 부족하다 .

따라서 다른 서버에 datadog-agent를 설치하고 거기에서 RDS에 연결하여 Datadog에 데이터를 가져올 수 있습니다.

했던 일


  • RDS 보안 그룹 설정
  • Datadog 용 사용자 만들기
  • /etc/dd-agent/conf.d/mysql.yaml에 모니터링 대상 설정
  • 대시 보드에서 설정

  • RDS 보안 그룹 설정



    AWS 전문가의 형제라면 특히 설명이 필요하지 않으므로 생략

    Datadog용 사용자 만들기



    RDS의 MasterUser를 사용해도 모니터링은 가능하지만, 후술하는 바와 같이 설정 파일(mysql.yaml)에 UserID/Password를 임베드할 필요가 있기 때문에 권한이 강한 유저를 사용하는 것은 추천할 수 없다. 따라서 읽기 전용 사용자를 만들어야합니다.

    MySQL Integration의 인스톨 화면의 Configuration 탭에 아래와 같은 유저 작성 순서가 있다.
    sudo mysql -e "CREATE USER 'datadog'@'localhost' IDENTIFIED BY 'GENERATED_PASSWORD';"
    sudo mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'datadog'@'localhost' WITH MAX_USER_CONNECTIONS 5;"
    
    If you'd like to get the full metrics catalog please also grant the following privileges:
    
    sudo mysql -e "GRANT PROCESS ON *.* TO 'datadog'@'localhost';"
    sudo mysql -e "GRANT SELECT ON performance_schema.* TO 'datadog'@'localhost';"
    

    위의 예에서는 datag@localhost라는 사용자를 만들고 *. *에 대해 REPLICATION을 허용하도록 권한을 설정합니다.
    또한 모든 메트릭을 취하고 싶은 경우는 *.*에 대해서 SELECT, performance_schema.*에 대해서 SELECT를 허가하라는 것이다.

    이대로의 순서로 유저를 만들면 localhost만이 접속할 수 있게 되어 버리기 때문에, 아래와 같이 변경했다.
    (요점은 @localhost
    sudo mysql -e "CREATE USER 'datadog' IDENTIFIED BY 'GENERATED_PASSWORD';"
    sudo mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'datadog' WITH MAX_USER_CONNECTIONS 5;"
    sudo mysql -e "GRANT PROCESS ON *.* TO 'datadog';"
    sudo mysql -e "GRANT SELECT ON performance_schema.* TO 'datadog';"
    

    /etc/dd-agent/conf.d/mysql.yaml에 모니터링 대상 설정



    datadog-agent가 실행중인 서버의/etc/dd-agent/conf.d/mysql.yaml에 대상 RDS의 정보를 설정합니다.
    원래 mysql.yaml.example 가 존재하고 있으므로, cp mysql.yaml.example mysql.yaml 라고 하는 느낌으로 오리지날을 보존한 상태로 mysql.yaml 를 작성해, 수정하는 것이 좋다고 생각한다.
    필자가 사용하고 있는 것은 아래와 같이 샘플 기술을 모두 지운 것이 되고 있다.
    init_config:
    
    instances:
      - server: rds1.hogehoge.ap-northeast-1.rds.amazonaws.com
        user: datadog
        pass: YOUR_GENERATED_PASSWORD
        tags:
           - dbname:rds1
    
      - server: rds2.hogehoge.ap-northeast-1.rds.amazonaws.com
        user: datadog
        pass: YOUR_GENERATED_PASSWORD
        tags: 
           - dbname:rds2
    

    전술한 바와 같이 복수의 RDS가 기술될 수 있다. 또한 태그에 태그를 설정하면 dashboard 등으로 대상 RDS를 지정할 때 태그를 사용할 수 있습니다.

    대시보드에서 설정





    이상

    좋은 웹페이지 즐겨찾기