Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stack Elasticsearch - Matinale Zenika
Search
Nicolas Lassalle
December 15, 2016
Technology
0
180
Stack Elasticsearch - Matinale Zenika
Présentation de la stack elastic et du x-pack
Nicolas Lassalle
December 15, 2016
Tweet
Share
More Decks by Nicolas Lassalle
See All by Nicolas Lassalle
Présentation
orphaner
0
180
Other Decks in Technology
See All in Technology
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
150
LLMをツールからプラットフォームへ〜Ai Workforceの戦略〜 #BetAIDay
layerx
PRO
1
990
テストを実行してSorbetのsigを書こう!
sansantech
PRO
1
100
ZOZOTOWNの大規模マーケティングメール配信を支えるアーキテクチャ
zozotech
PRO
0
350
ロールが細分化された組織でSREと協働するインフラエンジニアは何をするか? / SRE Lounge #18
kossykinto
0
220
Claude Codeは仕様駆動の夢を見ない
gotalab555
23
6.6k
10年以上続くプロダクトで今取り組んでること、取り組もうとしていること
sansantech
PRO
2
110
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
150
Eval-Centric AI: Agent 開発におけるベストプラクティスの探求
asei
0
120
生成AIによるソフトウェア開発の収束地点 - Hack Fes 2025
vaaaaanquish
32
13k
バクラクによるコーポレート業務の自動運転 #BetAIDay
layerx
PRO
1
950
Serverless Meetup #21
yoshidashingo
1
130
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Site-Speed That Sticks
csswizardry
10
770
GitHub's CSS Performance
jonrohan
1031
460k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Scaling GitHub
holman
461
140k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
Measuring & Analyzing Core Web Vitals
bluesmoon
8
550
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Transcript
Elastic Stack @EmmanuelDemey @NicolaZnk #elastic
None
None
Elasticsearch • Open source project • Based on Apache Lucene
• Add many features ◦ REST API ◦ High Availability ◦ Many Clients : Java, JavaScript, GO, Haskell, .net, ...
Elasticsearch • Search & Analytics: ◦ Full-text search ◦ Aggregations
◦ Geospatial ◦ Multilingual
Elasticsearch • Use cases: ◦ Single bar search ◦ Catalog
indexation ◦ Localized searches ◦ Logs management
Elasticsearch • Success stories: ◦ Ebay: 800 millions items ◦
Github: repositories code search ◦ Deezer: catalog 40m entries ◦ NYT: 15m articles since 160 years
Elasticsearch • Infrastructure: ◦ Start from 3 nodes, up to
? ◦ Add / remove nodes on the fly ◦ Heterogeneous servers ◦ Easy monitoring & supervision ◦ Modest hardware configuration
PUT http://localhost:9200/index/type/1 { "title": "Olivier Twist" } >> {“acknowledged”: true}
POST http://localhost:9200/index/type/ { "title": "Les Aventures de Monsieur Pickwick" } >> {“acknowledged”: true} GET http://localhost:9200/index/type/1 >> {“title”: “Olivier Twist”} PUT http://localhost:9200/index/type/2 { "title": "Oliver Twist" } >> {“acknowledged”: true} DELETE http://localhost:9200/index/type/2 >> {“acknowledged”: true} Elasticsearch
POST http://localhost:9200/index/type/_search { "query": "match" : { "title" : {
"query" : "OLIVER" } } } } >> { "hits": { "hits": [ { "_index": "index", "_type": "type", "_id": "1", "_score": 0.5, "_source": {"title": "Oliver Twist"} } ], ... } ... } Elasticsearch
POST http://localhost:9200/index/type/_search { "query": { "bool": { "must": [ {
"match": { "title": "Oliver" }}, { "match": { "author": "Dickens" }} ], "filter": [ { "term": { "status": "published" }}, { "range": { "publish_date": { "lte": "1950-01-01" }}} ] } } } Elasticsearch
None
Elasticsearch • Developped in java & jruby • Dynamic data
pipeline: ◦ Multiple input / output ◦ Centralize logs ◦ Parse ◦ Store / forward • Plugin based
Logstash Logs REST API Broker Unix commands Files REST API
Broker Elastic Search Filter 1 Filter 2 Filter 3
Logstash Logs REST API Broker Unix commands Files REST API
Broker Elastic Search Filter 1 Filter 2 Filter 3
Logstash # logstash -f logtash.conf input { } filter {
} output { } { } “message”: “127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"”, file { path => "/var/access*.log” } grok {match => { "message" => "%{COMMONAPACHELOG}" }} “clientip”: “127.0.0.1”, “verb”: “GET”, “request”: “/london”/, “response”: 200, ... if [request] == “/london” { mutate { add_field => { “inEnglish” => true } } “inEnglish”: true mutate { remove_field => [ "message" ] elasticsearch { hosts => [ “localhost:9200” ] }
Logstash
Logstash - Complex architecture Logs / App1 Files REST API
Broker Elastic Search Logstash 2 Kafka Logstash Logs / App2 Logs / App3 Logstash 3 Logstash 1
None
Beats • Stack developped with GO • More efficient (I/O,
…) than JRuby code • Easy to install / configure • TopBeat, PacketBeat, FileBeat, MetricBeat, WinlogBeat, ...
Logstash - Complex architecture Logs / App1 Files REST API
Broker Elastic Search Filebeat 2 Kafka Logstash Logs / App2 Logs / App3 Filebeat 3 Filebeat 1
# logstash -f logtash.conf input { } filter { }
output { } beats { port => 5044 } grok {match => { "message" => "%{COMMONAPACHELOG}" }} if [request] == “/london” { mutate { add_field => { “inEnglish” => true } } mutate { remove_field => [ "message" ] elasticsearch { hosts => [ “localhost:9200” ] } Beats # filebeat -c filebeat-conf.yml filebeat: prospectors: - paths: - "/var/access*.log” output: logstash: hosts: ["localhost:5044"]
Beats
None
Kibana
• Discover / Visualize / Dashboard • Many plugged-in widgets
◦ map, pie, metric, area chart, line chart, table… ◦ Many plugins available • Period selector and auto-refresh behaviors • Authentication Management System • PDF Report : automate & email Kibana
and many more products...
None
None
Security
• Define roles for you ES cluster • Many authentication
levels : ◦ cluster ◦ indices ◦ documents ◦ properties • Authentication Providers : Basic Auth, LDAP, Active Directory, your own provider Security
Security # PUT /_xpack/security/role/clicks_admin { "cluster": [ "monitor" ], "indices":
[ { "names": [ "events-*" ], "privileges": [ "read" ], "query": "{\"match\": {\"category\": \"click\"}}" } ] } # PUT /_xpack/security/user/manu { "password": "password", "roles": [ "clicks_admin"], "full_name": "Emmanuel Demey”, "email": "
[email protected]
”, "metadata": { "event": "Matinale ES" } } # role_mapping.yml monitoring: - "cn=admins,dc=example,dc=com" user: - "cn=John Doe,cn=contractors,dc=example,dc=com" - "cn=users,dc=example,dc=com" - "cn=admins,dc=example,dc=com"
• Encrypted communication between nodes • Encrypted access • IP
Filtering • Audit logging • Add authentication to Kibana and Monitoring Security
Alerting
• Detect changes in your data • Get notified •
Learn from alert history Alerting
PUT _xpack/watcher/watch/log_errors { "trigger" : { schedule" : { "interval"
: "5m" } }, "input" : { "search" : { "request" : { "indices" : "log-events", "body" : { "query" : { "match" : { "status" : "error" } } } } } }, ... ... "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 5 }} }, "actions" : { "email_administrator" : { "email" : { "to" : "
[email protected]
", "subject" : " {{ctx.payload.hits.total}} errors", "body" : "Too many error" } } } } } Alerting
Monitoring
Monitoring
Emmanuel DEMEY Zenika LILLE @EmmanuelDemey Nicolas LASSALLE Zenika LILLE @NicolaZnk