前回のブログより、CoreOSではパッケージマネージャー(yum,apt-get)がないので、
直接mackerel-agentをバイナリファイルからインストールするしかありません。
そして今回CoreOSでもmackerel-agent-pluginsを使えるようにしたいと思い!
2年ほど放置していたのでTRYしてみました。(忘れてた…)特にdockerのプロセス監視とか。
■CoreOS で Mackerel のプラグインを docker からビルドして使う
https://qiita.com/tily/items/c20fe93323b56b9c699f
とりあえず私のブログをリンクしてくれた@tillyさんのを参考にしてみました。
とりあえずcheck-procsとmackerel-agent-pluginsをdockerでソースからビルドしたもの動かす感じですな。
■build docker mackerel
・make Dockerfile.mackerel_plugins
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# mkdir ~/Dockerfile # cat Dockerfile.mackerel_plugins FROM golang RUN echo '#!/bin/bash \n\ mkdir -p src/github.com/mackerelio/ \n\ git clone https://github.com/mackerelio/go-check-plugins.git /go/src/github.com/mackerelio/go-check-plugins \n\ git clone https://github.com/mackerelio/mackerel-agent-plugins.git /go/src/github.com/mackerelio/mackerel-agent-plugins \n\ cd /go/src/github.com/mackerelio/go-check-plugins/check-procs && go get \n\ cd /go/src/github.com/mackerelio/mackerel-agent-plugins/mackerel-plugin-linux && go get \n\ go install github.com/mackerelio/go-check-plugins/check-procs \n\ go install github.com/mackerelio/mackerel-agent-plugins/mackerel-plugin-linux \n'\ >> build.sh && chmod +x build.sh CMD ./build.sh |
・build Dockerfile.mackerel_plugins
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# docker build -f Dockerfile.mackerel_plugins -t mackerel_plugins . Sending build context to Docker daemon 2.56 kB Step 1 : FROM golang latest: Pulling from library/golang cc1a78bfd46b: Pull complete 6861473222a6: Pull complete 7e0b9c3b5ae0: Pull complete 3ec98735f56f: Pull complete 32ecd1fcfe1a: Pull complete 9889d58a42e5: Pull complete 337bad6698be: Pull complete Digest: sha256:2ffa2f093d20c46e86435626f11bf163797400cf8f7cf14ecdc6403f1930045c Status: Downloaded newer image for golang:latest ---> 6b369f7eed80 Step 2 : RUN echo '#!/bin/bash \n mkdir -p src/github.com/mackerelio/ \n git clone https://github.com/mackerelio/go-check-plugins.git /go/src/github.com/mackerelio/go-check-plugins \n git clone https://github.com/mackerelio/mackerel-agent-plugins.git /go/src/github.com/mackerelio/mackerel-agent-plugins \n cd /go/src/github.com/mackerelio/go-check-plugins/check-procs && go get \n cd /go/src/github.com/mackerelio/mackerel-agent-plugins/mackerel-plugin-linux && go get \n go install github.com/mackerelio/go-check-plugins/check-procs \n go install github.com/mackerelio/mackerel-agent-plugins/mackerel-plugin-linux \n'>> build.sh && chmod +x build.sh ---> Running in 5bce9b9e37da ---> 92b8d6b0cdf3 Removing intermediate container 5bce9b9e37da Step 3 : CMD ./build.sh ---> Running in a9fdb043a73a ---> 0d9b2d3fabb2 Removing intermediate container a9fdb043a73a Successfully built 0d9b2d3fabb2 |
・docker run
1 2 3 4 5 6 |
# docker run -v /etc/mackerel-agent/plugins/:/go/bin/ mackerel_plugins Cloning into '/go/src/github.com/mackerelio/go-check-plugins'... Cloning into '/go/src/github.com/mackerelio/mackerel-agent-plugins'... # ls /etc/mackerel-agent/plugins/ check-procs mackerel-plugin-linux |
・test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# /etc/mackerel-agent/plugins/mackerel-plugin-linux linux.ss.ESTAB 58.000000 1527375589 linux.ss.TIME-WAIT 1.000000 1527375589 linux.ss.UNCONN 90.000000 1527375589 linux.ss.LISTEN 17.000000 1527375589 linux.disk.elapsed.iotime_sda 0.000000 1527375589 linux.disk.elapsed.iotime_weighted_sda 0.000000 1527375589 linux.disk.rwtime.tsreading_sda 0.000000 1527375589 linux.disk.rwtime.tswriting_sda 0.000000 1527375589 linux.interrupts.interrupts 25380.000000 1527375589 linux.context_switches.context_switches 29550.000000 1527375589 linux.forks.forks 330.000000 1527375589 linux.users.users 2.000000 1527375589 linux.swap.pswpin 0.000000 1527375589 linux.swap.pswpout 0.000000 1527375589 # /etc/mackerel-agent/plugins/check-procs -p docker Procs OK: Found 17 matching processes; cmd /docker/ |
OK!!
・add mackerel-agent.conf
1 2 3 4 5 6 |
~省略~ [plugin.metrics.linux] command = " /etc/mackerel-agent/plugins/mackerel-plugin-linux" [plugin.checks.check_docker] command = " /etc/mackerel-agent/plugins/check-procs -p docker" |
パスの設定をちゃんとやろうと思ったが…
1 2 3 4 5 6 7 8 |
# which check-procs which: no check-procs in (/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin) # which mackerel-plugin-linux which: no mackerel-plugin-linux in (/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin) # ln -s /bin/check-procs check-procs ln: failed to create symbolic link 'check-procs': File exists |
怒られたので一旦絶対パスで設定してます。後で見よう..
・restart mackerl-agent
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# systemctl restart mackerel-agent # systemctl status mackerel-agent ● mackerel-agent.service - mackerel-agent daemon Loaded: loaded (/etc/systemd/system/mackerel-agent.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2018-05-27 09:38:38 JST; 5s ago Main PID: 31918 (mackerel-agent) Tasks: 9 (limit: 32768) Memory: 7.5M CPU: 96ms CGroup: /system.slice/mackerel-agent.service └─31918 /etc/mackerel-agent/mackerel-agent --conf=/etc/mackerel-agent/mackerel-agent.conf May 27 09:38:38 adachin-docker systemd[1]: Started mackerel-agent daemon. May 27 09:38:38 adachin-docker mackerel-agent[31918]: 2018/05/27 09:38:38 INFO <main> Starting mackerel-agent version:0.37.0, rev:3c11c2c, apibase:https://mackerel.io May 27 09:38:39 adachin-docker mackerel-agent[31918]: 2018/05/27 09:38:39 INFO <command> Start: apibase = https://mackerel.io, hostName = adachin-docker, hostID = 2QGJVAY2amd May 27 09:38:39 adachin-docker mackerel-agent[31918]: 2018/05/27 09:38:39 INFO <metrics.plugin> command "mackerel-plugin-docker -name-format adachin-portainer" outputted to STDERR: "/bin |
・Dashboards
シャーーーー
■まとめ
ランサーズでもがっつり愛用しているMackerelのハンズオン勉強会をはてなCRE @a_know さんにしていただいた?
はじめて触るメンバーもいたので良いキャッチアップの機会にもなって良かった。昔, CloudWatchで頑張ってたあれはなんだったのか。。 pic.twitter.com/5obdrsAHQj— godgarden (@__godgarden__) May 23, 2018
よし、とりあえず二年前の自分に終止符を打った。
そういえばMackerelハンズオン時に、
「コンテナのリソースはどうやればいいんです!?」と@a_know(えーのう)さんに聞いたら、
「mackerel-plugin-dockerを使えばいいんですよ!!」
とのことなので後でやってみます〜〜
0件のコメント