Prometheus 설정

Tier: Free, Premium, Ultimate Offering: Self-Managed

원격 읽기/쓰기

Prometheus는 원격 서비스로의 읽기 및 쓰기를 지원합니다.

원격 읽기 또는 쓰기 서비스를 구성하려면 다음을 gitlab.rb에 포함시킬 수 있습니다.

prometheus['remote_write'] = [
  {
    url: 'https://some-remote-write-service.example.com',
    basic_auth: {
      password: 'remote write secret password'
    }
  }
]
prometheus['remote_read'] = [
  {
    url: 'https://some-remote-write-service.example.com'
  }
]

사용 가능한 옵션에 대한 자세한 내용은 공식 문서의 remote writeremote read 섹션을 참조하십시오.

규칙 파일

Prometheus는 녹화경보 규칙을 지원합니다.

Linux 패키지 설치에는 /var/opt/gitlab/prometheus/rules/에 저장된 일부 기본 규칙 파일이 포함되어 있습니다.

기본 규칙을 재정의하려면 gitlab.rb의 기본 목록을 변경할 수 있습니다.

규칙 없음:

prometheus['rules_files'] = []

사용자 정의 목록:

prometheus['rules_files'] = ['/path/to/rules/*.rules', '/path/to/single/file.rules']

외부 라벨

외부 라벨을 설정하려면:

prometheus['external_labels'] = {
    'region' => 'us-west-2',
    'source' => 'omnibus',
}

기본적으로 외부 라벨이 설정되어 있지 않습니다.

node exporter

node_exporter는 시스템 수준 메트릭을 제공합니다.

추가 메트릭 수집기는 기본적으로 활성화되어 있습니다. 예를 들어 mountstats는 NFS 마운트에 대한 메트릭을 수집하는 데 사용됩니다.

mountstats 수집기를 비활성화하려면 gitlab.rb를 수정하고 다음 설정을 조정한 후 gitlab-ctl reconfigure를 실행합니다.

node_exporter['flags'] = {
  'collector.mountstats' => false,
}

사용 가능한 수집기에 대한 자세한 정보는 상위 문서를 참조하십시오.

Alertmanager 옵션

Alertmanager에 대한 전역 옵션을 설정할 수 있습니다.

예를 들어, 다음과 같이 gitlab.rb 구성을 사용하여 Alertmanager가 SMTP 서버에 자신을 식별하는 호스트 이름을 재정의할 수 있습니다.

alertmanager['global'] = {
  'smtp_hello' => 'example.org'
}

추가 수신기 및 경로

이 예제에서 새로운 VictorOps 수신기를 구현합니다.

  1. 새 수신기를 추가하고 route를 정의하려면 /etc/gitlab/gitlab.rb를 편집합니다.

    alertmanager['receivers'] = [
      {
        'name' => 'victorOps-receiver',
        'victorops_configs' => [
          {
            'routing_key'         => 'Sample_route',
            'api_key'             => '558e7ebc-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
            'entity_display_name' => '{{ .CommonAnnotations.summary }}',
            'message_type'        => '{{ .CommonLabels.severity }}',
            'state_message'       => 'Alert: {{ .CommonLabels.alertname }}. Summary:{{ .CommonAnnotations.summary }}. RawData: {{ .CommonLabels }}',
            'http_config'         => {
              proxy_url: 'http://internet.proxy.com:3128'
            }
          } #, { Next receiver }
        ]
      }
    ]
    
    alertmanager['routes'] = [
      {
        'receiver'        => 'victorOps-receiver',
        'group_wait'      => '30s',
        'group_interval'  => '5m',
        'repeat_interval' => '3h',
        'matchers'        => [ 'severity = high' ]
      } #, { Next route }
    ]
    
  2. GitLab을 다시 구성합니다.

    sudo gitlab-ctl reconfigure
    

Alertmanager는 이제 severity = high 경보를 victorops-receiver로 경로 설정합니다.

Alertmanager에 대한 VictorOps 옵션에 대해 더 자세히 알아보려면 VictorOps 설명서를 참조하십시오.