【Docker】”又挂了!”对容器的生存状态管理与安全

“又死了!” 管理容器的生命与安全

rancher-docker.png

RancherOSで本格的なサーバーを構築で少し触ってみたのでメモ

経緯的背景或过程

    • 最近dockerが人気であるが、死活管理をしっかりしてないと ”コンテナが死んでた!!” というケースはよくある

 

    • “slack”とかに「死んだぜぇ!」っと通知が来ればすぐに対応できそうだし、かっこいい

 

    今のdockerサーバーの状態がカッコよくグラフで出ると、かっこいい

容器的生命周期管理

可以帮助进行严格管理的图书馆

    • DATADOG(おすすめ)

 

    Prometheus

Datadog 数字狗

community-datadog.png
    • DatadogとはITシステムのモニタリングクラウドサービスです。少し作業を行うだけでご自身のITシステムをモニタリングすることができます。

 

    これを見て惚れました Datadogの本当の魅力とは

马上试试导入

    • 無料版と有料版があるが、今回は無料版を使う

 

    • 公式DATADOGでアカウントを作成

 

    add hostの画面で「Docker」とあるがAPIKeyのみをコピーしておく
Screen Shot 2016-06-25 at 10.33.11.png
如果是农场主的情况下
    rancherの管理画面から「CATALOG」->「DATADOG」を選択
Screen Shot 2016-06-25 at 10.25.02.png
    • APIKeyの入力

 

    「Launch」すれば終了!あら、かんたん。
○普通的Docker情况下(docker-compose)
    docker-compose.yml
datadog-init:
  labels:
    io.rancher.scheduler.global: 'true'
    io.rancher.container.pull_image: always
    io.rancher.container.start_once: 'true'
  command:
  - /bin/true
  image: janeczku/datadog-rancher-init:latest
  volumes:
  - /opt/rancher
  net: none
datadog-agent:
  environment:
    API_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxx
    DOGSTATSD_ONLY: 'false'
  labels:
    io.rancher.scheduler.global: 'true'
    io.rancher.sidekicks: datadog-init
  command:
  - supervisord
  - -n
  - -c
  - /etc/dd-agent/supervisor.conf
  entrypoint:
  - /opt/rancher/entrypoint.sh
  image: datadog/docker-dd-agent:11.0.570
  volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  - /proc/:/host/proc/:ro
  - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
  volumes_from:
  - datadog-init

将下面的命令进行本地化的中文改写,只需要一种选项:
$ docker-compose up

使用Docker Compose 启动容器。

一旦尝试访问

Screen Shot 2016-06-25 at 10.38.22.png
    このイベントの画面では、コンテナが作られたよーとかのイベントが時系列で表示されるっぽい

安装Docker与Slack的集成。

Screen Shot 2016-06-25 at 10.41.09.png

我会检查一下仪表盘是否添加了Docker。

Screen Shot 2016-06-25 at 10.43.47.png

看一下Docker的图表

Screen Shot 2016-06-25 at 10.44.51.png
    すんげぇきれい!!!!

设置当”本题”容器停止工作时,发送通知至Slack。

在Slack的设置中
    • 左上の設定できそうなメニューから「Apps&integrations」を選択

 

    • 「DATADOG」を検索して「Add Configrations」

 

    「Webhook URL」をコピーしておく
在Datadog的设置中
    先ほどのURLと通知したいチャンネルを入力
Screen Shot 2016-06-25 at 10.49.33.png
    とりあえずOK
设置警报的阈值。
    「Monitors」->「new Monitor」->「Metric」を選択
Screen Shot 2016-06-25 at 10.55.56.png
Screen Shot 2016-06-25 at 10.58.58.png
Screen Shot 2016-06-25 at 11.00.44.png
    これでひとまず、 「死んでるやん!!」 が早めにわかるようになった

普罗米修斯 (Pǔ luó mǐ xiū sī)

community-Prometheus.svg.png
    Prometheus とは 一般的な監視ツールのように、データの収集、数値の表示、グラフの表示、アラートを出す機能があります。それだけでなく、Prometheus は独自のデータモデルを持ち、クエリ言語を使って時系列データの評価やグラフ化を行えます。

我們立即嘗試導入

○如果是牧场主的情况下
    rancherの管理画面から「CATALOG」->「Prometheus」を選択
Screen Shot 2016-06-25 at 09.55.22.png
    「Launch」すれば終了!あら、かんたん。
○一般的的Docker情况(docker-compose)
    docker-compose.yml
graf-db:
  command:
  - cat
  tty: true
  image: infinityworks/graf-db:08
  links:
  - prometheus:prometheus
  volumes:
  - /var/lib/grafana/
prometheus-rancher-exporter:
  labels:
    io.rancher.container.create_agent: 'true'
    io.rancher.container.agent.role: environment
  tty: true
  image: infinityworks/prometheus-rancher-exporter:04
prometheus:
  ports:
  - 9090:9090/tcp
  labels:
    io.rancher.sidekicks: prom-conf
  command:
  - -alertmanager.url=http://alertmanager:9093
  - -config.file=/etc/prom-conf/prometheus.yml
  - -storage.local.path=/prometheus
  - -web.console.libraries=/etc/prometheus/console_libraries
  - -web.console.templates=/etc/prometheus/consoles
  tty: true
  image: prom/prometheus:0.18.0
  links:
  - ranch-eye:ranch-eye
  - node-exporter:node-exporter
  volumes_from:
  - prom-conf
grafana:
  ports:
  - 3000:3000/tcp
  labels:
    io.rancher.sidekicks: graf-db
  tty: true
  image: grafana/grafana:3.0.1
  links:
  - prometheus:prometheus
  volumes_from:
  - graf-db
prom-conf:
  tty: true
  image: infinityworks/prom-conf:11
  links:
  - ranch-eye:ranch-eye
  - node-exporter:node-exporter
  volumes:
  - /etc/prom-conf/
influxdb:
  ports:
  - 2003:2003/tcp
  - 8083:8083/tcp
  - 8086:8086/tcp
  - 8090:8090/tcp
  environment:
    GRAPHITE_BINDING: :2003
    GRAPHITE_DB: rancher
    PRE_CREATE_DB: grafana;prometheus;rancher
  image: tutum/influxdb:0.10
ranch-eye:
  ports:
  - 9104:9104/tcp
  labels:
    io.rancher.scheduler.global: 'true'
    io.rancher.container.dns: 'true'
  tty: true
  image: infinityworks/ranch-eye:03
  stdin_open: true
  net: host
node-exporter:
  labels:
    io.rancher.scheduler.global: 'true'
  tty: true
  image: prom/node-exporter:latest
  stdin_open: true

请运行docker-compose up

我尝试访问一下(3000端口)。

    • 外部には公開したくないので.ssh/configにlocalFowardして3000番を転送する

 

    container statusはこんな感じ
Screen Shot 2016-06-25 at 10.03.46.png
    Host Statusはなんかかっこいい!
Screen Shot 2016-06-25 at 10.07.16.png

当特定容器停止时发送通知。

    • なんとなくぐぐっただけだけど、通知はどうにかすればできるっぽいけど、面倒くさそう

 

    • Docker で Sensu + Graphite + Grafana 環境構築

 

    • http://docs.grafana.org/tutorials/hubot_howto/

 

    今回は見送ります

容器的安全性

community-rancher-bench-security.png

提醒容器的安全性

    • rancher-bench-security

 

    docker-bench-security

试试导入

○养牛人的人。

    • rancher-bench-security

 

    「CATALOG」->「rancher-bench-security」
Screen Shot 2016-06-25 at 11.11.02.png
    「Launch」でおわり

○Docker的员工

    docker-bench-security
docker run -it --net host --pid host --cap-add audit_control \
    -v /var/lib:/var/lib \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/lib/systemd:/usr/lib/systemd \
    -v /etc:/etc --label docker_bench_security \
    docker/docker-bench-security

我试着访问一下

    これも外部には公開したくないので、bench_securityコンテナの80ポートを適当に8888ポートにしてローカルフォワードしてwebからアクセスする
benchmark_log.png
    • こんな感じで出る(githubのサンプル)

 

    このwarmを修正しとかんといかんみたいやね

总结

    • こんなわけで、なんとなく死活管理とセキュリティーについては大丈夫かなぁと

 

    • 前々から気になってた”Vuls”は、RancherOSが対応してないらしくて諦めましたが、対応したら使いたい

 

    その他にもRancherで使えるライブラリはたくさんあるし、今も増えているのでたくさん使っていきたい
广告
将在 10 秒后关闭
bannerAds