Advertisement
Skylighty

install.sh

Feb 4th, 2022
991
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 9.03 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. :<<'END'
  4. Written on 04.02.2022 by Pawel Gasiewski aka Syklighty for Hawe Telekom sp.z.o.o
  5. Versions of installed software are up to date and working for a date above.
  6. Software is designated for Linux AMD64 architecture.
  7.  ____  _          _ _       _     _
  8. / ___|| | ___   _| (_) __ _| |__ | |_ _   _
  9. \___ \| |/ / | | | | |/ _` | '_ \| __| | | |
  10.  ___) |   <| |_| | | | (_| | | | | |_| |_| |
  11. |____/|_|\_\\__, |_|_|\__, |_| |_|\__|\__, |
  12.             |___/     |___/           |___/
  13. END
  14.  
  15. GREEN='\033[0;32m'
  16. RED='\033[0;31m'
  17. NC='\033[0m'
  18.  
  19. cd /usr/local/bin
  20. apt-get install -y unzip > /dev/null
  21. PS3='Please enter what do you want to install: '
  22. options=("Promtail" "Grafana Server" "Prometheus Server" "Loki Server" "Node Exporter" "Quit")
  23. select opt in "${options[@]}"
  24. do
  25.     case $opt in
  26.         "Promtail")
  27.             echo -e "${GREEN}OK. Installing Promtail and adding system service${NC} \n"
  28.             wget https://github.com/grafana/loki/releases/download/v2.4.2/promtail-linux-amd64.zip
  29.             unzip promtail-linux-amd64.zip
  30.             rm -f promtail-linux-amd64.zip
  31.             tee config-promtail.yaml << EOF > /dev/null
  32.             apiVersion: v1
  33.             kind: ConfigMap
  34.             metadata:
  35.               name: promtail-config
  36.             data:
  37.               promtail.yml: |
  38.                 client:
  39.                   url: 'http://192.168.75.203:3100/loki/api/v1/push'
  40.  
  41.                 scrape_configs:
  42.                 - pipeline_stages:
  43.                   - docker:
  44.                   job_name: kubernetes-pods-name
  45.                   kubernetes_sd_configs:
  46.                   - role: pod
  47.                   relabel_configs:
  48.                   - source_labels:
  49.                     - __meta_kubernetes_pod_label_name
  50.                     target_label: __service__
  51.                   - source_labels:
  52.                     - __meta_kubernetes_pod_node_name
  53.                     target_label: __host__
  54.                   - action: replace
  55.                     replacement: $1
  56.                     separator: /
  57.                     source_labels:
  58.                     - __meta_kubernetes_namespace
  59.                     - __service__
  60.                     target_label: k8s_app
  61.  
  62.                   - action: replace
  63.                     source_labels:
  64.                     - __meta_kubernetes_namespace
  65.                     target_label: k8s_namespace_name
  66.  
  67.                   - action: replace
  68.                     source_labels:
  69.                     - __meta_kubernetes_pod_name
  70.                     target_label: k8s_pod_name
  71.  
  72.                   - action: replace
  73.                     source_labels:
  74.                  
  75.                   - action: replace
  76.                     source_labels:
  77.                     - __meta_kubernetes_pod_container_name
  78.                     target_label: k8s_container_name
  79.  
  80.                   - replacement: /var/log/pods/*$1/*.log
  81.                     separator: /
  82.                     source_labels:
  83.                     - __meta_kubernetes_pod_uid
  84.                     - __meta_kubernetes_pod_container_name
  85.                     target_label: __path__
  86.  
  87.                   - replacement: /var/log/pods/*$1/*.log
  88.                     separator: /
  89.                     source_labels:
  90.                     - __meta_kubernetes_pod_uid
  91.                     - __meta_kubernetes_pod_container_name
  92.                     target_label: __path__
  93.  
  94.                 - pipeline_stages:
  95.                   - docker:
  96.                   job_name: kubernetes-pods-static
  97.                   kubernetes_sd_configs:
  98.                   - role: pod
  99.                   relabel_configs:
  100.                   - action: replace
  101.                     source_labels:
  102.                     - __meta_kubernetes_pod_label_component
  103.                     target_label: __service__
  104.  
  105.                   - source_labels:
  106.                     - __meta_kubernetes_pod_node_name
  107.                     target_label: __host__
  108.  
  109.                   - action: replace
  110.                     replacement: $1
  111.                     separator: /
  112.                     source_labels:
  113.                     - __meta_kubernetes_namespace
  114.                     - __service__
  115.                     target_label: k8s_app
  116.  
  117.                   - action: replace
  118.                     source_labels:
  119.                     - __meta_kubernetes_namespace
  120.                     target_label: k8s_namespace_name
  121.  
  122.                   - action: replace
  123.                     source_labels:
  124.                     - __meta_kubernetes_pod_name
  125.                     target_label: k8s_pod_name
  126.  
  127.                   - action: replace
  128.                     source_labels:
  129.                     - __meta_kubernetes_pod_container_name
  130.                     target_label: k8s_container_name
  131.  
  132.                   - replacement: /var/log/pods/*$1/*.log
  133.                     separator: /
  134.                     source_labels:
  135.                     - __meta_kubernetes_pod_annotation_kubernetes_io_config_mirror
  136.                     - __meta_kubernetes_pod_container_name
  137.                     target_label: __path__
  138.  
  139.                 - pipeline_stages:
  140.                   job_name: k8s_nodes
  141.                   kubernetes_sd_configs:
  142.                   - role: node
  143. EOF
  144.             tee /etc/systemd/system/promtail.service << EOF > /dev/null
  145.             [Unit]
  146.             Description=System service for Promtail - Loki agent for pushing logs
  147.             Wants=network.target
  148.             After=syslog.target network-online.target
  149.              
  150.             [Service]
  151.             Type=simple
  152.             ExecStart=/usr/local/bin/promtail-linux-amd64 -config.file=/usr/local/bin/config-promtail.yaml
  153.             User=root
  154.             Restart=on-failure
  155.             RestartSec=10
  156.             KillMode=process
  157.              
  158.             [Install]
  159.             WantedBy=multi-user.target
  160. EOF
  161.             chmod 640 /etc/systemd/system/promtail.service
  162.             systemctl daemon-reload
  163.             systemctl enable promtail.service
  164.             systemctl start protmail.service
  165.             ;;
  166.  
  167.         "Grafana Server")
  168.             echo -e "${GREEN}OK. Installing Grafana Server and adding system service${NC} \n"
  169.             apt-get install -y adduser libfontconfig1
  170.             wget https://dl.grafana.com/enterprise/release/grafana-enterprise_8.3.4_amd64.deb
  171.             dpkg -i grafana-enterprise_8.3.4_amd64.deb
  172.             rm -f grafana-enterprise_8.3.4_amd64.deb
  173.             systemctl daemon-reload
  174.             systemctl enable grafana-server
  175.             systemctl start grafana-server
  176.             ;;
  177.  
  178.         "Prometheus Server")
  179.             echo -e "${GREEN}OK. Installing Prometheus Server with default config and adding system service${NC} \n"
  180.             wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz
  181.             tar -xvzf prometheus-2.32.1.linux-amd64.tar.gz
  182.             rm -f prometheus-2.32.1.linux-amd64.tar.gz
  183.             tee /etc/systemd/system/prometheus.service << EOF > /dev/null
  184.             [Unit]
  185.             Description=System service for Prometheus Server
  186.             Wants=network.target
  187.             After=syslog.target network-online.target
  188.              
  189.             [Service]
  190.             Type=simple
  191.             ExecStart=/usr/local/bin/prometheus-2.32.1.linux-amd64/prometheus --config.file=/usr/local/bin/prometheus-2.32.1.linux-amd64/prometheus.yml
  192.             User=root
  193.             Restart=on-failure
  194.             RestartSec=10
  195.             KillMode=process
  196.              
  197.             [Install]
  198.             WantedBy=multi-user.target
  199. EOF
  200.             chmod 640 /etc/systemd/system/prometheus.service
  201.             systemctl daemon-reload
  202.             systemctl enable prometheus.service
  203.             systemctl start prometheus.service
  204.             ;;
  205.  
  206.         "Loki Server")
  207.             echo -e "${GREEN}OK. Installing Loki Server with default config and adding systems service ${NC} \n"
  208.             wget https://github.com/grafana/loki/releases/download/v2.4.2/loki-linux-amd64.zip
  209.             unzip loki-linux-amd64.zip
  210.             rm -f loki-linux-amd64.zip
  211.             tee config-loki.yaml << EOF > /dev/null
  212.             auth_enabled: false
  213.              
  214.             server:
  215.               http_listen_port: 3100
  216.               grpc_listen_port: 9096
  217.              
  218.             common:
  219.               path_prefix: /tmp/loki
  220.               storage:
  221.                 filesystem:
  222.                   chunks_directory: /tmp/loki/chunks
  223.                   rules_directory: /tmp/loki/rules
  224.               replication_factor: 1
  225.               ring:
  226.                 instance_addr: 127.0.0.1
  227.                 kvstore:
  228.                   store: inmemory
  229.              
  230.             schema_config:
  231.               configs:
  232.                 - from: 2020-10-24
  233.                   store: boltdb-shipper
  234.                   object_store: filesystem
  235.                   schema: v11
  236.                   index:
  237.                     prefix: index_
  238.                     period: 24h
  239.              
  240.             ruler:
  241.               alertmanager_url: http://localhost:9093
  242. EOF
  243.  
  244.             tee /etc/systemd/system/loki.service << EOF > /dev/null
  245.             [Unit]
  246.             Description=System service for Loki Server
  247.             Wants=network.target
  248.             After=syslog.target network-online.target
  249.              
  250.             [Service]
  251.             Type=simple
  252.             ExecStart=/usr/local/bin/loki-linux-amd64 -config.file=/usr/local/bin/config-loki.yaml
  253.             User=root
  254.             Restart=on-failure
  255.             RestartSec=10
  256.             KillMode=process
  257.              
  258.             [Install]
  259.             WantedBy=multi-user.target
  260. EOF
  261.             chmod 640 /etc/systemd/system/loki.service
  262.             systemctl daemon-reload
  263.             systemctl enable loki.service
  264.             systemctl start loki.service
  265.             ;;
  266.  
  267.         "Node Exporter")
  268.             echo -e "${GREEN}OK. Installing Node Exporter and adding system service${NC} \n"
  269.             wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
  270.             tar -xvzf node_exporter-1.3.1.linux-amd64.tar.gz
  271.             rm -f node_exporter-1.3.1.linux-amd64.tar.gz
  272.             cp node_exporter-1.3.1.linux-amd64/node_exporter .
  273.             rm -r node_exporter-1.3.1.linux-amd64
  274.             tee /etc/systemd/system/node-exporter.service << EOF > /dev/null
  275.             [Unit]
  276.             Description=System service Node Exporter - hardware metrics exporter
  277.             Wants=network.target
  278.             After=syslog.target network-online.target
  279.              
  280.             [Service]
  281.             Type=simple
  282.             ExecStart=/usr/local/bin/node_exporter
  283.             User=root
  284.             Restart=on-failure
  285.             RestartSec=10
  286.             KillMode=process
  287.              
  288.             [Install]
  289.             WantedBy=multi-user.target
  290. EOF
  291.             chmod 640 /etc/systemd/system/node-exporter.service
  292.             systemctl daemon-reload
  293.             systemctl enable node-exporter.service
  294.             systemctl start node-exporter.service
  295.             ;;
  296.  
  297.         "Quit")
  298.             echo -e "${GREEN}User requsted exit${NC} \n"
  299.             exit
  300.             ;;
  301.  
  302.         *) echo -e "${RED}Invalid option $REPLY ${NC} \n";;
  303.     esac
  304. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement