Slide 1

Slide 1 text

໦ଜ޿ւ(.01FQBCP *OD ϗεςΟϯάࣄۀ෦5FDI.5( TFOENBJMͷϥούʔΛ (PݴޠͰ࡞ͬͯΈͨ࿩

Slide 2

Slide 2 text

ΤϯδχΞ ໦ଜ޿ւ!LJNSPNJ ϗεςΟϯάࣄۀ෦ϜʔϜʔυϝΠϯνʔϜ

Slide 3

Slide 3 text

ຖि༵͓ۚனͷ (P-VODI

Slide 4

Slide 4 text

ͳΜ͔ॻ͍ͯΈ͍ͨͳ͊

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ॻ͍ͯΈͨʂ

Slide 7

Slide 7 text

TFOENBJMMPHHFS IUUQTHJUIVCDPNLJNSPNJTFOENBJMMPHHFS ͍ͨͩ·W

Slide 8

Slide 8 text

TFOENBJMMPHHFSʁ ϜʔϜʔυϝΠϯ 1)1ɾ3VCZ "QQMJDBUJPO TFOENBJM Ϣʔβʔ ɾϢʔβʔొ࿥ ɾυϝΠϯऔಘɺߋ৽ ɾظݶ੾ΕؒۙͷҊ಺ ɹɹɹɹɹɹͳͲͷϝʔϧ

Slide 9

Slide 9 text

TFOENBJMMPHHFSʁ ϜʔϜʔυϝΠϯ 1)1ɾ3VCZ "QQMJDBUJPO TFOENBJMMPHHFS Ϣʔβʔ ɾϢʔβʔొ࿥ ɾυϝΠϯऔಘɺߋ৽ ɾظݶ੾ΕؒۙͷҊ಺ ɹɹɹɹɹɹͳͲͷϝʔϧ TFOENBJM NBJM MPH

Slide 10

Slide 10 text

TFOENBJMMPHHFSʁ ϜʔϜʔυϝΠϯ 1)1ɾ3VCZ "QQMJDBUJPO TFOENBJMMPHHFS Ϣʔβʔ ɾϢʔβʔొ࿥ ɾυϝΠϯऔಘɺߋ৽ ɾظݶ੾ΕؒۙͷҊ಺ ɹɹɹɹɹɹͳͲͷϝʔϧ TFOENBJM NBJM MPH UBJM

Slide 11

Slide 11 text

Ͳ͏͍͍ͷʁ w ސ٬؅ཧ͔Βϝʔϧૹ৴ঢ়گΛӾཡͰ͖Δ ظݶ੾Εલʹϝʔϧ͕͜ͳ͔ͬͨΜͰ͚͢ͲʂʁʹରԠ͠΍͍͢ w ֬ೝ༻ͷϝʔϧΞυϨε΁ͷϝʔϧૹ৴͕ෆཁʹ Ϣʔβʔ΁̍௨ɺ֬ೝ༻ϝʔϧΞυϨε΁̍௨ͷ̎௨ૹ৴͍ͯ͠Δɾɾ

Slide 12

Slide 12 text

Πϯετʔϧ logfile: /var/log/sendmail.log $ wget -O /usr/local/bin/sendmail-logger https:// github.com/kimromi/sendmail-logger/releases/download/ v0.0.2/sendmail-logger_linux_amd64 $ chmod 755 /usr/local/bin/sendmail-logger ઃఆϑΝΠϧFUDTFOENBJMMPHHFSDPOpHZBNM ྫ $FOU04CJU όΠφϦΛ(JUIVCʹஔ͍͍ͯΔͷͰ 04ʹ͋ͬͨ΋ͷΛμ΢ϯϩʔυ͢Δ͚ͩ

Slide 13

Slide 13 text

ઃఆํ๏ 1)1 sendmail_path = /usr/sbin/sendmail -t -i sendmail_path = /usr/local/bin/sendmail-logger QIQJOJ sendmail_path = sendmail-logger # path௨ͬͯΕ͹

Slide 14

Slide 14 text

ઃఆํ๏ 3VCZ"DUJWF.BJMFSPO3BJMT Rails.application.configure do .. config.action_mailer.delivery_method = :sendmail config.action_mailer.sendmail_settings = { location: "/usr/local/bin/sendmail-logger" } end DPOpHFOWJSPONFOUT3"*-4@&/7SC

Slide 15

Slide 15 text

࣮૷͔Β഑෍·ͰͷಓͷΓ w ࣮૷ w ΫϩείϯύΠϧ w όΠφϦ഑෍ ҙ֎ͱ͢ΜͳΓ͍͚ͨΫϚʔ

Slide 16

Slide 16 text

࣮૷ 1.

Slide 17

Slide 17 text

TFOENBJMMPHHFSͰ΍͍ͬͯΔ͜ͱ w ࣮ߦϩάग़ྗ w ඪ४ೖྗಡΈࠐΈ w ZBNMϑΝΠϧಡΈࠐΈ w ϝʔϧϩάϑΝΠϧग़ྗ w TFOENBJMίϚϯυ࣮ߦ

Slide 18

Slide 18 text

࣮ߦϩάग़ྗ w MPH(Pඪ४ͷMPHϥΠϒϥϦ package main import ( "log" "os" ) func init() { f, _ := os.OpenFile("out.log", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) log.SetOutput(f) } func main() { log.Print("loglog") } ¥ 3FBEBOE8SJUF ϑΝΠϧͳ͔ͬͨΒ࡞Δ ຤ඌʹςΩετ௥Ճ

Slide 19

Slide 19 text

ඪ४ೖྗಡΈࠐΈ w CVpP(Pඪ४ͷ*0όοϑΝϦϯά package main import ( "bufio" "fmt" "os" ) func main() { body := "" scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { body += scanner.Text() + "\n" } if err := scanner.Err(); err != nil { fmt.Print(err) } } ෳ਺ߦͷೖྗ͕͋Δͱ͖͸ GPSͰશߦऔಘ͢Δ

Slide 20

Slide 20 text

ZBNMϑΝΠϧಡΈࠐΈ w HPZBNMZBNMZBNMಡΈࠐΈϥΠϒϥϦ IUUQTHJUIVCDPNHPZBNMZBNM package main import ( "fmt" "io/ioutil" yaml "gopkg.in/yaml.v2" ) type Config struct { LogFile string `yaml:"logfile"` } func main() { file, _ := ioutil.ReadFile("/etc/sendmail-logger/config.yaml") conf := Config{} yaml.Unmarshal([]byte(file), &conf) fmt.Print(conf) } ZBNMϑΝΠϧͰͷઃఆ໊Λ TUSVDUͰఆ͓ٛͯ͘͠

Slide 21

Slide 21 text

ϝʔϧϩάϑΝΠϧग़ྗ package main import ( "fmt" "os" ) func main() { file, err := os.OpenFile("mail.log", os.O_WRONLY | os.O_CREATE | os.O_APPEND, 0664) if err != nil { fmt.Print(err) } defer file.Close() file.Write(([]byte)("write")) } w PT(Pඪ४ͷ04ػೳ΁ͷΠϯλʔϑΣʔεύοέʔδ 8SJUF0OMZ EFGFSͰ࣮ߦ׬ྃ࣌ʹ ϑΝΠϧΫϩʔζ͢Δ

Slide 22

Slide 22 text

TFOENBJMίϚϯυ࣮ߦ w PTFYFD(Pඪ४ͷ֎෦ίϚϯυ࣮ߦύοέʔδ package main import ( "fmt" "os/exec" ) func main() { out, err := exec.Command("ls", "-la").Output() if err != nil { fmt.Print(err) } fmt.Print(string(out)) } ίϚϯυ࣮ߦͭͭ͠ ඪ४ग़ྗΛม਺ʹऔΓࠐΉ

Slide 23

Slide 23 text

ΫϩείϯύΠϧ 2.

Slide 24

Slide 24 text

HPY w ΫϩείϯύΠϧ༻ͷύοέʔδ $ go get github.com/mitchellh/gox $ gox Number of parallel builds: 3 --> linux/arm: _/Users/PMAC243S/repos/github.com/kimromi/sendmail-logger --> darwin/386: _/Users/PMAC243S/repos/github.com/kimromi/sendmail-logger --> linux/386: _/Users/PMAC243S/repos/github.com/kimromi/sendmail-logger --> netbsd/arm: _/Users/PMAC243S/repos/github.com/kimromi/sendmail-logger ɾɾɾ IUUQTHJUIVCDPNNJUDIFMMIHPY ίϚϯυൃͰ ֤04༻ͷόΠφϦΛ࡞੒ HPHFUͰΠϯετʔϧ

Slide 25

Slide 25 text

όΠφϦ഑෍ 3.

Slide 26

Slide 26 text

HIS w HJUIVCDPNʹWFSTJPOUBH෇͖ͰϦϦʔε IUUQTHJUIVCDPNUDOLTNHIS $ go get github.com/tcnksm/ghr $ gox -output "pkg/{{.Dir}}_{{.OS}}_{{.Arch}}" $ ghr v0.0.2 pkg/ WFSTJPOUBHΛ෇༩ͯ͠ϦϦʔε όΠφϦμ΢ϯϩʔυͰ͖Δ HPHFUͰΠϯετʔϧ

Slide 27

Slide 27 text

͓ΘΓɻ؆୯ɻ

Slide 28

Slide 28 text

ͳΜ͔ॻ͍ͯΈ·͠ΐʂ ๻͕Ͱ͖͔ͨΒΈΜͳͰ͖Δ

Slide 29

Slide 29 text

ࠓޙ w ςετॻ͍ͯͳ͍ɾɾɾ w TNUQͷରԠͱ͔ w qVFOUEͱ࿈ܞͯ͠5SFBTVSF%BUB΁ʢݕূதʣ w ސ٬؅ཧ͔Βϝʔϧ಺༰ΛݟΕΔΑ͏ʹ w ֬ೝ༻ϝʔϧΞυϨε΁ͷૹ৴Λ๾໓