Erfahren Sie, wie Alibaba Cloud das Grafana-Dashboard verwendet hat, um Informationen zu COVID-19-Ausbrüchen dynamisch anzuzeigen.
Ich möchte das Dashboard anpassen, das den Trendstatus anzeigt, um den Zweck zu verdeutlichen. Da ich mich derzeit in Shanghai befinde, möchte ich die Anzahl der bestätigten Fälle, Verdachtsfälle, Geneser und Todesfälle im ganzen Land anzeigen und gleichzeitig die Fallkurve anzeigen, um den Entwicklungstrend der Epidemie sowie jede Provinz und jeden Bezirk in Shanghai zu beobachten. Ich möchte den Status von anzeigen.
Grafana ist nur ein Tool zum Anzeigen von Daten, daher müssen Sie zuerst eine Datenquelle abrufen. Derzeit können die verfügbaren Pestdatenquellen nicht direkt in Grafana integriert werden. Daher müssen Sie Folgendes tun:
--Installieren Sie das ** SimpleJson-Plug-In **, mit dem JSON-formatierte Daten in eine Datenquelle für Grafana konvertiert werden können.
Hier entwickeln wir eine Datenquelle mit Python Bottle. Es gibt auch die Option Flask, die dieselbe Funktion hat. Ich habe mich für Bottle entschieden, weil ich damit meine vorherige Grafana-Datenquelle entwickelt habe. Nicht nur die Debug-Einstellungen, sondern auch die Docker-Datei zum Erstellen des Docker-Images und die Datei "deploy.yaml" zum Bereitstellen von Kubernetes sind vorbereitet und einsatzbereit. Das Entwickeln einer Grafana-Datenquelle mit Python ist sehr einfach. Stellen Sie einfach sicher, dass Ihre Daten den Formatierungsanforderungen von "SimpleJson" entsprechen. Oz Nahum Tirams Blog über die Verwendung von Python zur Entwicklung von Datenquellen für Grafana Artikel "[Visualisiere fast alles mit Grafana und Python](http://oz123.github.io/writings/2019-06-16-Visualize-almost-anything-with-Grafana-and-Python/index.html?spm=" Bitte lesen Sie a2c65.11461447.0.0.2e7418faOcjQf4) ".
Zum Anpassen Ihrer Datenquelle stehen zwei Datentypen zur Verfügung:
Für eine Echtzeitansicht der epidemischen Trends in China, insbesondere in Shanghai, können Sie bestätigte Fälle, Verdachtsfälle, Sammlungen, Todesfälle und Datenänderungen im Vergleich zu früheren Daten anzeigen. Sie können auch eine Kurve zeichnen, um bestätigte und vermutete Fälle sowie die Anzahl der Sammlungen und Todesfälle zu vergleichen.
Für bestätigte Fälle geben Sie einfach die Daten zurück, indem Sie die Anzahl der bundesweit bestätigten Fälle "gntotal" mit dem aktuellen Zeitstempel kombinieren. Andere Metriken können auf die gleiche Weise verarbeitet werden.
@app.post('/query')
def query():
print(request.json)
body = []
all_data = getDataSync()
time_stamp = int(round(time.time() * 1000))
for target in request.json['targets']:
name = target['target']
if name == 'gntotal':
body.append({'target': 'gntotal', 'datapoints': [[all_data['gntotal'], time_stamp]]})
body = dumps(body)
return HTTPResponse(body=body, headers={'Content-Type': 'application/json'})
Sie können eine Tabelle verwenden, in der bestätigte, vermutete, wiederhergestellte und tödliche Fälle in jeder Provinz in China abgebildet sind, und eine andere Tabelle, in der die gleichen Daten für jeden Distrikt in Shanghai angezeigt werden.
Sie können Namen, bestätigte Fälle, Verdachtsfälle, Wiederhersteller und Tote aus den Daten extrahieren und sie der Zeile "Zeilen" "Anhängen" hinzufügen.
@app.post('/query')
def query():
print(request.json)
body = []
all_data = getDataSync()
sh_data = getShDataSync()
if request.json['targets'][0]['type'] == 'table':
rows = []
for data in all_data['list']:
row = [data['name'], data['value'], data['susNum'], data['cureNum'], data['deathNum']]
rows.append(row)
sh_rows = []
for data in sh_data['city']:
row = [data['name'], data['conNum'], data['susNum'], data['cureNum'], data['deathNum']]
sh_rows.append(row)
bodies = {'all': [{
"columns": [
{"text": "Sparen", "type": "name"},
{"text": "确 诊", " type": "conNum"},
{"text": "Pseudo-", " type": "susNum"},
{"text": "Heilen", "type": "cureNum"},
{"text": "Tod", "type": "deathNum"}
],
"rows": rows,
"type": "table"
}],
'sh': [{
"columns": [
{"text": "Sparen", "type": "name"},
{"text": "确 诊", " type": "value"},
{"text": "Pseudo-", " type": "susNum"},
{"text": "Heilen", "type": "cureNum"},
{"text": "Tod", "type": "deathNum"}
],
"rows": sh_rows,
"type": "table"
}]}
series = request.json['targets'][0]['target']
body = dumps(bodies[series])
return HTTPResponse(body=body, headers={'Content-Type': 'application/json'})
In der Regel werden vier Felder zur Anzeige von Daten verwendet.
Mit Single Stat wird die Fallnummer angezeigt.
Das Diagramm zeigt eine Vergleichskurve.
--Tabelle wird verwendet, um die Tabelle anzuzeigen.
Nun richten wir die Datenquelle ein.
Da es hier nur einen Wert gibt, wählen Sie Zuerst.
Diese Grafiken vergleichen die Anzahl der bestätigten und vermuteten Fälle, die Anzahl der Sammlungen und die Anzahl der Todesfälle.
Das Gesamtfinish ist in Ordnung und wird als trendiges Dashboard des Unternehmens verwendet. Hier verwenden wir den Xiaomi-Fernseher mit einem relativ kleinen Bildschirm. Daher haben wir die Schriftarten und das Anzeigefeld erweitert, um die Demo zu verbessern.
Nachdem Sie Ihren Code in ein Docker-Image gepackt haben, können Sie Ihren Code in einer beliebigen Umgebung oder in einem Kubernetes-Cluster ausführen. Das Bild wurde in Docker Hub hochgeladen und kann von dort zur sofortigen Verwendung abgerufen werden.
# Dockerfile
FROM python:3.7.3-alpine3.9
LABEL maintainer="[email protected]"
COPY . /app
RUN echo "https://mirrors.aliyun.com/alpine/v3.9/main/" > /etc/apk/repositories \
&& apk update \
&& apk add --no-cache gcc g++ python3-dev python-dev linux-headers libffi-dev openssl-dev make \
&& pip3 install -r /app/requestments.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
WORKDIR /app
ENTRYPOINT ["uwsgi","--ini","uwsgi.ini"]
docker pull guoxudongdocker/feiyan-datasource
docker run -d --name datasource -p 8088:3000 guoxudongdocker/feiyan-datasource
Wählen Sie die SimpleJson-Datenquelle aus, klicken Sie auf Hinzufügen und geben Sie die Adresse der Datenquelle ein.
** Dashboard importieren ** Klicken Sie auf die Datei "Upload.json" und wählen Sie "wuhan2020-grafana / dashboard.json" aus.
(Optional) Verwenden Sie Kubernetes für die Bereitstellung.
kubectl apply -f deploy.yaml
Ab Mitte Februar, als ich dies schrieb, steigt die Zahl der bestätigten Fälle in China immer noch rapide an, aber glücklicherweise beginnt die Wachstumsrate der Verdachtsfälle zu sinken. Es ist ersichtlich, dass die Rate der bestätigten Fälle stetig zunimmt und auch die Anzahl der Sammlungen zunimmt. Im Vergleich zu anderen Regionen hat die Zahl der Fälle in Shanghai nicht wesentlich zugenommen, obwohl viele Menschen zur Arbeit zurückgekehrt sind. Als Teil davon beginnen strenge Razzien in Wohngebieten in Kraft zu treten. Derzeit gibt es in Shanghai nur einen Todesfall, da Chinas erste Genesung verzeichnet wurde. Im Allgemeinen besteht kein Zweifel daran, dass wir die Epidemie überwinden und diese schwierige Zeit überwinden werden, solange wir auf Prävention achten und zu Hause bleiben.
Die JSON-Datei zum Importieren von Dashboards und die YMAL-Datei zum Bereitstellen von Kubernetes befinden sich auf GitHub. Die Adresse des Projekts finden Sie hier. https://github.com/sunny0826/wuhan2020-grafana
Während Alibaba Cloud weiterhin gegen die weltweit vorkommenden Coronaviren kämpft, möchte sie ihren Beitrag leisten und alles tun, um anderen im Kampf gegen Coronaviren zu helfen. Ich bin. Informationen zur Unterstützung Ihrer Geschäftskontinuität finden Sie unter https://www.alibabacloud.com/campaign/fight-coronavirus-covid-19. Bitte erkundigen Sie sich bei -covid-19).
Recommended Posts