Prometheus Pushgateway Installation: Difference between revisions
Jump to navigation
Jump to search
(→Test) |
|||
(15 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
=Kubernetes Installation= | =Kubernetes Installation= | ||
Deploy the pod and associated services, and then configure it as a scraping target by deploying a ServiceMonitor. All descriptors are available in: | |||
{{External|[https://github.com/ovidiuf/playground/tree/master/prometheus/pushgateway playground/prometheus/pushgateway]}} | |||
==Pod and Services== | |||
<syntaxhighlight lang=' | <syntaxhighlight lang='bash'> | ||
namespace=prom | |||
cat <<EOF | kubectl -n ${namespace} apply -f - | |||
apiVersion: v1 | apiVersion: v1 | ||
kind: Pod | kind: Pod | ||
Line 48: | Line 52: | ||
port: 9091 | port: 9091 | ||
targetPort: 9091 | targetPort: 9091 | ||
EOF | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Test the deployment by accessing the console: {{External|http://localhost:9091}} | |||
==ServiceMonitor== | |||
Expose it then as a Prometheus scraping [[Prometheus_Concepts#Target|target]] with a [[Prometheus_Operator_Concepts#ServiceMonitor_Resource|ServiceMonitor]]: | Expose it then as a Prometheus scraping [[Prometheus_Concepts#Target|target]] with a [[Prometheus_Operator_Concepts#ServiceMonitor_Resource|ServiceMonitor]]: | ||
<syntaxhighlight lang=' | <syntaxhighlight lang='bash'> | ||
namespace=prom | |||
cat <<EOF | kubectl apply -n ${namespace} -f - | |||
apiVersion: monitoring.coreos.com/v1 | apiVersion: monitoring.coreos.com/v1 | ||
kind: ServiceMonitor | kind: ServiceMonitor | ||
metadata: | metadata: | ||
name: pushgateway | name: pushgateway | ||
namespace: | namespace: ${namespace} | ||
labels: | labels: | ||
release: prometheus | release: prometheus | ||
Line 62: | Line 73: | ||
- port: 'pushgateway' # must match the label from Service declaration | - port: 'pushgateway' # must match the label from Service declaration | ||
path: /metrics | path: /metrics | ||
interval: | interval: 5s | ||
namespaceSelector: | namespaceSelector: | ||
matchNames: | matchNames: | ||
- | - ${namespace} | ||
selector: | selector: | ||
matchLabels: | matchLabels: | ||
function: 'pushgateway-target' | function: 'pushgateway-target' | ||
EOF | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Ensure that the pushgateway is correctly installed as target by inspecting Prometheus configuration at [[Prometheus_Concepts#Prometheus_Console|console]] (Status → Configuration). Also the console has a "Targets" section where the target should show up: | |||
[[File: SuccessfulPrometheusTarget.png]] | |||
Also see: {{Internal|Configuring_Prometheus_with_Prometheus_Operator#Add_a_Monitoring_Target|Configuring Prometheus with Prometheus Operator | Add a Monitoring Target}} | Also see: {{Internal|Configuring_Prometheus_with_Prometheus_Operator#Add_a_Monitoring_Target|Configuring Prometheus with Prometheus Operator | Add a Monitoring Target}} | ||
=Test= | |||
Publish a synthetic metric to pushgateway with a script similar to [https://github.com/ovidiuf/playground/blob/master/prometheus/pushgateway/publish-metric publish-metric] and ensure the metric can be found in the pushgateway console (http://localhost:9091) and with a Prometheus query. |
Latest revision as of 06:31, 16 October 2020
Internal
Kubernetes Installation
Deploy the pod and associated services, and then configure it as a scraping target by deploying a ServiceMonitor. All descriptors are available in:
Pod and Services
namespace=prom
cat <<EOF | kubectl -n ${namespace} apply -f -
apiVersion: v1
kind: Pod
metadata:
name: 'pushgateway'
labels:
function: 'pushgateway'
spec:
containers:
- name: 'pushgateway'
image: prom/pushgateway
---
apiVersion: v1
kind: Service
metadata:
name: 'pushgateway'
labels:
function: 'pushgateway-target'
spec:
type: 'ClusterIP'
selector:
function: 'pushgateway'
ports:
# 'name' is important, it will be referred by ServiceMonitor configuration
- name: 'pushgateway'
protocol: 'TCP'
port: 9091
targetPort: 9091
---
apiVersion: v1
kind: Service
metadata:
name: 'pushgateway-lb'
spec:
type: 'LoadBalancer'
selector:
function: 'pushgateway'
ports:
- name: 'pushgateway'
protocol: 'TCP'
port: 9091
targetPort: 9091
EOF
Test the deployment by accessing the console:
ServiceMonitor
Expose it then as a Prometheus scraping target with a ServiceMonitor:
namespace=prom
cat <<EOF | kubectl apply -n ${namespace} -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: pushgateway
namespace: ${namespace}
labels:
release: prometheus
spec:
endpoints:
- port: 'pushgateway' # must match the label from Service declaration
path: /metrics
interval: 5s
namespaceSelector:
matchNames:
- ${namespace}
selector:
matchLabels:
function: 'pushgateway-target'
EOF
Ensure that the pushgateway is correctly installed as target by inspecting Prometheus configuration at console (Status → Configuration). Also the console has a "Targets" section where the target should show up:
Also see:
Test
Publish a synthetic metric to pushgateway with a script similar to publish-metric and ensure the metric can be found in the pushgateway console (http://localhost:9091) and with a Prometheus query.