리셋 되지 말자

[Centos 7] SNMP 서비스 적용- InfluxDB, Telegraf, Grafana(4) 본문

SNMP

[Centos 7] SNMP 서비스 적용- InfluxDB, Telegraf, Grafana(4)

kyeongjun-dev 2020. 1. 17. 17:59

InfluxDB까지 설치가 끝났고, 이번엔 Telegraf를 설치해보자.

 

1. Telegraf rmp 다운로드

rpm은 아래에서 받아주시길 바랍니다.(가급적이면 최신버전을 추천드립니다.)

https://not-to-be-reset.tistory.com/24

 

[CentOS 7] InfluxDB, Telegraf 설치

https://www.popit.kr/influxdb_telegraf_grafana_1/ InfluxDB, Telegraf, Grafana 를 활용한 Monitoring System 만들기(1) | Popit InfluxDB(저장), Telegraf(수집), Grafana(대시보드) 조합으로 모니터링 시스템..

not-to-be-reset.tistory.com

 

쓴이는 wget으로 받았습니다.

rpm 다운로드 완료된 화면

# yum localinstall -y # yum localinstall -y telegraf-1.13.1.x86_64.rpm

설치성공

2. config 파일 생성 및 수정

/etc/telegraf/

설치가 되면, 자동으로 위의 경로에 telegraf.conf 파일이 생성됩니다. 이제 저 파일을 수정해야 하는데, 

 

4154줄부터 inputs.snmp 를 간단히 살펴보겠습니다.

[[ ]]로 최외각에 묶여 있는 부분이 하나의 Plugin이라고 보시면 됩니다. 

telegraf.conf 에서 설정된 Plugin에 의해 telegraf가 동작하게 됩니다. 

 

보시는 바와 같이 최소항목을 제외하면 맨 왼쪽에 모두 주석이 있는걸 확인할 수 있습니다.

GUI환경이라서 별도의 text 편집기를 사용할 수 없다면 맨 앞의 # 주석 처리를 일일히 제거하기에는 쉽지 않고, 사용하지 않을 플러그인들도 매우 많으니, telegraf에서 conf파일 생성을 지원하는데 이 기능을 이용하여 새로운 conf 파일을 생성해도 됩니다.

# telegraf -sample-config -input-filter cpu:disk:mem:net:netstat:ping:snmp -output-filter influxdb > telegraf.conf

 

3. custom config 파일 생성

# telegraf -sample-config -input-filter snmp > telegraf.conf

위의 명령어로 telegranf.conf 파일을 생성해 줍니다. snmp로 동작 하는게 목표이기 때문에 snmp plugin만 사용하도록 하겠습니다. cpu, disk등은 원하시는 대로 사용 하시면 됩니다.

 

4. config 파일 수정 - input plugin

변경 전

[[inputs.snmp]] 위치로 가서 수정을 시작해 줍니다.

1691 : agents = ["udp://127.0.0.1:161"]  ->  agents = ["agent가상머신의 ip 주소:161"]

1694 : 맨 앞의 주석 제거

1697 : 맨 앞의 주석 제거

1700 : 맨 앞의 주석 제거, "public"을 "agent 가상머신의 SNMP community 이름으로 변경"

 

변경 후

아래의 문구들을 snmp 플러그인 부분의 맨 뒤에 삽입해 줍니다.

  [[inputs.snmp.field]] 
    name = "hostname" 
    oid = "RFC1213-MIB::sysName.0" 
    is_tag = true 

  [[inputs.snmp.table]] 
    name = "snmp" 
    inherit_tags = [ "hostname" ] 
    oid = "IF-MIB::ifXTable" 

  [[inputs.snmp.table.field]] 
      name = "ifName" 
      oid = "IF-MIB::ifName" 
      is_tag = true 

 

5. config 파일 수정 - output plugin

변경 전

[[outputs.influxdb]] 플러그인의 위치로 이동합니다.

 

112 : 맨 앞의 주석 제거

116 : 맨 앞의 주석 제거, "telegraf"이름을 자신이 원하는 이름으로 변경. (앞의 주석을 제거하지 않으면, 자동으로 이름이 'telegraf'인 database가 생성됩니다.)

변경 후

 

(아래로 이동)

변경 전

142 : 맨 앞의 주석 제거, username을 "telegraf"에서 InfluxDB에 생성된 계정 이름으로 변경

143 : 마찬가지로 InfluxDB에 생성된 계정의 비밀번호로 변경

 

변경 후

 

 

6. InfluxDB config파일 수정 및 계정 추가

# influx

위 명령어로 influxdb에 접속합니다

접속한 화면

CREATE USER admin WITH PASSWORD 'admin' WITH ALL PRIVILEGES

위의 명령어로 비밀번호가 admin인 admin 계정을 만들어 줍니다. 5번의 'Basic HTTP auth'의 username과 password와 동일하기만 하면 됩니다. 그러므로 꼭 이름이랑 비밀번호가 admin일 필요는 없습니다.

 

 

# vi /etc/influxdb/influxdb.conf

위의 경로의 config 파일을 아래의 그림과 같이 수정해 줍니다.

핵심은 259 번째 줄의 auth-enabled를 true로 해주는 것입니다.

해당 항목을 true로 해주면, 계정 로그인 없이 influxdb에 접속할 경우 쿼리문을 사용할 수 없습니다.

 

7. 수정한 telegraf.conf파일 테스트

# telegraf --test --config telegraf.conf

위의 명령어로 테스트 했을 때, 오류가 나지 않으면 일단은 작성이 잘 된것입니다.

테스트한 모습

snmp 플러그인 부분에 추가해준 필드, 테이블은 snmp통신에 MIB를 이용하여 값을 가져오는 것입니다.

MIB는 OID로 변경이 가능하고, 당연히 반대도 가능합니다. (net-snmp-utils 패키지가 설치 되어 있어야 합니다.)

 

# snmptranslate -On IF-MIB::ifXTable

# snmptranslate .1.3.6.1.2.1.31.1.1

 

8. config파일 이동

편집한 config 파일을 /etc/telegraf/ 경로에 옮긴 뒤,

# systemctl restart telegraf

telegraf를 재시작 해줍니다.

 

# systemctl status telegraf -l

명령어를 이용해 잘 실행이 되었는지 확인이 가능합니다. error 문구가 보이지 않는다면 성공일 확률이 높습니다.

 

9. InfluxDB 확인

제대로 설정이 되었다면 위에서 설정한 database의 이름인 'kkj_telegraf' database가 생성이 되고, 안에 snmp 값들이 저장되어야 합니다.

위의 그림과 같이 influx 를 입력하여 접속한 뒤, auth를 입력하면 계정으로 접속할 수 있습니다. 계정으로 접속하지 않으면 show databases 같은 쿼리문 사용이 불가능합니다.

 

kkj_telegraf database가 생성이 된 모습
snmp measurement가 생성된 모습

> use 데이터베이스이름

으로 데이터베이스를 선택할 수 있고,

 

> show measurements

으로 measurement 목록을 확인할 수 있습니다.

플러그인으로 snmp 하나만 지정했기 때문에 snmp만 존재하는 것을 확인할 수 있습니다.

 

값 확인

> select * from snmp

으로 snmp measurement안에 값들이 5초 주기적으로 추가되는것을 확인할 수 있습니다.

고생하셨습니다. (나 자신 포함)

 

다음 포스팅에선 위의 값들을 Grafana를 이용해 그래프로 표현하는 것입니다.

Comments