Menu Close

Netflow / sflow visualization using open source #2 – opennms

Netflow / sflow visualization using open source #2 – opennms

 

Netflow / slofw visualization using open source #1 – elasticsearch

이전 글에서는 Elasticsearch 설치를 진행 습니다.

이어서 이번에는 Opennms 설치를 진행하도록 하겠습니다.

 

Opennms 는 오픈소스로 구현된 NMS(Network Management System)입니다.

Backend DB 로는 Postgresql를 사용하며 grafana와 연동이 가능합니다.

 

1. OpenNMS Repo 설치

[root@localhost]# yum -y install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel7.noarch.rpm
[root@localhost]# rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY

 

2. OpenNMS 설치 및 의존성 파일 설

[root@localhost]# yum -y install opennms yum-utils java-11-openjdk java-11-openjdk-devel
[root@localhost]# yum-config-manager --disable opennms-repo-stable-common,opennms-repo-stable-rhel7

 

3. Postgresql 시작 및 설정

[root@localhost]# postgresql-setup initdb
[root@localhost]# systemctl enable postgresql
[root@localhost]# systemctl start postgresql

 

4. Postgresql 계정 및 DB 생성

[root@localhost]# su - postgres
-bash-4.2$ createuser -P opennms
-bash-4.2$ createdb -O opennms opennms

 

5. Postgresql Super User Password 변경

-bash-4.2$ psql -c "ALTER USER postgres WITH PASSWORD 'YOUR-POSTGRES-PASSWORD';"
-bash-4.2$ exit

 

6. Postgresql Access Policy 변경

[root@localhost]# vi /var/lib/pgsql/data/pg_hba.conf
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
[root@localhost]# systemctl reload postgresql

ident 값을 md5로 변경하면 됩니다.

 

7. OpenNMS Horizon Database 설정 변경

[root@localhost]# vi /opt/opennms/etc/opennms-datasources.xml 
<jdbc-data-source name="opennms"
                    database-name="opennms"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/opennms"
                    user-name="opennms"
                    password="4. 진행시 입력한 패스워드 " />

<jdbc-data-source name="opennms-admin"
                    database-name="template1"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/template1"
                    user-name="postgres"
                    password="5. 진행시 입력한 패스워드 " />

 

8. OpenNMS Flow 관련 설정 변경

[root@localhost]# vi /opt/opennms/etc/telemetryd-configuration.xml
    <!-- SFlow listener & adapters -->
    <listener name="SFlow-UDP-6343" class-name="org.opennms.netmgt.telemetry.listeners.UdpListener" enabled="true">
        <parameter key="port" value="6343"/>
        <parser name="SFlow-Parser" class-name="org.opennms.netmgt.telemetry.protocols.sflow.parser.SFlowUdpParser" queue="SFlow" />
    </listener>
    <queue name="SFlow">
        <adapter name="SFlow-Adapter" class-name="org.opennms.netmgt.telemetry.protocols.sflow.adapter.SFlowAdapter" enabled="true">
        </adapter>
        <adapter name="SFlow-Telemetry" class-name="org.opennms.netmgt.telemetry.protocols.sflow.adapter.SFlowTelemetryAdapter" enabled="true">
            <parameter key="script" value="/opt/opennms/etc/telemetryd-adapters/sflow-host.groovy"/>
            <package name="SFlow-Default">
                <rrd step="300">
                    <rra>RRA:AVERAGE:0.5:1:2016</rra>
                    <rra>RRA:AVERAGE:0.5:12:1488</rra>
                    <rra>RRA:AVERAGE:0.5:288:366</rra>
                    <rra>RRA:MAX:0.5:288:366</rra>
                    <rra>RRA:MIN:0.5:288:366</rra>
                </rrd>
            </package>
        </adapter>
    </queue>

저희는 sflow를 사용하므로 sflow 관련 설정만  enable 시켰습니다.

설정파일에는 netflow v5, v9에 대한 정보도 있으니 필요하시면 enable 시키시면 됩니다.


9. OpenNMS Flow persistence elastic 설정

[root@localhost]# vi /opt/opennms/etc/org.opennms.features.flows.persistence.elastic.cfg
elasticUrl=http://es-master-node:9200
elasticIndexStrategy=daily

 

10. OpenNMS Horizon 실행

[root@localhost]# alternatives --config java
There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.3.7-0.el7_6.x86_64/bin/java)
* +2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/java)
Enter to keep the current selection[+], or type selection number: 1

[root@localhost]# /opt/opennms/bin/runjava -s
[root@localhost]# /opt/opennms/bin/install -dis
[root@localhost]# systemctl enable opennms
[root@localhost]# systemctl start opennms
[root@localhost]# /opt/opennms/bin/send-event.pl -p 'daemonName Telemetryd' uei.opennms.org/internal/reloadDaemonconfig

이전 버전의 java가 설치되어 있다면 java 버전 11-openjdk로 선택하기 위해서 다음 명령어로 변경해 주시면 됩니다.

alternatives –config java 명령어 실행 후 java버전은 11-openjdk로 선택해 주시면 됩니다.

/opt/opennms/bin/install -dis를 실행하고 마지막에 Upgrade completed successfully! 값이 나오지 않는다면 postgresql 의 계정들의 패스워드를 변경해 보시길 바랍니다.

특정 특수문자가 제대로 인식되지 않는 현상이 있는 것으로 보입니다.

 

11. OpenNMS 접속

http://<ip-or-fqdn-of-your-server>:8980/opennms

접속 하면 다음과 같은 화면이 나옵니다.  기본 ID/PW 는 admin/admin 입니다.

opennms_first_view

접속 후에는 패스워드를 변경하시기 바랍니다.

 

12. Node 추가

OpenNMS는 Node를 추가하기 위해서는 Requisition을 먼저 생성 후 Requisition 안에 Node가 생성이 됩니다.

글로 설명하는 것 보다는 보는 것이 더 이해하기 편하므로 캡쳐 사진을 첨부합니다.

1) admin에서 Configure OpenNMS를 선택합니다.

config_opennms

 

2) Manage Provisioning Requisitions을 선택합니다.

manage_requisition

 

3) Add requisitions을 선택합니다.

add_requisition

 

4) 생선된 requisitions을 확인합니다.

added_requisition

 

5) admin에서 Quick-add Node 를 선택합니다.

add_node

 

6) 생성한 Requisition와 Node 정보를 입력합니다. 편하게 하기 위해서 SNMP 정보도 입력합니다.

node_info

 

7) requisition에 Node가 추가 된 것을 확인합니다.

add_node_requisition

 

13. Flow 및 flow persistence 활성화

[root@localhost]# ssh -p 8101 admin@localhost
admin@opennms> config:edit org.opennms.features.flows.persistence.elastic
admin@opennms> config:property-set elasticUrl http://es-master-node:9200
admin@opennms> config:update
admin@opennms> config:edit org.opennms.netmgt.flows.rest
admin@opennms> config:property-set flowGraphUrl 'http://Grafana 설치 IP:3000/dashboard/flows?node=$nodeId&interface=$ifIndex'
admin@opennms> config:update
ctrl+d exit
[root@localhost]# systemctl restart opennms

 

14. Elasticsearch에 자료 저장 확인

[root@localhost]#  curl -XGET 'localhost:9200/_cat/indices?v&pretty'
health status index              uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   netflow-2019-06-21 REQNKXerScOFy9U0tpEGKA   5   1       4999            0      3.9mb          1.9mb

 

이로서 opennms의 설치와 기본 설정은 완료 되었습니다.

이제 수집된 정보를 시각화 하는 grafana에 대하여 다음 시간에 설치 및 구성을 하도록 하겠습니다.

 

Netflow / slofw visualization using open source #3 – grafana

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.