Add Grafana, Prometheus and Jaeger containers.
This commit is contained in:
parent
781b6df8a0
commit
e7adfef132
11 changed files with 377 additions and 0 deletions
78
kubernetes-manifests/grafana.yaml
Normal file
78
kubernetes-manifests/grafana.yaml
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
# Copyright 2018 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: grafana
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: grafana
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: grafana
|
||||||
|
image: gcr.io/microservices-demo-app/grafana
|
||||||
|
ports:
|
||||||
|
- containerPort: 3000
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 3000
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 3000
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/lib/grafana
|
||||||
|
name: grafana-data
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 256Mi
|
||||||
|
cpu: 125m
|
||||||
|
requests:
|
||||||
|
cpu: 70m
|
||||||
|
memory: 200Mi
|
||||||
|
volumes:
|
||||||
|
- name: grafana-data
|
||||||
|
emptyDir: {}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: grafana
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: grafana
|
||||||
|
ports:
|
||||||
|
- name: grafana
|
||||||
|
port: 3000
|
||||||
|
targetPort: 3000
|
||||||
|
# ---
|
||||||
|
# TODO (rghetia): Grafana-external is disabled until password issue is resolved.
|
||||||
|
#
|
||||||
|
# apiVersion: v1
|
||||||
|
# kind: Service
|
||||||
|
# metadata:
|
||||||
|
# name: grafana-external
|
||||||
|
# spec:
|
||||||
|
# type: LoadBalancer
|
||||||
|
# selector:
|
||||||
|
# app: grafana
|
||||||
|
# ports:
|
||||||
|
# - name: http
|
||||||
|
# port: 3000
|
||||||
|
# targetPort: 3000
|
86
kubernetes-manifests/jaeger.yaml
Normal file
86
kubernetes-manifests/jaeger.yaml
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
# Copyright 2018 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: jaeger
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: jaeger
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: jaeger
|
||||||
|
image: gcr.io/microservices-demo-app/jaeger
|
||||||
|
ports:
|
||||||
|
- containerPort: 16686
|
||||||
|
name: frontend
|
||||||
|
protocol: TCP
|
||||||
|
- containerPort: 14268
|
||||||
|
name: thrift-direct
|
||||||
|
protocol: TCP
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 16686
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 16686
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: jaeger-data
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 256Mi
|
||||||
|
cpu: 125m
|
||||||
|
requests:
|
||||||
|
cpu: 70m
|
||||||
|
memory: 200Mi
|
||||||
|
volumes:
|
||||||
|
- name: jaeger-data
|
||||||
|
emptyDir: {}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: jaeger
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: jaeger
|
||||||
|
ports:
|
||||||
|
- name: frontend
|
||||||
|
port: 16686
|
||||||
|
targetPort: 16686
|
||||||
|
protocol: TCP
|
||||||
|
- name: jaeger-thrift-direct
|
||||||
|
port: 14268
|
||||||
|
targetPort: 14268
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: jaeger-external
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
selector:
|
||||||
|
app: jaeger
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 16686
|
||||||
|
targetPort: 16686
|
63
kubernetes-manifests/prometheus.yaml
Normal file
63
kubernetes-manifests/prometheus.yaml
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
# Copyright 2018 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: prometheus
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: prometheus
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: prometheus
|
||||||
|
image: gcr.io/microservices-demo-app/prometheus
|
||||||
|
ports:
|
||||||
|
- containerPort: 9090
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 9090
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 9090
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: prometheus-data
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 256Mi
|
||||||
|
cpu: 125m
|
||||||
|
requests:
|
||||||
|
cpu: 70m
|
||||||
|
memory: 200Mi
|
||||||
|
volumes:
|
||||||
|
- name: prometheus-data
|
||||||
|
emptyDir: {}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: prometheus
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: prometheus
|
||||||
|
ports:
|
||||||
|
- name: prometheus
|
||||||
|
port: 9090
|
||||||
|
targetPort: 9090
|
|
@ -38,6 +38,12 @@ build:
|
||||||
context: src/loadgenerator
|
context: src/loadgenerator
|
||||||
- image: gcr.io/microservices-demo-app/adservice
|
- image: gcr.io/microservices-demo-app/adservice
|
||||||
context: src/adservice
|
context: src/adservice
|
||||||
|
- image: gcr.io/microservices-demo-app/grafana
|
||||||
|
context: src/grafana
|
||||||
|
- image: gcr.io/microservices-demo-app/prometheus
|
||||||
|
context: src/prometheus
|
||||||
|
- image: gcr.io/microservices-demo-app/jaeger
|
||||||
|
context: src/jaeger
|
||||||
tagPolicy:
|
tagPolicy:
|
||||||
gitCommit: {}
|
gitCommit: {}
|
||||||
deploy:
|
deploy:
|
||||||
|
|
9
src/grafana/Dockerfile
Normal file
9
src/grafana/Dockerfile
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# adsservice
|
||||||
|
FROM grafana/grafana
|
||||||
|
RUN grafana-cli plugins install mtanda-histogram-panel
|
||||||
|
|
||||||
|
COPY provisioning /etc/grafana/provisioning
|
||||||
|
|
||||||
|
WORKDIR /
|
||||||
|
EXPOSE 3000
|
||||||
|
ENTRYPOINT ["/run.sh"]
|
61
src/grafana/provisioning/dashboards/hipstershop.json
Normal file
61
src/grafana/provisioning/dashboards/hipstershop.json
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
{
|
||||||
|
"annotations": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"builtIn": 1,
|
||||||
|
"datasource": "-- Grafana --",
|
||||||
|
"enable": true,
|
||||||
|
"hide": true,
|
||||||
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||||||
|
"name": "Annotations & Alerts",
|
||||||
|
"type": "dashboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"editable": true,
|
||||||
|
"gnetId": null,
|
||||||
|
"graphTooltip": 0,
|
||||||
|
"id": null,
|
||||||
|
"links": [],
|
||||||
|
"panels": [],
|
||||||
|
"refresh": false,
|
||||||
|
"schemaVersion": 16,
|
||||||
|
"style": "dark",
|
||||||
|
"tags": [],
|
||||||
|
"templating": {
|
||||||
|
"list": []
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"from": "now-5m",
|
||||||
|
"to": "now"
|
||||||
|
},
|
||||||
|
"timepicker": {
|
||||||
|
"refresh_intervals": [
|
||||||
|
"5s",
|
||||||
|
"10s",
|
||||||
|
"30s",
|
||||||
|
"1m",
|
||||||
|
"5m",
|
||||||
|
"15m",
|
||||||
|
"30m",
|
||||||
|
"1h",
|
||||||
|
"2h",
|
||||||
|
"1d"
|
||||||
|
],
|
||||||
|
"time_options": [
|
||||||
|
"5m",
|
||||||
|
"15m",
|
||||||
|
"1h",
|
||||||
|
"6h",
|
||||||
|
"12h",
|
||||||
|
"24h",
|
||||||
|
"2d",
|
||||||
|
"7d",
|
||||||
|
"30d"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"timezone": "",
|
||||||
|
"title": "Hipstershop Dashboard",
|
||||||
|
"uid": "FPHI7T0mz",
|
||||||
|
"version": 1
|
||||||
|
}
|
11
src/grafana/provisioning/dashboards/prometheus.yml
Normal file
11
src/grafana/provisioning/dashboards/prometheus.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
providers:
|
||||||
|
- name: 'prometheus'
|
||||||
|
orgId: 1
|
||||||
|
folder: ''
|
||||||
|
type: file
|
||||||
|
disableDeletion: false
|
||||||
|
updateIntervalSeconds: 3 #how often Grafana will scan for changed dashboards
|
||||||
|
options:
|
||||||
|
path: /etc/grafana/provisioning/dashboards/
|
18
src/grafana/provisioning/datasources/prometheus.yaml
Normal file
18
src/grafana/provisioning/datasources/prometheus.yaml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# config file version
|
||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
# list of datasources to insert/update depending
|
||||||
|
# what's available in the database
|
||||||
|
datasources:
|
||||||
|
# <string, required> name of the datasource. Required
|
||||||
|
- name: Prometheus
|
||||||
|
# <string, required> datasource type. Required
|
||||||
|
type: prometheus
|
||||||
|
# <string, required> access mode. proxy or direct (Server or Browser in the UI). Required
|
||||||
|
access: proxy
|
||||||
|
# <int> org id. will default to orgId 1 if not specified
|
||||||
|
orgId: 1
|
||||||
|
# <string> url
|
||||||
|
url: http://prometheus:9090
|
||||||
|
# <bool> allow users to edit datasources from the UI.
|
||||||
|
editable: false
|
1
src/jaeger/Dockerfile
Normal file
1
src/jaeger/Dockerfile
Normal file
|
@ -0,0 +1 @@
|
||||||
|
FROM jaegertracing/all-in-one:1.6
|
3
src/prometheus/Dockerfile
Normal file
3
src/prometheus/Dockerfile
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# prometheus
|
||||||
|
FROM prom/prometheus
|
||||||
|
ADD prometheus.yml /etc/prometheus/
|
41
src/prometheus/prometheus.yml
Normal file
41
src/prometheus/prometheus.yml
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# my global config
|
||||||
|
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).
|
||||||
|
|
||||||
|
# Alertmanager configuration
|
||||||
|
alerting:
|
||||||
|
alertmanagers:
|
||||||
|
- static_configs:
|
||||||
|
- targets:
|
||||||
|
# - alertmanager: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=<job_name>` to any timeseries scraped from this config.
|
||||||
|
- job_name: 'prometheus'
|
||||||
|
|
||||||
|
# metrics_path defaults to '/metrics'
|
||||||
|
# scheme defaults to 'http'.
|
||||||
|
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:9090']
|
||||||
|
|
||||||
|
- job_name: 'adservice'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['adservice:9090']
|
||||||
|
|
||||||
|
- job_name: 'frontend'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['frontend:9090']
|
||||||
|
|
||||||
|
- job_name: 'checkoutservice'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['checkoutservice:9090']
|
Loading…
Add table
Add a link
Reference in a new issue