興味ありすぎて検証したいけど後回しになっているものを吐き出してスッキリする場所。
Kubernetes
-
oracle/navarkos
- Federated Clusters間でPodをリバランスする
Pod Disruption Budget
Spent ~2 hours yesterday trying out Kubernetes Pod Disruption Policies and see if they work as advertised.
— Ahmet Alp Balkan (@ahmetb) 2017年12月14日
I hit multiple issues and ended up writing a few pages long friction log instead.
Great in theory, but doesn’t work the way users expect.https://t.co/ddgim1Hq3L
Helm
-
Stages
- helm installはK8Sによるローリングアップデート等基本的なデプロイ戦略にしか対応しない。そうではなく、デプロイに複数ステージを含められないか、という提案。たとえばDBマイグレーションを実行してからデプロイ、のように。
Servish Mesh
- istioとlinkerdのメモリ消費の比較
- スケーラビリティ
Service Proxy
API Gateway
- Kong
- Proxy部分にはnginx利用
- OpenTracing非対応
- issueはある
-
Ambassador
- Proxy部分にはenvoy利用
- OpenTracing非対応
- istioと組み合わせられる
- iostioがinternal service communication、ambassadorがapi gateway
- ambassadorの機能はistioに徐々に移植されていく
Distributed Tracing
- OpenTracing
- Samplingの仕様がまだ定まっていない
- https://github.com/opentracing/specification/issues/11
- jaegerはサンプリングの独自実装あり、Instanaはなし
- grpc-opentracing-java
- GRPC Server、Client用のInterceptorあり
- http server/client部分はistioなどでカバーできるはず
- あとはJava内のメソッドコールなどのトレースをどうやってとるか
- Samplingの仕様がまだ定まっていない
- Tracers
- http://opentracing.io/documentation/pages/supported-tracers
- LightStep
- 各言語のtracerがgrpc対応やauto instrumentation対応してない。あえてこれを選ぶ理由はない
-
sky-walking
- jdbcなどのauto instrumentationとopentracingに対応
- skywalkingとgrpc-opentracing-javaの組み合わせはあり
- またはopentracingを使って自前実装
- jdbcなどのauto instrumentationとopentracingに対応
- Hawkular APM
- jaeger
- 強制・ランダムなどアなどさまざまなサンプリング戦略に対応
-
jaeger-client-node
-
tchannel-node用ハンドラ付き
- tchannelによるRPCをjaeger経由で自動的にトレースできる
- tchannel経由で他サービスに通信するときは自動的にトレースしてくれる
- 他は自前でInstrument
- jaeger-clientはopentracing tracerの実装を提供。他のopentracing tracer同様に使える
- tchannelによるRPCをjaeger経由で自動的にトレースできる
-
tchannel-node用ハンドラ付き
-
Instana
-
instana/ruby-sensor
- 基本的にはInstrumentationは自動
- 自動的にInstrumentできないところに関しては、
- opentracing-ruby準拠なので、他のopentracing-rubyクライアントと同様にも使える
- 独自で非同期処理、別スレッド、ジョブキューに投げたジョブまでトレースできるAPIを用意
-
instana/ruby-sensor
Web Server vs Load Balancer
Interesting article: https://thehftguy.com/2016/10/03/haproxy-vs-nginx-why-you-should-never-use-nginx-for-load-balancing/
- Nginx as web server
- Nginx + nginx-module-vts as load balancer
- https://github.com/vozlt/nginx-module-vts
- nginx-vts-exporter to integrate with prometheus
- HAProxy as load balancer
Observability
- Log, Metric, Trace
- ZipkinのUIにログサービスのテンプレートURLを設置するオプションがある(Nikeで利用事例あり)
Monitoring
Relevant discussions & articles:
- 2015.10.26 database - Usecases: InfluxDB vs. Prometheus - Stack Overflow
- 2017.4.17 Prometheus and InfluxDB: InfluxDB as a Remote Storage Back End
SparkSQL
- https://japan.zdnet.com/article/35076398/
- hadoop - SparkSQL vs Hive on Spark - Difference and pros and cons? - Stack Overflow
Dashboarding
Relevant discussion:
- https://news.ycombinator.com/item?id=13062998
- http://qiita.com/hiro_koba/items/65f3e278d86174210776
- https://www.pervasivecomputing.net/data-analytics/superset-vs-redash-vs-metabase
- Redash – Connect to any data source, easily visualize and share your data | Hacker News
OSSes:
- Redash
- Superset
- Atlasboard
- Cyclotron
BI用にはどのDashboardを選ぶべき?
- Redash
- SparkSQL対応の可能性あり
- 標準的なSQLにとどまらないクエリをサポートできる
https://discuss.redash.io/t/creating-a-new-query-runner-data-source-in-redash/347 - 参考: MemSQL対応 https://github.com/getredash/redash/pull/1746
- 標準的なSQLにとどまらないクエリをサポートできる
- SQLでUIに表示されるfilterやparameterも定義できる
- SparkSQL対応の可能性あり
- Supserset
- SparkSQL
- SQLAlchemyの対応待ちだけど難しそう
- pyhive経由でいけるという情報もあり
- JOINも一応可能
- PostgresのTIMESTAMP WITH TIMEZONEに対応してない
- SparkSQL
ログ蓄積・検索基盤のセルフホスティング
- ELK?
- Grafana + Graylog2?
- Graylog2に蓄積したログでGrafanaのグラフにアノテーションをつけることができる
アラートに対するアクションをダッシュボードから即時実行したい
- Grafanaプラグインでkubectl runパネルつくる?
経営・インフラ・アプリの指標が複数のダッシュボードとデータソースに分散している状況をなんとかしたい
- ログとメトリクスを同じサービスから閲覧、検索したい
- Grafana + Prometheus + Elasticsearch
- Grafana 2.6からはテキストデータもダッシュボードに表示できるようになった https://sematext.com/blog/2015/12/14/using-grafana-with-elasticsearch-for-log-analytics-2/
- Elastic StackでK8Sモニタリング
- Elasticsearchに全Podのログとメトリクスを
- Kibanaでログもメトリクスもまとめて見られる。DatadogとStackdriverLoggingのようにメトリクスとログで異なるサービスを行き来しなくてもよい
- Kibanaでログをストリーミング/tailできる https://github.com/sivasamyk/logtrail
- Kibanaでログの集約結果をグラフ化できる https://www.scaleway.com/docs/how-to-use-the-elk-stack-instant-apps/
- Grafana + Prometheus + Elasticsearch
- ビジネスよりの指標もSQLで分析、ダッシュボード化したい
- Grafanaでログtail?
- Grafanaプラグインにjs+htmlで作ったパネルが含められるなら、それで実装できる?
- deflectorというalias対象にクエリを発行しないと重いらしい
https://groups.io/g/grafana/topic/3040000
分散トレーシング
- loki: Pull型のZipkin https://github.com/weaveworks-experiments/loki
- jaegar: https://github.com/uber/jaeger
こんなOSSをつくりたい
-
lvizのgolang実装
- lviz参考URL: https://blog.codeship.com/logfmt-a-log-format-thats-easy-to-read-and-write/
- 著名な構造化されたログフォーマットであればいいから、logfmtじゃなくてbunyanベースで考えてもよいかもしれない
- 仕様はないけどjsonlogベースで考えてもよいのかも
- lviz参考URL: https://blog.codeship.com/logfmt-a-log-format-thats-easy-to-read-and-write/
- Google Stackdriver Loggingログをlogfmt形式でtailするもの
- これもbunyan形式のほうがいいかもしれない
このOSSを使ってみたい
- 高速ロギングライブラリuber-go/zap
Datadogにこんなのほしい・ないかな
- ioping monitor
- iopingでio latencyがわかるらしいので、それがdatadogから見れるといいなぁ
https://www.cyberciti.biz/faq/linux-freebsd-openbsd-macosx-find-disk-io-latency-with-ioping/
- iopingでio latencyがわかるらしいので、それがdatadogから見れるといいなぁ
MySQL
Fargade
- "起動までの時間はdesired countによらずおおよそ60秒程度"
- https://qiita.com/nabeken/items/69b47e2d346a61d34176
- EKSとの統合が予定されているが、これくらい時間かかるならC5インスタンスを普通に増やしても同じくらいの時間で収まりそう
JVM
- JITコンパイル済みコードのキャッシュのけん
https://stackoverflow.com/questions/1992486/why-doesnt-the-jvm-cache-jit-compiled-code - Java9のAOTはこの文脈でどれくらい効果があるんだろう