diff --git a/Grafana%3A-Setup-for-TA%2Fadmin.md b/Grafana%3A-Setup-for-TA%2Fadmin.md
index cdbd84f..a77b93c 100644
--- a/Grafana%3A-Setup-for-TA%2Fadmin.md
+++ b/Grafana%3A-Setup-for-TA%2Fadmin.md
@@ -1,5 +1,164 @@
-TODO
+## setup `grafana`, `loki`, and `prometheus` on `joj-dev`
+
+Check and also `apt install loki prometheus`.
+
+## nginx reverse proxy for `prometheus` on `joj-dev`, also on real machine out of lxc containers
+
+```
+tt@dev:~$ cat /etc/nginx/sites-enabled/metrics.conf
+server {
+ listen 9102;
+
+ location /metrics {
+ proxy_pass http://111.186.58.48:9100/lxc/engr151/go-judge/metrics;
+ }
+}
+
+server {
+ listen 9103;
+
+ location /metrics {
+ proxy_pass http://111.186.58.48:9100/lxc/ece477/go-judge/metrics;
+ }
+}
+
+server {
+ listen 9104;
+
+ location /metrics {
+ proxy_pass http://111.186.59.59:9100/lxc/ece482/go-judge/metrics;
+ }
+}
+```
+
+```
+tt@dev:~$ cat /etc/prometheus/prometheus.yml
+# Sample config for Prometheus.
+
+global:
+ scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
+ evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
+ # scrape_timeout is set to the global default (10s).
+
+ # Attach these labels to any time series or alerts when communicating with
+ # external systems (federation, remote storage, Alertmanager).
+ external_labels:
+ monitor: 'example'
+
+# Alertmanager configuration
+alerting:
+ alertmanagers:
+ - static_configs:
+ - targets: ['localhost:9093']
+
+# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
+rule_files:
+ # - "first_rules.yml"
+ # - "second_rules.yml"
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+ # The job name is added as a label `job=` to any timeseries scraped from this config.
+ - job_name: 'prometheus'
+
+ # Override the global default and scrape targets from this job every 5 seconds.
+ scrape_interval: 5s
+ scrape_timeout: 5s
+
+ # metrics_path defaults to '/metrics'
+ # scheme defaults to 'http'.
+
+ static_configs:
+ - targets: ['localhost:9090']
+
+ - job_name: focs
+ # If prometheus-node-exporter is installed, grab stats about the local
+ # machine by default.
+ static_configs:
+ - targets: ['10.0.3.1:9100'] # from focs host machine
+ - job_name: joj1
+ static_configs:
+ - targets: ['202.121.180.22:9100']
+ - job_name: ve482
+ static_configs:
+ - targets: ['111.186.59.59:9100']
+ - job_name: engr151
+ static_configs:
+ - targets: ['111.186.58.48:9100']
+ - job_name: lxc_engr151_go-judge
+ static_configs:
+ - targets: ['127.0.0.1:9102']
+ - job_name: lxc_ece477_go-judge
+ static_configs:
+ - targets: ['127.0.0.1:9103']
+ - job_name: lxc_ece482_go-judge
+ static_configs:
+ - targets: ['127.0.0.1:9104']
+```
+
+```
+ta@engr151:~$ cat /etc/nginx/sites-enabled/metrics.conf
+server {
+ listen 9100;
+
+ location /metrics {
+ proxy_pass http://localhost:9101/metrics;
+ }
+
+ location /node-exporter/metrics {
+ proxy_pass http://localhost:9101/metrics;
+ }
+
+ location /lxc/engr151/go-judge/metrics {
+ proxy_pass http://10.0.3.151:5052/metrics;
+ }
+
+ location /lxc/ece477/go-judge/metrics {
+ proxy_pass http://10.0.3.180:5052/metrics;
+ }
+}
+```
+
+## install & setup `promtail` and `prometheus-node-exporter` on course machine
+
+Check , then `apt install prometheus-node-exporter`.
+
+```
+tt@engr151-24fa:~$ cat /etc/promtail/config.yml
+# This minimal config scrape only single log file.
+# Primarily used in rpm/deb packaging where promtail service can be started during system init process.
+# And too much scraping during init process can overload the complete system.
+# https://github.com/grafana/loki/issues/11398
+
+server:
+ http_listen_port: 9080
+ grpc_listen_port: 0
+
+positions:
+ filename: /tmp/positions.yaml
+ sync_period: 10s
+
+clients:
+- url: http://focs.ji.sjtu.edu.cn:3100/loki/api/v1/push
+ batchwait: 1s
+ batchsize: 102400
+
+scrape_configs:
+- job_name: engr151-24fa
+ static_configs:
+ - targets:
+ - localhost
+ labels:
+ job: engr151-24fa_joj3-logs
+ __path__: /home/tt/.cache/joj3/**/*.ndjson
+
+ pipeline_stages:
+ - json:
+ expressions:
+ time: time
+ - timestamp:
+ source: time
+ format: RFC3339Nano
+```
-- setup `grafana` and `prometheus` on `joj-dev`
-- nginx reverse proxy for `prometheus` on `joj-dev`, also on real machine out of lxc containers
-- install & setup `promtail` and `prometheus-node-exporter` on course machine
\ No newline at end of file