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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
AWS Network Firewall Proxyを触ってみた
nagisa53
1
230
プロポーザルに込める段取り八分
shoheimitani
1
280
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
590
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
220
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
560
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
450
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.1k
今日から始めるAmazon Bedrock AgentCore
har1101
4
410
Webhook best practices for rock solid and resilient deployments
glaforge
1
290
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
AI駆動開発を事業のコアに置く
tasukuonizawa
1
200
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
140
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
140
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
120
How STYLIGHT went responsive
nonsquared
100
6k
Code Reviewing Like a Champion
maltzj
527
40k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
53
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
180
Visualization
eitanlees
150
17k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
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