안내된 설치 프로세스를 사용하여 SNMP 모니터링 에이전트를 설치하거나 에이전트를 수동으로 설치할 수 있습니다. 이 문서에서는 설치 프로세스를 시작하기 위한 전제 조건과 설치 옵션의 단계별 안내를 다룹니다.
전제 조건
시작하기 전에 New Relic 계정에 가입 해야 합니다. 에이전트를 수동으로 설치하도록 선택한 경우 다음도 필요합니다.
New Relic 계정 ID .
뉴렐릭
.
Docker 또는 Podman에 대한 컨테이너로 SNMP 모니터링 에이전트를 구현하고 배포하는 것이 좋습니다. 필요한 경우 Linux에서 베어메탈 서비스로 설치할 수도 있습니다.
SNMP 모니터링용 에이전트를 배포하려면 Docker 컨테이너를 사용하는 것이 좋습니다. 이를 사용하려면 다음이 필요합니다.
- Docker 가 지원하는 Linux 플랫폼 중 하나에 Docker 설치된 .
- 명령줄을 통해 새 컨테이너를 시작하는 기능.
에이전트를 강화하기 위해 Podman 구축을 사용하는 경우 다음이 필요합니다.
- Podman이 지원하는 Linux 플랫폼중 하나에 설치된 Podman
- 명령줄을 통해 새 컨테이너를 시작하는 기능
Linux를 사용하여 에이전트를 서비스로 설치하는 경우 다음이 필요합니다.
호스트에 대한 SSH 액세스
애플리케이션 및 서비스 설치/제거에 대한 액세스
지원되는 운영 체제 중 하나:
- 센트OS 8
- 데비안 12(책벌레)
- 데비안 11(불스아이)
- 데비안 10(버스터)
- 레드햇 엔터프라이즈 리눅스 9
- 우분투 20.04(포컬 LTS)
- 우분투 22.04(제미 LTS)
- 우분투 23.04(음력)
중요
SNMP 트랩을 수신하려면 에이전트가 UDP 162에 바인딩되어야 합니다. 호스트 기반 설치에서는 설치 프로세스 중에 다음 명령이 포함됩니다. 실행되면 KTranslate는 높은 권한으로 실행됩니다.
sudo setcap cap_net_bind_service=+ep /usr/bin/ktranslate
네트워크 환경과 네트워크 장치 자체에 대한 전제 조건도 있습니다.
SNMP에 대한 네트워크 보안 전제 조건을확인하십시오.
지원되는 SNMP 버전
당사의 네트워크 모니터링 컨테이너는 Traps 및 Informs를 포함하여 모든 주요 버전의 SNMP(v1, v2c 및 v3)를 지원합니다. 또한 SNMP v3은 다음과 같은 인증 및 개인 정보 보호 설정을 지원합니다.
환경 | 규약 |
---|---|
입증 |
|
입증 |
|
입증 |
|
입증 |
|
입증 |
|
입증 |
|
입증 |
|
은둔 |
|
은둔 |
|
은둔 |
|
은둔 |
|
은둔 |
|
은둔 |
|
은둔 |
|
팁
SNMP와 함께 읽기 전용 커뮤니티 문자열/인증을 사용하는 것이 좋습니다.
New Relic에서 SNMP 데이터 모니터링 설정
이동 one.newrelic.com > All capabilities > Add more data
Network 보일 때까지 아래로 스크롤하고 SNMP 클릭합니다.
안내된 설치 프로세스에 설명된 단계를 따르세요. docker, Podman 또는 Linux를 사용할 수 있습니다.
one.newrelic.com > All capabilities > Add more data > Network > SNMP SNMP 데이터 모니터링을 설정합니다.
뉴렐릭 UI 에서 네트워크 성능 데이터를 조사하세요.
SNMP 에이전트를 수동으로 설치하는 방법을 읽기 전에 안내된 설치 프로세스를 사용하여 오류를 방지하는 것이 좋습니다.
Docker 가 설치된 Linux 호스트에서 다음 중 하나를 실행하여 ktranslate 이미지를 다운로드합니다.
snmp-base.yaml
파일을 docker 사용자의 로컬$HOME
디렉터리에 복사하고 다음을 실행하여 컨테이너를 삭제합니다.bash$cd ~$id=$(docker create kentik/ktranslate:v2)$docker cp $id:/etc/ktranslate/snmp-base.yaml .$docker rm -v $idsnmp-base.yaml
파일을 편집하고discovery.cidrs
및discovery.default_communities
속성을 네트워크에 적합한 값으로 정의합니다.팁
검색된 모든 MIB를global.mibs_enabled
속성에 자동으로 추가하려면discovery.add_mibs: true
설정하는 것이 좋습니다. 또한 보안 상태가 강화된 기기 에서 검색 문제를 방지하려면discovery.check_all_ips: true
설정하는 것이 좋습니다.네트워크 모니터링 에이전트를 시작하여 대상 장치를 폴링하고 들어오는 SNMP 트랩 메시지를 수신합니다.
$CONTAINER_SERVICE
컨테이너의 고유한 이름으로 바꾸고$YOUR_NR_LICENSE_KEY
및$YOUR_NR_ACCOUNT_ID
를 원하는 값으로 바꿉니다.bash$docker run -d --name ktranslate-$CONTAINER_SERVICE --restart unless-stopped --pull=always -p 162:1620/udp \>-v `pwd`/snmp-base.yaml:/snmp-base.yaml \>-e NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY \>kentik/ktranslate:v2 \>-snmp /snmp-base.yaml \>-nr_account_id=$YOUR_NR_ACCOUNT_ID \>-metrics=jchf \>-tee_logs=true \>-service_name=$CONTAINER_SERVICE \>-snmp_discovery_on_start=true \>-snmp_discovery_min=180 \>nr1.snmp뉴렐릭 UI 에서 네트워크 성능 데이터를 조사하세요.
Podman이 설치된 호스트에서 다음 명령을 실행하여 ktranslate 이미지를 다운로드합니다.
- bash$podman pull docker.io/kentik/ktranslate:v2
snmp-base.yaml
파일을 Podman 사용자의 로컬$HOME
디렉터리에 복사하고 다음을 실행하여 컨테이너를 삭제합니다.bash$cd ~$id=$(podman create kentik/ktranslate:v2)$podman cp $id:/etc/ktranslate/snmp-base.yaml .$podman rm -v $idsnmp-base.yaml
파일을 편집하고discovery.cidrs
및discovery.default_communities
속성을 네트워크에 적합한 값으로 정의합니다.팁
검색된 모든 MIB를global.mibs_enabled
속성에 자동으로 추가하려면discovery.add_mibs: true
설정하는 것이 좋습니다. 또한 보안 상태가 강화된 기기 에서 검색 문제를 방지하려면discovery.check_all_ips: true
설정하는 것이 좋습니다.루트리스 Podman 컨테이너는 1024 미만의 포트에 바인딩할 수 없습니다. 트랩 메시지에 대한 패킷 리디렉션을 처리하려면 UDP 포트 162에 도착하는 패킷을 목표로 하는
iptables
규칙을 만들어야 합니다.bash$sudo iptables -t nat -A PREROUTING -p udp --dport 162 -j REDIRECT --to-port 1620네트워크 모니터링 에이전트를 시작하여 대상 장치를 폴링하고 들어오는 SNMP 트랩 메시지를 수신합니다.
$CONTAINER_SERVICE
컨테이너의 고유한 이름으로 바꾸고$YOUR_NR_LICENSE_KEY
및$YOUR_NR_ACCOUNT_ID
를 원하는 값으로 바꿉니다.bash$podman run -d --name ktranslate-$CONTAINER_SERVICE --userns=keep-id --restart unless-stopped --pull=always --net=host \>-v `pwd`/snmp-base.yaml:/snmp-base.yaml \>-e NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY \>kentik/ktranslate:v2 \>-snmp /snmp-base.yaml \>-nr_account_id=$YOUR_NR_ACCOUNT_ID \>-metrics=jchf \>-tee_logs=true \>-service_name=$CONTAINER_SERVICE \>-snmp_discovery_on_start=true \>-snmp_discovery_min=180 \>nr1.snmp뉴렐릭 UI 에서 네트워크 성능 데이터를 조사하세요.
- 귀하의 헤드셋 매니저에 따라 아래 명령 중 하나를 사용하여 설치하십시오.
ktranslate
Yum:
bash$curl -s https://packagecloud.io/install/repositories/kentik/ktranslate/script.rpm.sh | sudo bash && \>sudo yum install ktranslateApt:
bash$curl -s https://packagecloud.io/install/repositories/kentik/ktranslate/script.deb.sh | sudo bash && \>sudo apt-get install ktranslate
ktranslate
에서 사용하는 환경 변수를 정의합니다.bash$sudo tee "/etc/default/ktranslate.env" > /dev/null <<'EOF'$NR_ACCOUNT_ID=$YOUR_NR_ACCOUNT_ID$NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY$KT_FLAGS="-snmp /etc/ktranslate/snmp-base.yaml \>-metrics=jchf \>-tee_logs=true \>-service_name=$CONTAINER_SERVICE \>-snmp_discovery_on_start=true \>-snmp_discovery_min=180 \>nr1.snmp"$EOF$$# ensure /etc/default/ktranslate.env is owned by ktranslate user$sudo chown ktranslate:ktranslate /etc/default/ktranslate.env$$# Ktranslate listens for SNMP Traps on privileged port 162. Allow ktranslate to bind to this port with the following command$sudo setcap cap_net_bind_service=+ep /usr/bin/ktranslate기존
snmp-base.yaml
설정 파일이 없으면 다음을 사용하여 파일을 만듭니다.bash$sudo tee "/etc/ktranslate/snmp-base.yaml" > /dev/null <<'EOF'$devices: {}$trap:$listen: '0.0.0.0:162'$discovery:$cidrs:$- x.x.x.x/yy$ignore_list: []$debug: false$ports:$- 161$default_communities:$- public$default_v3: null$add_devices: true$add_mibs: true$threads: 4$replace_devices: true$check_all_ips: true$use_snmp_v1: false$global:$poll_time_sec: 300$mib_profile_dir: /etc/ktranslate/profiles$mibs_enabled:$- IF-MIB$timeout_ms: 3000$retries: 0$EOF$$# ensure /etc/ktranslate/snmp-base.yaml is owned by ktranslate user$sudo chown ktranslate:ktranslate /etc/ktranslate/snmp-base.yamlsnmp-base.yaml
파일을 편집하고discovery.cidrs
및discovery.default_communities
속성을 네트워크에 적합한 값으로 정의합니다.팁
검색된 모든 MIB를global.mibs_enabled
속성에 자동으로 추가하려면discovery.add_mibs: true
설정하는 것이 좋습니다. 또한 보안 상태가 강화된 기기 에서 검색 문제를 방지하려면discovery.check_all_ips: true
설정하는 것이 좋습니다.ktranslate
서비스를 다시 시작하여 변경 사항을snmp-base.yaml
파일에 적용합니다.bash$sudo systemctl restart ktranslate뉴렐릭 UI 에서 네트워크 성능 데이터를 조사하세요.
SNMP 트랩에 대한 선택적 설치
어떤 상황에서는 SNMP 트랩 메시지 모음을 전용 컨테이너로 격리하는 것이 좋습니다. 이는 대규모 환경에서 규모를 제어하고 컨테이너가 실패할 경우 전체 중단 위험을 낮추면서 분산 모니터링 공간을 생성하는 데 도움이 됩니다. 이 프로세스는 Linux 서비스 설치에서는 지원되지 않습니다.
참고: 동일한 컨테이너로 v2c
및 v3
트랩을 모두 모니터링할 수는 없습니다. 두 트랩 버전을 모두 확인하려면 보조 전용 컨테이너를 설치하고 트랩 메시지가 기본 포트가 아닌 포트에서 전송되도록 구성해야 합니다. 예를 들어, 포트 162
에 이미 v2c
트랩이 설정된 경우:
163
등의 다른 포트를 통해 전송되도록v3
트랩을 구성합니다.- docker 컨테이너의 인수를
-p 162:1620/udp
에서-p $src:1620/udp
로 약간 변경합니다. 여기서$src
는v3
트랩이 도착하는 포트입니다.
docker 설치된 Linux 호스트에서 컨테이너를 실행하는 데 사용할 설정 파일을 만듭니다.
bash$tee "./traps-base.yaml" > /dev/null <<'EOF'$devices: {}$trap:$listen: '0.0.0.0:1620'$discovery: {}$global:$poll_time_sec: 300$timeout_ms: 30000$EOF기본적으로 컨테이너는 소스 IP 주소를 New Relic의 장치 이름으로 사용합니다. 구성 파일에서 장치를 수동으로 매핑하여 이를 제어할 수 있습니다.
devices:# This key and the corresponding 'device_name'# need to be unique for each devicetrap_device1:device_name: trap_device1device_ip: x.x.x.x/yyprovider: kentik-trap-devicetrap:listen: '0.0.0.0:1620'discovery: {}global:poll_time_sec: 300timeout_ms: 30000팁
런타임에 -dns 컨테이너 인수를 제공하여 장치 이름을 제어할 수도 있습니다. 이렇게 하면 컨테이너가 소스 IP 주소에서 조회를 실행하고 이름 확인을 시도할 수 있습니다.
들어오는 SNMP 트랩 메시지를 수신하려면 네트워크 모니터링 에이전트를 시작하십시오.
$CONTAINER_SERVICE
컨테이너의 고유한 이름으로 바꾸고$YOUR_NR_LICENSE_KEY
및$YOUR_NR_ACCOUNT_ID
를 원하는 값으로 바꿉니다.bash$docker run -d --name ktranslate-$CONTAINER_SERVICE --restart unless-stopped --pull=always -p 162:1620/udp \>-v `pwd`/traps-base.yaml:/snmp-base.yaml \>-e NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY \>kentik/ktranslate:v2 \>-snmp /snmp-base.yaml \>-nr_account_id=$YOUR_NR_ACCOUNT_ID \>-metrics=jchf \>-tee_logs=true \>-service_name=$CONTAINER_SERVICE \>nr1.snmp그러면 포트
162/udp
에서 SNMP 트랩 메시지를 수신하는 컨테이너가 시작됩니다.KSnmpTrap
이벤트 유형을 쿼리하여 New Relic에서 결과를 조사합니다.FROM KSnmpTrap SELECT *팁
SNMP 트랩 메시지는 소스 장치에 의해 생성된 이벤트라는 점을 기억하는 것이 중요합니다. New Relic에 메시지가 표시되지 않으면 장치가 실제로 메시지를 생성했는지 확인하세요. 샘플 메시지 전송에 대한 공급업체 문서는 다양하지만 Docker 호스트에서 snmptrap을 사용하여 다음과 같은 테스트 메시지를 보낼 수 있습니다.
bash$snmptrap -v 2c -c public localhost '' 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 i 123456
docker 설치된 Linux 호스트에서 컨테이너를 실행하는 데 사용할 설정 파일을 만듭니다.
bash$tee "./traps-base.yaml" > /dev/null <<'EOF'$devices: {}$trap:$listen: '0.0.0.0:1620'$discovery: {}$global:$poll_time_sec: 300$timeout_ms: 30000$EOF기본적으로 컨테이너는 소스 IP 주소를 New Relic의 장치 이름으로 사용합니다. 구성 파일에서 장치를 수동으로 매핑하여 이를 제어할 수 있습니다.
devices:# This key and the corresponding 'device_name'# need to be unique for each devicetrap_device1:device_name: trap_device1device_ip: x.x.x.x/yyprovider: kentik-trap-devicetrap:listen: '0.0.0.0:1620'discovery: {}global:poll_time_sec: 300timeout_ms: 30000팁
런타임에 -dns 컨테이너 인수를 제공하여 장치 이름을 제어할 수도 있습니다. 이렇게 하면 컨테이너가 소스 IP 주소에서 조회를 실행하고 이름 확인을 시도할 수 있습니다.
Rootless Podman 컨테이너는 1024 미만의 포트에 바인딩할 수 없습니다. 트랩 메시지에 대한 패킷 리디렉션을 처리하려면 UDP 포트 162에 도착하는 패킷을 목표로 하는
iptables
규칙을 만들어야 합니다.bash$sudo iptables -t nat -A PREROUTING -p udp --dport 162 -j REDIRECT --to-port 1620들어오는 SNMP 트랩 메시지를 수신하려면 네트워크 모니터링 에이전트를 시작하십시오.
$CONTAINER_SERVICE
컨테이너의 고유한 이름으로 바꾸고$YOUR_NR_LICENSE_KEY
및$YOUR_NR_ACCOUNT_ID
를 원하는 값으로 바꿉니다.bash$podman run -d --name ktranslate-$CONTAINER_SERVICE --userns=keep-id --restart unless-stopped --pull=always --net=host \>-v `pwd`/traps-base.yaml:/snmp-base.yaml \>-e NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY \>kentik/ktranslate:v2 \>-snmp /snmp-base.yaml \>-nr_account_id=$YOUR_NR_ACCOUNT_ID \>-metrics=jchf \>-tee_logs=true \>-service_name=$CONTAINER_SERVICE \>nr1.snmpKSnmpTrap
이벤트 유형을 쿼리하여 New Relic에서 결과를 조사합니다.FROM KSnmpTrap SELECT *팁
SNMP 트랩 메시지는 소스 장치에 의해 생성된 이벤트라는 점을 기억하는 것이 중요합니다. New Relic에 메시지가 표시되지 않으면 장치가 실제로 메시지를 생성했는지 확인하세요. 샘플 메시지 전송에 대한 공급업체 문서는 다양하지만 Docker 호스트에서 snmptrap을 사용하여 다음과 같은 테스트 메시지를 보낼 수 있습니다.
bash$snmptrap -v 2c -c public localhost '' 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 i 123456
무엇 향후 계획
SNMP 데이터를 보완하기 위해 더 많은 에이전트를 설정할 수 있습니다.
- 네트워크가 어떻게 사용되는지 더 잘 파악하려면네트워크 흐름 데이터 모니터링을 설정하세요.
- 장치에서 시스템 메시지에 대한 통찰력을 얻으려면 네트워크 syslog 수집을 설정 하십시오.