Last active
March 6, 2019 00:10
-
-
Save metalmatze/c69561a76c57aa867abc6dbc03b58a62 to your computer and use it in GitHub Desktop.
kube-prometheus-demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.demo-last-step |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Only requirement upfront is a running Kubernetes cluster. | |
# I am using https://github.com/kubernetes-sigs/kind to start a local cluster inside of Docker. | |
# Make sure to have the correct KUBECONFIG: | |
# export KUBECONFIG="$(kind get kubeconfig-path --name="kind")" | |
DEMO=`pwd` | |
# Setting up our dependencies in the cluster | |
. setup.sh --source-only | |
# make sure to have this in your $PATH. I actually have it in my $GOPATH | |
. ~/src/github.com/bwplotka/demo-nav/demo-nav.sh | |
clear | |
# Show the current setup | |
r "kubectl version --short" | |
r "kubectl get namespaces" | |
r "kubectl get pods --all-namespaces" | |
# kube-prometheus | |
r "kube-prometheus" "clear && figlet -w 132 kube-prometheus" | |
r "cd ~/src/github.com/coreos/prometheus-operator && pwd && ls -lh" | |
r "tree -L 1 contrib/" | |
r "cd contrib/kube-prometheus && pwd && ls -lh" | |
# Deploy the default stack to Kubernetes | |
r "ls ./manifests" | |
r "kubectl apply -f ./manifests" | |
r "watch kubectl get pods --all-namespaces" | |
r "# Let's check Prometheus, Alertmanager and Grafana" | |
# Setting up an application | |
r "User Apps" "clear && figlet -w 132 User App" | |
r "cat sample-app/manifests/deployment.yaml" "bat ~/src/github.com/mxinden/self-service-monitoring-workshop/sample-app/manifests/deployment.yaml" | |
r "cat sample-app/manifests/service.yaml" "bat ~/src/github.com/mxinden/self-service-monitoring-workshop/sample-app/manifests/service.yaml" | |
r "cat sample-app/manifests/service-monitor.yaml" "bat ~/src/github.com/mxinden/self-service-monitoring-workshop/sample-app/manifests/service-monitor.yaml" | |
r "cat sample-app/manifests/prometheus-rule.yaml" "bat ~/src/github.com/mxinden/self-service-monitoring-workshop/sample-app/manifests/prometheus-rule.yaml" | |
r "kubectl -n default apply -f sample-app/manifests/" "kubectl -n default apply -f ~/src/github.com/mxinden/self-service-monitoring-workshop/sample-app/manifests" | |
r "watch kubectl -n default get pods" | |
r "open http://localhost:9090" "xdg-open 'http://localhost:9090/graph?g0.range_input=1h&g0.expr=container_cpu_usage_seconds_total%7Bcontainer_name%3D%22sample-app%22%7D&g0.tab=0' &> /dev/null" | |
r "open http://localhost:9090" "xdg-open 'http://localhost:9090/graph?g0.range_input=1h&g0.expr=container_memory_usage_bytes%7Bcontainer_name%3D%22sample-app%22%7D&g0.tab=0' &> /dev/null" | |
# Thanos | |
r "Thanos" "clear && figlet -w 132 Thanos" | |
r "cd ~/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus" | |
r "cp example-thanos.jsonnet contrib/kube-prometheus/example.jsonnet" "cp ${DEMO}/example-thanos.jsonnet ~/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus/example.jsonnet" | |
r "git diff example.jsonnet" | |
r "Generate manifests with jsonnet" "cd ~/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus && bash build.sh && echo done" | |
r "git status manifests/" | |
r "git diff manifests/prometheus-prometheus.yaml" | |
r "bat ${DEMO}/thanos-config.yaml" | |
r "kubectl -n monitoring create secret generic thanos-objstore-config --from-file=thanos.yaml=${DEMO}/thanos-config.yaml" | |
r "kubectl apply -f ./manifests" | |
r "watch kubectl get pods --all-namespaces" | |
navigate true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local kp = | |
(import 'kube-prometheus/kube-prometheus.libsonnet') + | |
(import 'kube-prometheus/kube-prometheus-thanos.libsonnet') + { | |
_config+:: { | |
namespace: 'monitoring', | |
}, | |
} + { | |
prometheus+: { | |
prometheus+: { | |
spec+: { | |
evaluationInterval: '1s', | |
scrapeInterval: '1s', | |
replicas: 1, | |
ruleNamespaceSelector: {}, | |
}, | |
}, | |
}, | |
}; | |
{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + | |
{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + | |
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + | |
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + | |
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + | |
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + | |
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + | |
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local kp = | |
(import 'kube-prometheus/kube-prometheus.libsonnet') + { | |
_config+:: { | |
namespace: 'monitoring', | |
}, | |
} + { | |
prometheus+: { | |
prometheus+: { | |
spec+: { | |
evaluationInterval: '1s', | |
scrapeInterval: '1s', | |
replicas: 1, | |
ruleNamespaceSelector: {}, | |
}, | |
}, | |
}, | |
}; | |
{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + | |
{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + | |
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + | |
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + | |
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + | |
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + | |
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + | |
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: extensions/v1beta1 | |
kind: Deployment | |
metadata: | |
name: minio | |
namespace: minio | |
spec: | |
strategy: | |
type: Recreate | |
template: | |
metadata: | |
labels: | |
app: minio | |
spec: | |
containers: | |
- name: minio | |
image: minio/minio | |
args: | |
- server | |
- /storage | |
env: | |
- name: MINIO_ACCESS_KEY | |
value: "minio" | |
- name: MINIO_SECRET_KEY | |
value: "minio123" | |
ports: | |
- containerPort: 9000 | |
--- | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: minio | |
namespace: minio | |
spec: | |
type: ClusterIP | |
ports: | |
- port: 9000 | |
targetPort: 9000 | |
protocol: TCP | |
selector: | |
app: minio | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
DEMO=$(pwd) | |
cp example.jsonnet ~/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus/example.jsonnet | |
cd ~/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus | |
bash build.sh | |
kubectl create namespace minio | |
kubectl apply -f $DEMO/minio.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Clean the Kubernetes cluster from everything done in the demo | |
kubectl delete deployment sample-app | |
kubectl delete service sample-app | |
kubectl delete servicemonitors sample-app | |
kubectl delete prometheusrules sample-app-rules | |
kubectl -n monitoring delete prometheus k8s | |
kubectl -n monitoring delete alertmanager main | |
kubectl -n monitoring delete ds node-exporter | |
kubectl -n monitoring delete deployment grafana | |
kubectl -n monitoring delete deployment kube-state-metrics | |
kubectl -n monitoring delete deployment prometheus-adapter | |
kubectl -n monitoring delete deployment prometheus-operator | |
kubectl -n monitoring delete deployment thanos-query | |
kubectl -n monitoring delete statefulset thanos-compactor | |
kubectl -n monitoring delete statefulset thanos-store | |
kubectl -n monitoring delete secrets thanos-objstore-config | |
kubectl -n minio delete deployment minio | |
kubectl -n minio delete service minio |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type: s3 | |
config: | |
bucket: thanos | |
endpoint: minio.minio.svc.cluster.local:9090 | |
access_key: minio | |
secret_key: minio123 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment