/etc/perfsonar/psconfig/archives.d/http_logstash.json
{
    "archiver": "http",
    "data": {
        "schema": 2,
        "_url": "https://{% scheduled_by_address %}/logstash",
        "op": "put",
        "_headers": {
            "x-ps-observer": "{% scheduled_by_address %}",
            "content-type": "application/json", "Authorization":"Basic cGVy...."
        }
    }
}
/etc/httpd/conf.d/apache-logstash.conf
    ProxyPass /logstash http://localhost:11283 status=+I
    ProxyPassReverse /logstash http://localhost:11283 status=+I
    ProxyPreserveHost On
    <Location /logstash>
        Authtype Basic
        AuthUserFile /etc/perfsonar/opensearch/logstash_login
/etc/perfsonar/opensearch/logstash_login
perfsonar:$apr1....
# curl https://localhost/logstash \
   -H "Authorization: Basic cGVy...."
ok
/etc/logstash/pipelines.yml
- path.config: /etc/logstash/conf.d/*.conf
  pipeline.id: main
- path.config: /usr/lib/perfsonar/logstash/pipeline/*.conf
  pipeline.id: pscheduler
# ls /usr/lib/perfsonar/logstash/pipeline
01-inputs.conf               04-iso8601-duration.conf  06-result_rtt.conf         99-outputs.conf
02-pscheduler_common.conf    05-geoip.conf             06-result_throughput.conf
03-normalize_endpoints.conf  06-result_latency.conf    06-result_trace.conf
/usr/lib/perfsonar/logstash/pipeline/01-inputs.conf
input {
  http {
    host => "localhost"
    port => "11283" # ACII 112=p, 83=S
  }
}
/usr/lib/perfsonar/logstash/pipeline/99-outputs.conf
output {
    #If has [test][type] create index using that in name.
    if [test][type] {
        opensearch {
            hosts => ["${opensearch_output_host}"]
            ssl_certificate_verification => false
            user => "${opensearch_output_user}"
            password => "${opensearch_output_password}"
            index => "pscheduler_%{[test][type]}-%{+YYYY.MM.dd}"
        }
    }
}
/etc/perfsonar/logstash/logstash_sysconfig
## Logstash environment variables.
log_level=info
opensearch_output_host=https://localhost:9200
opensearch_output_user=pscheduler_logstash
opensearch_output_password=pscheduler_logstash
XPACK_MONITORING_ENABLED=False
LOGSTASH_ELASTIC_USER=pscheduler_logstash
/etc/perfsonar/opensearch/auth_setup.out
admin mE......
anomalyadmin vv......
kibanaserver qg......
kibanaro fc......
logstash Nm......
readall E4......
snapshotrestore MK......
pscheduler_logstash Ji......
pscheduler_reader YR......
pscheduler_writer IX......
# U=`cat /etc/perfsonar/opensearch/auth_setup.out | head -n 1 | sed -e 's/ /:/g'`
# alias CURL="curl -X GET -u $U"
# CURL 'https://127.0.0.1:9200/_cluster/health?pretty'
{
  "cluster_name" : "opensearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "discovered_master" : true,
  "discovered_cluster_manager" : true,
  "active_primary_shards" : 501,
  "active_shards" : 501,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 499,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.1
}
# CURL 'https://127.0.0.1:9200/_cat/indices?v'
health status index                            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   pscheduler_latencybg-2023.05.10  LlDBhY_ES1-nuONvTHdhSg   1   1      29536            0     38.5mb         38.5mb
...
yellow open   pscheduler_latencybg-2023.09.04  eKlsY1_cRTqfnBxgkekChg   1   1      20246            0     24.4mb         24.4mb
yellow open   pscheduler_throughput-2023.05.10 pKT63gJAR2aoMDaLREm3GQ   1   1         94            0    880.3kb        880.3kb
...
yellow open   pscheduler_throughput-2023.09.03 vijnOOjITk67a7mAZzX2IA   1   1         42            0    391.1kb        391.1kb
yellow open   pscheduler_trace-2023.05.11      NwXrbs5fRBqhUbIgZsgvNw   1   1       1589            0      2.4mb          2.4mb
...
yellow open   pscheduler_trace-2023.09.03      VnBhB_bkTjmpL_oYuXhyBw   1   1       4171            0      6.5mb          6.5mb
# CURL 'https://localhost:9200/pscheduler_throughput-2023.09.03/_search' -H "Content-Type: application/json" -d '{ "size": 3 }'
{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 139,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
        { /*...*/ },
        { /*...*/ },
        { /*...*/ }
    ]
  }
}
/etc/httpd/conf.d/apache-elmond.conf
    SSLProxyEngine On
    ProxyPass /esmond/perfsonar/archive http://localhost:5000 status=+I
    ProxyPreserveHost On

    Header always set Access-Control-Allow-Origin "*"
# netstat -anp | grep 5000 | grep LISTEN
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      2159/python3

# cat /proc/2159/cmdline
/usr/bin/python3 /usr/lib/perfsonar/elmond/app.py

https://github.com/perfsonar/elmond
elmond/elmond/perfsonar-elmond/elmond/app.py
elmond/elmond/perfsonar-elmond/elmond/data.py
⭐ Only opensearch used


https://ps-daej.kreonet2.net/perfsonar-graphs/
?source=134.75.207.2
&dest=138.44.228.7
&url=https://ps-daej.kreonet2.net/esmond/perfsonar/archive/
&timeframe=1d#start=1693273543&end=1693878343

A=https://ps-daej.kreonet2.net/esmond/perfsonar/archive/
B=b01012273dd3c9c66e8bbfc6b095dde515c57cbb11afa76a4015dca4bfee7da2
C=e632505ff9396efd34f63927cace884b5cb14cc4b5bf61d1b431c182a56fca0e

curl 'A/?source=134.75.207.2&destination=138.44.228.7'
curl 'A/B/failures/base/0                      ?time-start=1693273543&time-end=1693878343'
curl 'A/B/packet-count-sent/aggregations/86400 ?time-start=1693273543&time-end=1693878343'
curl 'A/B/histogram-owdelay/statistics/86400   ?time-start=1693273543&time-end=1693878343'
curl 'A/B/packet-loss-rate/aggregations/86400  ?time-start=1693273543&time-end=1693878343'
curl 'A/B/packet-count-lost/aggregations/86400 ?time-start=1693273543&time-end=1693878343'
curl 'A/C/throughput/base/0                    ?time-start=1693273543&time-end=1693878343'
# du -h /var/lib/pgsql
2.9G	/var/lib/pgsql

# du -h /var/lib/opensearch
15G	/var/lib/opensearch
# su postgres
bash-4.2$ psql
psql (10.17)

postgres=# \l
                                 List of databases
    Name    |   Owner    | Encoding  | Collate | Ctype |     Access privileges
------------+------------+-----------+---------+-------+---------------------------
 esmond     | postgres   | SQL_ASCII | C       | C     | =Tc/postgres             +
            |            |           |         |       | postgres=CTc/postgres    +
            |            |           |         |       | esmond=CTc/postgres
 pscheduler | pscheduler | SQL_ASCII | C       | C     | =Tc/pscheduler           +
            |            |           |         |       | pscheduler=CTc/pscheduler

postgres=# \c esmond
You are now connected to database "esmond" as user "postgres".

esmond=# select
esmond-#   table_name,
esmond-#   pg_size_pretty(pg_relation_size(quote_ident(table_name))),
esmond-#   pg_relation_size(quote_ident(table_name))
esmond-# from information_schema.tables
esmond-# where table_schema = 'public';
         table_name         | pg_size_pretty | pg_relation_size
----------------------------+----------------+------------------
 django_migrations          | 8192 bytes     |             8192
 ps_metadata_parameters     | 8192 bytes     |             8192
 ps_networkelement_subject  | 0 bytes        |                0
 django_content_type        | 8192 bytes     |             8192
 auth_group_permissions     | 0 bytes        |                0
 auth_group                 | 0 bytes        |                0
 auth_user                  | 8192 bytes     |             8192
 auth_user_groups           | 0 bytes        |                0
 auth_permission            | 8192 bytes     |             8192
 auth_user_user_permissions | 0 bytes        |                0
 django_admin_log           | 0 bytes        |                0
 ps_p2p_subject             | 8192 bytes     |             8192
 useripaddress              | 0 bytes        |                0
 ps_metadata                | 8192 bytes     |             8192
 ps_event_types             | 32 kB          |            32768
 authtoken_token            | 8192 bytes     |             8192
 django_session             | 0 bytes        |                0
(17 rows)

esmond=# \c pscheduler
You are now connected to database "pscheduler" as user "postgres".

pscheduler=# select
pscheduler-#   table_name,
pscheduler-#   pg_size_pretty(pg_relation_size(quote_ident(table_name))),
pscheduler-#   pg_relation_size(quote_ident(table_name))
pscheduler-# from information_schema.tables
pscheduler-# where table_schema = 'public';
        table_name         | pg_size_pretty | pg_relation_size
---------------------------+----------------+------------------
 scheduling_class          | 8192 bytes     |             8192
 archive_default           | 16 kB          |            16384
 tool_test                 | 8192 bytes     |             8192
 table_version             | 8192 bytes     |             8192
 heartbeat                 | 528 kB         |           540672
 auth_key_type             | 8192 bytes     |             8192
 auth_key                  | 0 bytes        |                0
 control                   | 8192 bytes     |             8192
 queries                   | 0 bytes        |                0
 heartbeat_full            | 0 bytes        |                0
 archiving_eligible        | 0 bytes        |                0
 schedule                  | 0 bytes        |                0
 archiver_test             | 0 bytes        |                0
 heartbeat_json            | 0 bytes        |                0
 http_queue                | 48 kB          |            49152
 test                      | 440 kB         |           450560
 tool                      | 696 kB         |           712704
 archiver_summary          | 0 bytes        |                0
 context                   | 40 kB          |            40960
 run_conflictable          | 0 bytes        |                0
 run_status                | 0 bytes        |                0
 run_status_short          | 0 bytes        |                0
 schedule_upcoming         | 0 bytes        |                0
 schedule_runs_to_schedule | 0 bytes        |                0
 schedule_overlap          | 0 bytes        |                0
 run_state                 | 8192 bytes     |             8192
 task                      | 7552 kB        |          7733248
 configurables             | 8192 bytes     |             8192
 run_latest                | 136 kB         |           139264
 archiver                  | 216 kB         |           221184
 run                       | 388 MB         |        406921216
 archiving                 | 575 MB         |        602931200
(32 rows)  

https://stackoverflow.com/questions/21738408/postgresql-list-and-order-tables-by-size

  • 레이블 없음