grafana 분리
All checks were successful
Build And Test / build-and-push (push) Successful in 5m17s

This commit is contained in:
2025-04-11 11:23:34 +09:00
parent 99a3db95a8
commit da71282a05
10 changed files with 130 additions and 109 deletions

View File

@ -156,6 +156,10 @@
<label for="urlGrafanaEdit" class="form-label">Grafana URL</label> <label for="urlGrafanaEdit" class="form-label">Grafana URL</label>
<input type="url" class="form-control" id="urlGrafanaEdit" name="url_grafana" value="{{ request.user.url_grafana }}"> <input type="url" class="form-control" id="urlGrafanaEdit" name="url_grafana" value="{{ request.user.url_grafana }}">
</div> </div>
<div class="mb-3">
<label for="urlGrafanaDashboard_01-Edit" class="form-label">Grafana Dashboard URL</label>
<input type="url" class="form-control" id="urlGrafanaDashboard01Edit" name="url_grafana_dashboard_01" value="{{ request.user.url_grafana_dashboard_01 }}">
</div>
<div class="mb-3"> <div class="mb-3">
<label for="urlPrometheusEdit" class="form-label">Prometheus URL</label> <label for="urlPrometheusEdit" class="form-label">Prometheus URL</label>
<input type="url" class="form-control" id="urlPrometheusEdit" name="url_prometheus" value="{{ request.user.url_prometheus }}"> <input type="url" class="form-control" id="urlPrometheusEdit" name="url_prometheus" value="{{ request.user.url_prometheus }}">

View File

@ -28,101 +28,13 @@
</li> </li>
{% endif %} {% endif %}
</ul> </ul>
<hr> </li>
<hr>
{% include "components/_sidebar_tm_dashboard.html" %} {% include "components/_sidebar_tm_dashboard.html" %}
</li>
<hr> <hr>
<li class="my-2"> {% include "components/_sidebar_nhn.html" %}
<button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#nhnc-collapse" aria-controls="nhnc-collapse">NHN Cloud API ▽</button>
<ul class="list-unstyled ps-3 collapse" id="nhnc-collapse">
{% if request.user.is_authenticated and request.user.is_staff %}
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/test">출력결과 검토</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/preparations">주의 사항</a>
</li>
<hr>
<span>관리대장</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhnc_mgmt/igw">인터넷 게이트웨이</a>
</li>
<hr>
<span>Network</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/infoVpcListRequest">VPC 조회 및 삭제</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/createVpcRequest">VPC 생성</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/infoClusterListRequest">NKS Cluseter 조회 및 삭제</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/createClusterOnlyRequest">NKS Cluseter 생성</a>
</li>
<hr>
<span>k8s Components deploy</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/nksApply">Ingress Deploy</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/nksApply">FluentBit Deploy</a>
</li>
<li>
<a class="text-secondary d-inline-flex align-items-center rounded disabled" href="#">Logging Deploy(미구현)</a>
</li>
<li>
<a class="text-secondary d-inline-flex align-items-center rounded disabled" href="#">Monitoring Deploy(미구현)</a>
</li>
{% else %}
<p>로그인이 필요합니다.</p>
<a class="d-inline-flex align-items-center rounded" href="/notice/2/" target="_blank">사용가이드</a>
{% endif %}
</ul>
</li>
<hr> <hr>
<li class="my-2"> {% include "components/_sidebar_devtools.html" %}
<button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#components-collapse" aria-controls="components-collapse">DevOpsTools ▽</button>
<ul class="list-unstyled ps-3 collapse" id="components-collapse">
{% if request.user.is_authenticated and request.user.is_staff %}
<span>Dev</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_gitea}}" target="_blank">Repository - Gitea</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_harbor}}" target="_blank">Registry - Harbor</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_argocd}}" target="_blank">Deploy - ArgoCD</a>
</li>
<hr>
<span>Ops</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_web_ide}}" target="_blank">Web VScode - CodeServer</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_rancher}}" target="_blank">Cluster Management - Rancher</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_grafana}}" target="_blank">Monitoring - Grafana</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_prometheus}}" target="_blank">Metrics - Prometheus</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_opensearch}}" target="_blank">Container Log - OpenSearch</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_kiali}}" target="_blank">Main Cluster Traffic - Kiali</a>
</li>
{% else %}
<p>로그인이 필요합니다.</p>
<a class="d-inline-flex align-items-center rounded" href="/notice/2/" target="_blank">사용가이드</a>
{% endif %}
</ul>
</li>
<hr> <hr>
<li class="my-2"> <li class="my-2">
<button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#other-collapse" aria-controls="other-collapse">Other Tools ▽</button> <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#other-collapse" aria-controls="other-collapse">Other Tools ▽</button>

View File

@ -0,0 +1,40 @@
<li class="my-2">
<button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#components-collapse" aria-controls="components-collapse">DevOpsTools ▽</button>
<ul class="list-unstyled ps-3 collapse" id="components-collapse">
{% if request.user.is_authenticated and request.user.is_staff %}
<span>Dev</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_gitea}}" target="_blank">Repository - Gitea</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_harbor}}" target="_blank">Registry - Harbor</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_argocd}}" target="_blank">Deploy - ArgoCD</a>
</li>
<hr>
<span>Ops</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_web_ide}}" target="_blank">Web VScode - CodeServer</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_rancher}}" target="_blank">Cluster Management - Rancher</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_grafana}}" target="_blank">Monitoring - Grafana</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_prometheus}}" target="_blank">Metrics - Prometheus</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_opensearch}}" target="_blank">Container Log - OpenSearch</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="{{request.user.url_kiali}}" target="_blank">Main Cluster Traffic - Kiali</a>
</li>
{% else %}
<p>로그인이 필요합니다.</p>
{% endif %}
</ul>
</li>

View File

@ -0,0 +1,48 @@
<li class="my-2">
<button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#nhnc-collapse" aria-controls="nhnc-collapse">NHN Cloud API ▽</button>
<ul class="list-unstyled ps-3 collapse" id="nhnc-collapse">
{% if request.user.is_authenticated and request.user.is_staff %}
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/test">출력결과 검토</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/preparations">주의 사항</a>
</li>
<hr>
<span>관리대장</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhnc_mgmt/igw">인터넷 게이트웨이</a>
</li>
<hr>
<span>Network</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/infoVpcListRequest">VPC 조회 및 삭제</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/createVpcRequest">VPC 생성</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/infoClusterListRequest">NKS Cluseter 조회 및 삭제</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/createClusterOnlyRequest">NKS Cluseter 생성</a>
</li>
<hr>
<span>k8s Components deploy</span>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/nksApply">Ingress Deploy</a>
</li>
<li>
<a class="d-inline-flex align-items-center rounded" href="/nhncloud/nksApply">FluentBit Deploy</a>
</li>
<li>
<a class="text-secondary d-inline-flex align-items-center rounded disabled" href="#">Logging Deploy(미구현)</a>
</li>
<li>
<a class="text-secondary d-inline-flex align-items-center rounded disabled" href="#">Monitoring Deploy(미구현)</a>
</li>
{% else %}
<p>로그인이 필요합니다.</p>
{% endif %}
</ul>
</li>

View File

@ -1,8 +1,8 @@
<li class="my-2"> <li class="my-2">
<button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#tm_dsbd-collapse" aria-controls="tm_dsbd-collapse">Telemetry Dashboard ▽</button> <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#tm_dsbd-collapse" aria-controls="tm_dsbd-collapse">Telemetry Dashboard ▽</button>
<ul class="list-unstyled ps-3 collapse" id="tm_dsbd-collapse"> <ul class="list-unstyled ps-3 collapse" id="tm_dsbd-collapse">
<li> <li>
<a class="d-inline-flex align-items-center rounded" href="/tm_dsbd/grafana">grafana</a> <a class="d-inline-flex align-items-center rounded" href="/tm_dsbd/grafana">grafana</a>
</li> </li>
</ul> </ul>
</li> </li>

View File

@ -33,6 +33,7 @@ class CustomUserChangeForm(UserChangeForm):
'url_web_ide', 'url_web_ide',
'url_rancher', 'url_rancher',
'url_grafana', 'url_grafana',
'url_grafana_dashboard_01',
'url_prometheus', 'url_prometheus',
'url_opensearch', 'url_opensearch',
'url_kiali', 'url_kiali',

View File

@ -0,0 +1,18 @@
# Generated by Django 4.2.14 on 2025-04-11 11:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('custom_auth', '0007_customuser_url_mattermost_customuser_url_nexus'),
]
operations = [
migrations.AddField(
model_name='customuser',
name='url_grafana_dashboard_01',
field=models.URLField(blank=True, null=True),
),
]

View File

@ -22,13 +22,13 @@ class CustomUser(AbstractUser):
url_web_ide = models.URLField(max_length=200, blank=True, null=True) url_web_ide = models.URLField(max_length=200, blank=True, null=True)
url_rancher = models.URLField(max_length=200, blank=True, null=True) url_rancher = models.URLField(max_length=200, blank=True, null=True)
url_grafana = models.URLField(max_length=200, blank=True, null=True) url_grafana = models.URLField(max_length=200, blank=True, null=True)
url_grafana_dashboard_01 = models.URLField(max_length=200, blank=True, null=True) # 2025-04-11 추가
url_prometheus = models.URLField(max_length=200, blank=True, null=True) url_prometheus = models.URLField(max_length=200, blank=True, null=True)
url_opensearch = models.URLField(max_length=200, blank=True, null=True) url_opensearch = models.URLField(max_length=200, blank=True, null=True)
url_kiali = models.URLField(max_length=200, blank=True, null=True) url_kiali = models.URLField(max_length=200, blank=True, null=True)
url_nexus = models.URLField(max_length=200, blank=True, null=True) url_nexus = models.URLField(max_length=200, blank=True, null=True)
url_mattermost = models.URLField(max_length=200, blank=True, null=True) url_mattermost = models.URLField(max_length=200, blank=True, null=True)
def encrypt_private_key(self, private_key: str) -> bytes: def encrypt_private_key(self, private_key: str) -> bytes:
"""SSH Private Key 암호화""" """SSH Private Key 암호화"""
cipher = Fernet(self.get_encryption_key()) cipher = Fernet(self.get_encryption_key())

View File

@ -7,13 +7,11 @@
<h2 class="fw-bold pb-2">Grafana</h2> <h2 class="fw-bold pb-2">Grafana</h2>
<!-- Grafana IFrame --> <!-- Grafana IFrame -->
<div class="ratio ratio-16x9"> <div class="ratio ratio-16x9">
<iframe {% if request.user.url_grafana_dashboard_01 %}
src="https://grafana.icurfer.com/public-dashboards/40d2a2615010433d81f5cf40caa03541" <iframe src="{{request.user.url_grafana_dashboard_01}}" width="100%" height="800" frameborder="0" allowfullscreen></iframe>
width="100%" {% else %}
height="800" <h3 class="text-danger">접속 후 Profile에 Dashboard URL을 등록하세요.</h3>
frameborder="0" {% endif %}
allowfullscreen
></iframe>
</div> </div>
</article> </article>
{% endblock %} {% endblock %}

View File

@ -1 +1 @@
dev_0.0.37 dev_0.0.38