python+infuxdb+셸 작성 영역 네트워크 상황 표

본 고 는 python+infuxdb+셸 을 공유 하여 지역 네트워크 상황 표를 작성 하 였 으 며,구체 적 인 내용 은 다음 과 같 습 니 다.
셸 스 크 립 트 부분:

ex:ping 각 목적 의 ip 10 개의 가방 을 가 져 온 다음 에 버 림 률 과 평균 지연 시간 을 가 져 옵 니 다.Linux 에 서 는 정시 작업 으로 설정 하여 분당 한 번 씩 수행 합 니 다.그 는 데 이 터 를 inpuxdb 서버 에 써 서 hk 를 표시 할 것 이다.vnloss 와 hkvn01rtt,필드 는 loss 와 rtt 이 고 다른 각 지역 은 모두 유사 합 니 다.
python 코드 부분:
1.Django 프로젝트 의 setting 에서 inpuxdb 데이터베이스 연결 을 설정 합 니 다.

ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'network_ping.apps.NetworkPingConfig',
  'influxdb_metrics',
]

##influxdb
INFLUXDB_HOST = 'influxdb   ip'
INFLUXDB_PORT = 'influxdb port'
INFLUXDB_USER = 'influxdb username'
INFLUXDB_PASSWORD = 'influxdb passwd'
INFLUXDB_DATABASE = 'influxdb database'
INFLUXDB_TIMEOUT = 36000
2.infuxdb 데이터베이스 에서 저 장 된 loss 와 rtt 데 이 터 를 조회 합 니 다.

from influxdb_metrics.utils import query


def get_loss(tab_name):
  loss_res = query('SELECT * FROM %s ORDER BY time DESC limit 1' % tab_name)
  loss = [res for res in loss_res]
  return loss
3.웹 페이지 에 데 이 터 를 전송 합 니 다.

##network ping loss
def network_ping(request):
  # vn01 ping vn01
  vnloss01 = get_loss('vnloss')
  # vn01 ping vn02
  vnloss02 = get_loss('vn02loss')
  # vn01 ping th
  thloss = get_loss('thloss')
  # vn01 ping id
  idloss = get_loss('idloss')
  # vn01 ping sg
  sgloss = get_loss('sgloss')
  # vn01 ping tw
  twloss = get_loss('twloss')
  # vn01 ping hk
  hkloss = get_loss('hkloss')
  # vn01 ping sh
  shloss = get_loss('shloss')
  return render(request, 'net_ping.html',
         {'vn01': {
           'vnloss01': vnloss01,
           'vnloss02': vnloss02,
           'thloss': thloss,
           'hkloss': hkloss,
           'idloss': idloss,
           'sgloss': sgloss,
           'twloss': twloss,
           'shloss': shloss
         },...)
4.웹 페이지 에서 가 져 와 전시 하기;

<tr>
  <td bgcolor="#f0f8ff" class="titlestyle">VN-01<br/>45.119.241.249</td>
  <td tloss={{ vn01.vnloss01.0.0.loss }}></td>
  <td tloss={{ vn01.vnloss02.0.0.loss }}></td>
  <td tloss={{ vn01.thloss.0.0.loss }}></td>
  <td tloss={{ vn01.idloss.0.0.loss }}></td>
  <td tloss={{ vn01.sgloss.0.0.loss }}></td>
  <td tloss={{ vn01.twloss.0.0.loss }}></td>
  <td tloss={{ vn01.hkloss.0.0.loss }}></td>
  <td tloss={{ vn01.shloss.0.0.loss }}></td>
</tr>
5.js 정시 에 페이지 새로 고침;

$(function () {
    $("[tloss]").each(function () {
      var loss_res = $(this).attr('tloss');
      if (loss_res < 10) {
        $(this).html('<span class="greentyle"></span><br/>loss: <span bg>' + loss_res);
      } else if (loss_res <= 20) {
        $(this).html('<span class="yellowstyle"></span><br/>loss: ' + loss_res);
      } else {
        $(this).html('<span class="redstyle"></span><br/>loss: ' + loss_res);
      }
    });
    setTimeout("self.location.reload();", 60000);
  })

6.마지막 효과 전시;

마지막:페이지 는 매 분 에 한 번 씩 갱신 되 지만 이것 은 현재 ping 의 loss 와 rtt 값 입 니 다.역사의 ping 상황 을 보 려 면 Grafana 를 만 들 수 있 습 니 다.그리고 Grafana 는 데이터 원본 을 infuxdb 로 설정 하면 역사 곡선 등 을 볼 수 있 습 니 다.예 를 들 어:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기