Oracle Management Cloud의 Infrastructure Monitoring과 collectd를 결합하여 프로세스 모니터링 구현

시작하기


  • 「Oracle Managemenet Cloud(OMC)」의 일 기능인 「Infrastructure Monitoring(IM)」과 서버의 시스템 정보 수집에 관한 OSS인 「collectd」를 병용하는 것으로, Linux OS상의 프로세스 감시를 구현 하는 것을 목적으로 한다.
  • 이 기사에서는 공개된 매뉴얼 을 참고로, 샘플적으로 프로세스 감시를 설정해 본다.
  • 본 기사에서는, 「OMC」로 사용하는 「Cloud 에이전트」나 「collectd」의 인스톨 순서는 생략한다.
  • collectd Processes 플러그인에서 수집 할 수있는 항목은 참고 링크을 참조하십시오.

    전제


  • 모니터링 대상 호스트에 OMC 용 Cloud 에이전트가 설치되어 있습니다
  • 모니터링 대상 호스트에 collectd가 설치되어 있습니다.
  • 검증시의 제품 버전은 아래와 같다.
  • Oracle Management Cloud 18.4.1
  • Red Hat Enterprise Linux Server release 7.2
  • collectd-5.8.1-1


  • collectd 구성



    collectd의 conf 파일을 아래와 같이 설정한다.

    / 에 tc / 여기 ctd. 곤 f


    [root@hostname ~]# vi /etc/collectd.conf
    
    ■ Intervalの変更(10秒⇒60秒)
     監視間隔がデフォルトの場合だと短すぎることが原因で
     内部的にエラー(METRIC_UPLOAD_RATE_LIMIT_EXCEEDED)になるため、監視間隔を1分以上にする
    ---
    #----------------------------------------------------------------------------#
    # Interval at which to query values. This may be overwritten on a per-plugin #
    # base by using the 'Interval' option of the LoadPlugin block:               #
    #   <LoadPlugin foo>                                                         #
    #       Interval 60                                                          #
    #   </LoadPlugin>                                                            #
    #----------------------------------------------------------------------------#
    
    Interval     60
    ---
    
    ■ Processesプラグインの構成
    (例)Cloudエージェントプロセス、collectdプロセスを監視するための設定
    ---
    LoadPlugin processes
    <Plugin processes>
            ProcessMatch "omc-cloud-agent" "java .*oracle.sysman.gcagent.tmmain.TMMain"
            Process "collectd"
    </Plugin> 
    ---
    ※ここで監視対象のプロセスを定義する
     なお、ProcessMatch の場合は、regexにスラッシュ指定は不可のため注意
    
    
    ■ write_httpプラグインの構成
     write_httpプラグインを使用してcollectdで収集した情報をCloud Agentにプッシュするように設定
    
    ---
    LoadPlugin write_http
    <Plugin write_http>
             <Node "omc">
               URL "https://127.0.0.1:1899/emd/receiver/gmc"
               Format "JSON"
               StoreRates true
               VerifyPeer false
             </Node>
    </Plugin>
    ---
    ※collectdがCloudエージェント・ホストに対してリモート構成の場合は、
     127.0.0.1のループバック・アドレスの代わりにCloudエージェント・ホスト名を指定する
    
    
    ■ unixsockプラグインの構成
     Cloudエージェントにcollectdctlで情報を収集させるために、unixsockプラグインを有効化
    
    ---
    LoadPlugin unixsock
    <Plugin unixsock>
            SocketFile "/var/run/collectd-unixsock"
            SocketGroup "collectd"
            SocketPerms "0660"
            DeleteSocket false
    </Plugin>
    ---
    ※Cloudエージェントのインストールユーザが、collectdプロセスを実行しているユーザと異なる場合は、
     CloudエージェントのインストールユーザをSocketGroupで指定したグループに追加する(上記例では"collectd"グループ)
     もしくは、SocketGroupにインストールユーザが所属するグループを指定する
    
    ■ URI保護のための資格証明の追加(Optional)
    ⇒本検証では動作確認のみを目的とするため、Skipする
    
    [root@hostname ~]# 
    

    collectd의 설정 반영



    collectd 서비스를 다시 시작하고 위의 설정을 반영합니다.
    
    [root@hostname ~]# systemctl restart collectd.service
    [root@hostname ~]# echo $?
    0
    [root@hostname ~]# systemctl status collectd.service
    
    ● collectd.service - Collectd statistics daemon
       Loaded: loaded (/usr/lib/systemd/system/collectd.service; disabled; vendor preset: disabled)
       Active: active (running) since Mon 2019-03-11 13:43:40 JST; 13s ago
         Docs: man:collectd(1)
               man:collectd.conf(5)
     Main PID: 23246 (collectd)
       CGroup: /system.slice/collectd.service
               mq23246 /usr/sbin/collectd
    
    [root@hostname ~]# 
    

    OMC에 커스텀 엔티티 추가



    매뉴얼을 참고로, 커스텀 엔티티 추가용의 json 파일을 준비해,
    수동으로 collectd에 대한 엔티티를 추가합니다. (아래 예에서 호스트 이름 : myhost1)

    json 파일 만들기(collectd-myhost1.json)


    [root@hostname ~]# su - <Agent install user>
    
    [<Agent install user>@hostname ~]$ vi collectd-myhost1.json
    
    {
      "entities": 
      [
        {
          "name": "collectd-myhost1",
          "type": "omc_generic_metric_collector",
          "displayName": "collectd-myhost1",
          "timezoneRegion": "JST",
          "properties": 
          {
            "host_name": 
            {
              "displayName": "Host Name",
              "value": "myhost1.compute-999999999.oraclecloud.internal"
            },
    
            "omc_query_interface_path": 
            {
              "displayName": "Query Interface Path",
              "value": "/bin/collectdctl"
            },
    
            "omc_filter_expression": 
            {
              "displayName": "Filter Expression",
              "value": "{$.[?(@.host=='myhost1')]}"
            },
    
            "omc_auto_map": 
            {
              "displayName": "Automatically Map Metrics",
              "value": "TRUE"
            },
    
            "capability": 
            {
              "displayName": "capability",
              "value": "monitoring"
            },
    
            "omc_monitored": 
            {
              "displayName": "Cloud Agent Monitored",
              "value": "TRUE"
            },
    
            "omc_product_name": 
            {
              "displayName": "Product Name",
              "value": "collectd"
            },
    
            "omc_product_vendor": 
            {
              "displayName": "Product Vendor",
              "value": "Florian octo Forster, et al."
            },
    
            "omc_product_version_query_arg": 
            {
              "displayName": "Product Version Query Argument",
              "value": "-h"
            },
    
            "omc_product_version_regex": 
            {
              "displayName": "Product Version Regular Expression",
              "value": "^collectd (.+), http"
            },
    
            "omc_metrics_query_arg": 
            {
              "displayName": "Metrics Query Argument",
              "value": "listval"
            },
    
            "omc_response_query_arg": 
            {
              "displayName": "Response Query Argument",
              "value": "listval"
            },
    
            "omc_use_exit_code_for_response": 
            {
              "displayName": "Use exit code for response",
              "value": "TRUE"
            },
    
            "omc_protocol": 
            {
              "displayName": "Protocol",
              "value": "https"
            },
    
            "omc_payload_format": 
            {
              "displayName": "Payload Format",
              "value": "json"
            },
    
            "omc_receiver_uri_path": 
            {
              "displayName": "Receiver URI Path",
              "value": "/emd/receiver/gmc"
            }
          }
        }
      ]
    }
    
    [<Agent install user>@hostname ~]$ 
    

    엔티티 추가


    [<Agent install user>@hostname ~]$ /opt/omc/cloudagent/agent_inst/bin/omcli add_entity agent collectd-myhost1.json
    Oracle Management Cloud Agent
    Copyright (c) 1996, 2018 Oracle Corporation.  All rights reserved.
    Operation Succeeded: Accepted 1 of 1 entities for processing.
    
    [<Agent install user>@hostname ~]$ 
    

    엔티티 추가 후 확인


    [<Agent install user>@hostname ~]$ /opt/omc/cloudagent/agent_inst/bin/omcli status_entity agent collectd-myhost1.json
    Oracle Management Cloud Agent
    Copyright (c) 1996, 2018 Oracle Corporation.  All rights reserved.
    omc_generic_metric_collector.collectd-myhost1 : AGENT:entity fully monitored
    ⇒追加したエンティティが"AGENT:entity fully monitored"であることを確認
    
    [<Agent install user>@hostname ~]$ 
    
    [<Agent install user>@hostname ~]$ /opt/omc/cloudagent/agent_inst/bin/omcli config agent listtargets
    Oracle Management Cloud Agent
    Copyright (c) 1996, 2018 Oracle Corporation.  All rights reserved.
    [myhost1.compute-999999999.oraclecloud.internal:4459, Lama]
    [myhost1.compute-999999999.oraclecloud.internal, omc_host_linux]
    [collectd-myhost1, omc_generic_metric_collector]
    ⇒追加したエンティティがターゲット一覧に表示されることを確認
    
    [<Agent install user>@hostname ~]$ 
    

    추가한 엔티티에 라이센스 부여



    OMC 서비스 콘솔에 로그인하고 다음 절차에서 추가한 엔티티에 라이센스를 부여합니다.

    ① : 메뉴에서 "관리"를 누르십시오.





    ② : 「엔티티 구성」→「라이센스」를 누름





    ③ : "라이센스 없음"의 엔티티에서 추가한 collectd용 엔티티(Generic Metric Collector)를 선택하고 라이센스(Standard or Enterprise)를 할당



    ※ 부여 가능한 라이센스는 구독 및 엔티티 수에 따라 다르므로 주의



    ④ : 정상적으로 라이센스가 설정되었는지 확인





    ⑤: 감시 대상의 커스텀 엔티티에 대해서도 마찬가지로 라이센스(Standard or Enterprise)를 할당



    이 예에서는 collectd 프로세스 모니터링을 위해 구성을 수행합니다 (엔티티 이름 : myhost1-collectd).
    ※ 부여 가능한 라이센스는 구독 및 엔티티 수에 따라 다르므로 주의
    ※④의 확인 후, 커스텀 엔티티가 화면에 반영되기까지, 잠시 시간이 걸리는 경우 있어


    ⑥: 정상적으로 라이센스가 설정되었는지 확인





    ⑦: 「모니터링」→「엔티티」에서 추가한 커스텀 엔티티의 정보가 수집되어 있는지 확인



    ※상기에서 추가한 collecd 프로세스 감시용의 엔티티(myhost1-collectd)를 화면에서 확인할 수 있다


    비고



    위에서 OMC에서 프로세스 모니터링을 수행 할 수 있으므로 대상 사용자 엔티티에 대해
    경고 룰을 설정하면, 장해시의 메일 통지 등을 실시할 수 있게 된다.

    이상

    좋은 웹페이지 즐겨찾기