start.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/env bash
  2. #
  3. # (Re)starts the local metrics
  4. #
  5. set -e
  6. cd "$(dirname "$0")"
  7. # Stop if already running
  8. ./stop.sh
  9. randomPassword() {
  10. declare p=
  11. for _ in $(seq 0 16); do
  12. p+="$((RANDOM % 10))"
  13. done
  14. echo $p
  15. }
  16. mkdir -p lib
  17. if [[ ! -f lib/config.sh ]]; then
  18. cat > lib/config.sh <<EOF
  19. INFLUXDB_ADMIN_USER=admin
  20. INFLUXDB_ADMIN_PASSWORD=$(randomPassword)
  21. INFLUXDB_WRITE_USER=write
  22. INFLUXDB_WRITE_PASSWORD=$(randomPassword)
  23. INFLUXDB_READ_USER=read
  24. INFLUXDB_READ_PASSWORD=read
  25. EOF
  26. fi
  27. # shellcheck source=/dev/null
  28. source lib/config.sh
  29. if [[ ! -f lib/grafana-provisioning ]]; then
  30. cp -va grafana-provisioning lib
  31. ./adjust-dashboard-for-channel.py \
  32. lib/grafana-provisioning/dashboards/cluster-monitor.json local
  33. mkdir -p lib/grafana-provisioning/datasources
  34. cat > lib/grafana-provisioning/datasources/datasource.yml <<EOF
  35. apiVersion: 1
  36. datasources:
  37. - name: local-influxdb
  38. type: influxdb
  39. isDefault: true
  40. access: proxy
  41. database: testnet
  42. user: $INFLUXDB_READ_USER
  43. password: $INFLUXDB_READ_PASSWORD
  44. url: http://influxdb:8086
  45. editable: true
  46. EOF
  47. fi
  48. set -x
  49. : "${INFLUXDB_IMAGE:=influxdb:1.7}"
  50. : "${GRAFANA_IMAGE:=solanalabs/grafana:stable}"
  51. : "${GRAFANA_IMAGE:=grafana/grafana:5.2.3}"
  52. docker pull $INFLUXDB_IMAGE
  53. docker pull $GRAFANA_IMAGE
  54. docker network remove influxdb || true
  55. docker network create influxdb
  56. cat > "$PWD"/lib/influx-env-file <<EOF
  57. INFLUXDB_ADMIN_USER=$INFLUXDB_ADMIN_USER
  58. INFLUXDB_ADMIN_PASSWORD=$INFLUXDB_ADMIN_PASSWORD
  59. INFLUXDB_READ_USER=$INFLUXDB_READ_USER
  60. INFLUXDB_READ_PASSWORD=$INFLUXDB_READ_PASSWORD
  61. INFLUXDB_WRITE_USER=$INFLUXDB_WRITE_USER
  62. INFLUXDB_WRITE_PASSWORD=$INFLUXDB_WRITE_PASSWORD
  63. INFLUXDB_DB=testnet
  64. EOF
  65. mkdir -p lib/influxdb
  66. docker run \
  67. --detach \
  68. --name=influxdb \
  69. --net=influxdb \
  70. --publish 8086:8086 \
  71. --user "$(id -u):$(id -g)" \
  72. --volume "$PWD"/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
  73. --volume "$PWD"/lib/influxdb:/var/lib/influxdb \
  74. --env-file "$PWD"/lib/influx-env-file \
  75. $INFLUXDB_IMAGE -config /etc/influxdb/influxdb.conf /init-influxdb.sh
  76. cat > "$PWD"/lib/grafana-env-file <<EOF
  77. GF_PATHS_CONFIG=/grafana.ini
  78. GF_SECURITY_ADMIN_USER=$INFLUXDB_ADMIN_USER
  79. GF_SECURITY_ADMIN_PASSWORD=$INFLUXDB_ADMIN_PASSWORD
  80. EOF
  81. mkdir -p lib/grafana
  82. docker run \
  83. --detach \
  84. --name=grafana \
  85. --net=influxdb \
  86. --publish 3000:3000 \
  87. --user "$(id -u):$(id -g)" \
  88. --env-file "$PWD"/lib/grafana-env-file \
  89. --volume "$PWD"/grafana.ini:/grafana.ini:ro \
  90. --volume "$PWD"/lib/grafana:/var/lib/grafana \
  91. --volume "$PWD"/lib/grafana-provisioning/:/etc/grafana/provisioning:ro \
  92. $GRAFANA_IMAGE
  93. sleep 5
  94. ./status.sh