forked from tehasdf/monitoring-talk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
220 lines (186 loc) · 9.23 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js – The HTML Presentation Framework</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/black.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="css/zenburn.css">
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/pdf.css' : 'css/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>Monitoring</h1>
<p>Łukasz Maksymczuk</p>
<p>Codilime</p>
<p class="fragment">Cloudify team</p>
</section>
<section>
<h2>Requirements</h2>
<p class="fragment">Fetching metrics</p>
<p class="fragment">Storage</p>
<p class="fragment">Instrumentation</p>
<p class="fragment">Alerting</p>
<p class="fragment">Graphs</p>
</section>
<section>
<h2>What to use?</h2>
<p class="fragment">Prometheus</p>
<p class="fragment">InfluxData</p>
<p class="fragment">...nagios?</p>
<p class="fragment">Grafana</p>
</section>
<section>
<h2>Monitoring with Prometheus</h2>
<pre><code class="hljs" data-trim>
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
</code></pre>
</section>
<section>
<h2>Monitoring with Prometheus</h2>
<pre><code class="hljs" data-trim>
- job_name: 'node'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9100']
</code></pre>
</section>
<aside class="notes">
<p>
Znaczna część prezentacji to hands-on przykłady/dema. Kolejne slajdy zawierają notatki używane w przykładach. Te notatki nie były widoczne w oryginalnej prezentacji.
</p>
<p>Źródła prezentacji są na <a href="https://github.com/tehasdf/monitoring-talk">https://github.com/tehasdf/monitoring-talk</a>.
Źródło samej prezentacji (i notatki) w .html jest być może mało ciekawe, ale warto spojrzeć na przykładowe/użyte w przykładach configi .yml
</p>
</aside>
<section>
<aside class="notes">
<p>
Uruchamianie prometheusa: <br />
<pre>
docker run --net host prom/prometheus
docker run --net host -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
</pre>
</p>
<p>
UI: http://127.0.0.1:9090/metrics
</p>
<p>
Showcase możliwości query language prometheusa:
<pre>
# po prostu ściągnij wartość
promhttp_metric_handler_requests_total
# wartości z ostatnich 5 minut - range vector
promhttp_metric_handler_requests_total[5m]
# interval - 1m
promhttp_metric_handler_requests_total[5m:1m]
# funkcje - suma, średnia
sum(promhttp_metric_handler_requests_total)
avg(promhttp_metric_handler_requests_total)
# rate - wymaga range vector
rate(promhttp_metric_handler_requests_total[5m])
</pre>
</p>
<p>
Node exporter - metryki hostów
<pre>
docker run --net host prom/node-exporter
docker run --net host prom/node-exporter --web.listen-address=":9101"
# przykładowe query, z filtrem
node_cpu_seconds_total{cpu="1"}[5m]
rate(node_cpu_seconds_total{cpu="0", mode="user"}[5m])
</pre>
</p>
<p>
Uzycie z grafaną - ma wbudowane source dla prometheusa
<pre>
docker run --net host grafana/grafana
</pre>
</p>
<p>
Przykład instrumentacji aplikacji w pythonie
<pre>
docker build -f app.dockerfile . -t app1
docker run --net host -v $(pwd):/app:ro app1 uwsgi --http 0.0.0.0:5000 --wsgi-file app.py --callable app
</pre>
</p>
<p>
Alerty - alertmanager
<pre>
docker run --net host -v $(pwd)/alertmanager.yml:/tmp/alertmanager.yml prom/alertmanager --config.file=/tmp/alertmanager.yml
docker run --net host -v $(pwd)/prometheus6.yml:/etc/prometheus/prometheus.yml prom/prometheus --web.listen-address=:8080 --config.file=/etc/prometheus/prometheus.yml
</pre>
</p>
</aside>
</section>
<section>
<h2>Monitoring with Influx</h2>
<aside class="notes">
<pre>
docker exec -it tik_influxdb_1 influx --precision rfc3339
show field keys from cpu;
show tag keys from cpu;
select cpu, mean(usage_idle) from cpu;
select mean(usage_idle) from cpu group by cpu, time(10m);
docker run --net host influxdb
telegraf --config telegraf.conf
SELECT cumulative_sum(value) FROM "request"
</pre>
</aside>
</section>
<section>
<h2>Influx + Prometheus?</h2>
<aside class="notes">
Połączenie przez telegraf z input/output pluginem, https://github.com/influxdata/telegraf/tree/master/plugins/inputs/prometheus
</aside>
</section>
<section>
<h2>Q&A</h2>
</section>
<section>
<h2>Thanks!</h2>
</section>
</div>
</div>
<script src="js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
showNotes: 'separate-page',
pdfMaxPagesPerSlide: 1,
pdfSeparateFragments: false,
transition: 'slide', // none/fade/slide/convex/concave/zoom
dependencies: [
{ src: 'js/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'js/notes.js', async: true }
]
});
</script>
</body>
</html>