Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSSのissueから学ぶユーザサポートのノウハウ

 OSSのissueから学ぶユーザサポートのノウハウ

以下動画のテキストです。
https://youtu.be/M2lZuNk2tOk

Satoru Takeuchi

June 28, 2020
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. 前置き • この動画におけるユーザサポートの定義 ◦ 自分以外のユーザが検出した問題を解決すること • スキルを磨くのが大変 ◦ 具体的なことを学べる書籍や記事が少ない ◦

    OSSのissueがよい教材になるが、眺めるだけではサポート技術者の意図に気づきにくい • 私が最近解決したOSSのissueを題材にユーザサポートのノウハウを学ぶ ◦ 業務としてのユーザサポートとは異なる点が多々あるが、ここでは割愛 • 対象OSSはRook ◦ 分散ストレージCephのオーケストレータ ▪ Ceph以外もサポートするがここでは割愛 ◦ Kubernetes上で動作する • 必要な情報は動画内で適宜補足 2
  2. 題材とするissue • devicePathFilter doesn't work with /dev/disk/by-partlabel #5504 ◦ https://github.com/rook/rook/issues/5504

    • 前提知識 ◦ 設定ファイルにdevicePathFilterというフィールドがある ◦ このフィールドに記載の正規表現にマッチする名前のデバイスを Cephクラスタに組み込める • 概要 ◦ あるパーティションを Cephクラスタに組み込みたい ◦ パーティションラベルをもとに udevが作ったデバイス名を使ってデバイスを指定したい ▪ /dev/disk/by-partlabel/<パーティションラベル > ▪ 「その6 デバイス名は変わりうる」 ◦ “devicePathFilter: /dev/disk/by-partlabel/CEPH_DATA”と設定ファイルに書いた ◦ RookはパーティションをCephクラスタに組み込んでくれなかった 5
  3. ユーザと認識を合わせる • ユーザと自分の間で「解決すべき問題は何か」という認識を合わせる ◦ 何が真の問題なのか、そもそも本当にそれは問題なのか ◦ ユーザ自身が真の問題に気づいていないこともある ◦ 認識を合わせないまま先に進めると無駄になりがち •

    不明点がなくなるまで確認を繰り返す ◦ 足りていない情報を要求する ▪ https://github.com/rook/rook/issues/5504#issuecomment-630720248 ◦ もらった情報の不明点を明らかにする ▪ https://github.com/rook/rook/issues/5504#issuecomment-636632604 • できれば手元で再現させる ▪ https://github.com/rook/rook/issues/5504#issuecomment-636780880 7
  4. 原因の特定 • ユーザから受け取った情報をもとに当たりをつける ◦ ログを見ると、マッチすべきはずの条件でマッチしていないのが問題だった ▪ https://github.com/rook/rook/issues/5504#issuecomment-636828176 ◦ 当該デバイスを示す名前のリストが作られていなかった ▪

    https://github.com/rook/rook/blob/v1.3.6/pkg/daemon/ceph/osd/daemon.go#L378 • それでもわからなければ別の手段をとる必要がある ◦ ログを仕込んだデバッグ用バイナリの作成、デバッガの利用 ◦ 手元で再現できない場合はユーザ環境でそれらを使ってもらったり、追加情報を要求したり 9