Oracle Cloud : 알림 서비스와 oci-cli를 사용하여 매 시간마다 DBCS 상태를 알립니다.

알림 서비스는 매월 1,000통까지의 메일 전송까지는 무료로 사용할 수 있으며 AlwaysFree 환경에서도 사용할 수 있습니다.

이번은 1시간마다 DBCS의 상태를 메일 통지하는 것으로, 너무 사용을 예방하기 위해 작성했습니다.
사실은 기동하고 있을 때만 1시간마다 통지하고 싶었습니다만, 이번 기사는 기동의 유무에 관계없이 1시간마다 계속 보내는 구현이 되고 있습니다.

DBCS를 사용할 때만 crontab을 움직이고, 정지하면 멈추는 조금 아날로그적인 사용법을 하고 있습니다만, 통지가 오면 낭비하지 않게 되었습니다.

순서로 인용시킨 기사는 이쪽



■이벤트·서비스와 통지의 사용법
[OCI] 이벤트 서비스 및 알림을 사용하여 ADB 인스턴스 시작 알림

■ DBCS 상태를 CLI로 가져오기
Oracle Cloud의 데이터베이스를 명령 줄 (CLI)에서 시작 및 중지했습니다.

작업 절차



1. "알림"설정
2. 주제 만들기
3. 구독 생성 및 활성화
4. OCI CLI에서 DB 노드의 상태 얻기
5. OCI CLI로 메시지 보내기
6. messeage 송신 동작 확인
7.crontab 설정
8.crontab의 동작 확인

이번에 사용한 서비스와 기술



· OCI 통지 서비스
· OCI CLI
· Oracle Database Cloud Service
· crontab

저자의 환경



Mac OS X 10.15.7

1. 「통지」설정 3. 서브스크립션의 작성·활성화



[OCI] 이벤트 서비스 및 알림을 사용하여 ADB 인스턴스 시작 알림 「통지」의 설정」부터 「구독의 유효화」까지를 실행

4. OCI CLI로 DB 노드의 상태 취득



Oracle Cloud의 데이터베이스를 명령 줄 (CLI)에서 시작 및 중지했습니다. "명령 실행 : 상태 확인"을 참조하여 상태를 얻습니다.

덧붙여 mikika씨 작성의 mydb.sh는 매우 편리하므로, DBCS를 사용할 때 매우 편리합니다.
매일 운용에 활용하겠습니다.

5. OCI CLI로 메시지 전송



OCI CLI에서 메시지를 보내는 쉘을 작성합니다.
--db-node-id의 OCID와 --topic-id의 OCID에 "xxx..."가 있습니다.
이것은 사용자 고유의 값입니다.

myons.sh
$ #!/bin/bash
dbcs_node_get=$(oci db node get --db-node-id ocid1.dbnode.oc1.ap-tokyo-1.xxx...)
oci ons message publish --topic-id ocid1.onstopic.oc1.ap-tokyo-1.xxx... --title "DBCS Info" --body "${dbcs_node_get}"

crontab에서 사용할 수 있도록 실행 권한을 변경합니다.
chmod 755 myons.sh

알림 서비스 주제 ID의 OCID가 나열된 위치



"콘솔"- "메뉴 바"- "응용 프로그램 통합"- "알림"


'알림'-'주제'-'주제 OCID'


6. messeage 송신 동작 확인



myons.sh를 실행하여 알림 서비스의 "구독"에 등록한 이메일 주소에 알림이 도착하는지 확인합니다.



7.crontab 설정


  • 로 메일이 도착했으므로, 나머지는 crontab를 설정하는 것만으로 생각하고 있었던 곳,
    저자의 환경에서는 평소 crontab을 사용하지 않기 때문에 여러 가지 설정이 필요했습니다.

  • 7-1. Mac의 시스템 환경 설정 변경



    · "시스템 환경 설정"- "보안 및 개인 정보 보호"- "풀 디스크 액세스"를 엽니 다.
    ・팝업 윈도우 화면 좌하키의 마크를 클릭해, 유저명과 패스워드를 입력.
    ・「+」마크를 클릭
    · Shift + Cmd + G를 입력하고/usr/sbin/cron 추가

    7-2.crontab 편집


    $ crontab -e
    

    7-3.crontab에 다음 내용 추가



    PATH를 추가하지 않으면 crontab을 실행할 때 "oci: command not found"가 발생합니다.
    5. 작업으로 터미널에서 직접 쉘을 실행하면 발생하지 않으므로 요주의입니다.
    PATH="/usr/local/bin/oci:/usr/local/bin:/usr/bin:/bin"
    */60 * * * * /Users/ipaccho/ons_instance_test.sh
    

    「*/60」으로 60분마다 실행합니다.

    8.crontab의 동작 확인



    동작 확인시는 crontab의 설정을 「/60」에서 「/1」로 변경해, 1분에 메세지를 보냅니다.
    동작 확인 후 「*/60」으로 되돌립니다.

    다음을 실행하여 내용을 확인합니다.
    오류가 없으면 아래와 같은 메시지가 표시됩니다.
    메일러에도 6.과 같은 내용의 메일이 도착합니다.
    cat /var/mail/ユーザー名
    
    From [email protected]  Mon Jan 11 23:55:07 2021
    Return-Path: <[email protected]>
    X-Original-To: ipaccho
    Delivered-To: [email protected]
    Received: by iPaccho-no-MacBook-Pro.local (Postfix, from userid 501)
        id 711983003AFAA7; Mon, 11 Jan 2021 23:55:07 +0900 (JST)
    From: [email protected] (Cron Daemon)
    To: [email protected]
    Subject: Cron <ipaccho@iPaccho-no-MacBook-Pro> /Users/ipaccho/ons_instance_test.sh
    X-Cron-Env: <PATH=/usr/local/bin/oci:/usr/local/bin:/usr/bin:/bin>
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <LOGNAME=ipaccho>
    X-Cron-Env: <USER=ipaccho>
    Message-Id: <[email protected]>
    Date: Mon, 11 Jan 2021 23:55:07 +0900 (JST)
    
    {
      "data": {
        "message-id": "8a0e2ed9-7978-0f27-6f70-d514bab143d2",
        "time-stamp": null
      }
    }
    
    You have mail in /var/mail/ipaccho
    

    참고



    Oracle Cloud Infrastructure Documentation Publishing Messages
    Oracle Cloud Infrastructure 문서 알림 개요
    Oracle Cloud Infrastructure Notifications

    재게재



    ■이벤트·서비스와 통지의 사용법
    [OCI] 이벤트 서비스 및 알림을 사용하여 ADB 인스턴스 시작 알림

    ■ DBCS 상태를 CLI로 가져오기
    Oracle Cloud의 데이터베이스를 명령 줄 (CLI)에서 시작 및 중지했습니다.

    좋은 웹페이지 즐겨찾기