Ident samples
This commit is contained in:
parent
6184c0bf3d
commit
02db9cc19c
47 changed files with 2658 additions and 213 deletions
BIN
tutorial/docker-orchestration/disp/aufs_layers.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/aufs_layers.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
BIN
tutorial/docker-orchestration/disp/base_device.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/base_device.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
BIN
tutorial/docker-orchestration/disp/container-layers.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/container-layers.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
BIN
tutorial/docker-orchestration/disp/image-layers.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/image-layers.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
57
tutorial/docker-orchestration/disp/index.html
Normal file
57
tutorial/docker-orchestration/disp/index.html
Normal file
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Docker layers</title>
|
||||
<style>
|
||||
body { background: white; text-align: center; }
|
||||
table { width: 100%; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Difference image/container</h1>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<img src="image-layers.jpg" alt="Image layers">
|
||||
</td>
|
||||
<td>
|
||||
<img src="container-layers.jpg" alt="Container layers">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<h1>Block Device <em>Union</em></h1>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<img src="base_device.jpg" alt="Base device">
|
||||
</td>
|
||||
<td>
|
||||
<img src="two_dm_container.jpg" alt="Base device">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<h1>Filesystem UnionFS</h1>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<figure>
|
||||
<img src="aufs_layers.jpg" alt="AUFS layers">
|
||||
<figcaption>AUFS</figcaption>
|
||||
</figure>
|
||||
</td>
|
||||
<td>
|
||||
<figure>
|
||||
<img src="overlay_constructs.jpg" alt="AUFS layers">
|
||||
<figcaption>OverlayFS</figcaption>
|
||||
</figure>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<p style="text-align: left">
|
||||
Images from <a href="https://docs.docker.com/">docs.docker.com</a>.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
BIN
tutorial/docker-orchestration/disp/overlay_constructs.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/overlay_constructs.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
BIN
tutorial/docker-orchestration/disp/two_dm_container.jpg
Normal file
BIN
tutorial/docker-orchestration/disp/two_dm_container.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
|
@ -56,7 +56,7 @@ leur nom vous permettra par exemple de relancer une machine plus tard) :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
docker-machine create --driver virtualbox echinoidea
|
||||
docker-machine create --driver virtualbox echinoidea
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -82,13 +82,13 @@ changer de daamon/machine avec une simple commande :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
$ docker container ls
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
||||
$ eval $(docker-machine env echinoidea)
|
||||
$ docker container ls -a
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
||||
a814293b9f45 armbuild/busybox "/bin/sh" 18 seconds ago Up 10 minutes
|
||||
0caddeed5037 armbuild/alpine "/bin/sh" 2 weeks ago Created
|
||||
$ docker container ls
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
||||
$ eval $(docker-machine env echinoidea)
|
||||
$ docker container ls -a
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS
|
||||
a814293b9f45 armbuild/busybox "/bin/sh" 18 seconds ago Up 10 minutes
|
||||
0caddeed5037 armbuild/alpine "/bin/sh" 2 weeks ago Created
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -142,9 +142,9 @@ virtuelle écoute :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
(virt1) 42sh$ netstat -tpln | grep dockerd
|
||||
Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name
|
||||
tcp 0 0 :::2376 :::* 980/dockerd
|
||||
(virt1) 42sh$ netstat -tpln | grep dockerd
|
||||
Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name
|
||||
tcp 0 0 :::2376 :::* 980/dockerd
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -152,9 +152,9 @@ Essayons de renseigner simplement cette configuration à notre client Docker :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
(main) 42sh$ docker -H tcp://$VM1_IP:2376/ info
|
||||
Get http://$VM1_IP:2376/v1.32/info: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
|
||||
* Are you trying to connect to a TLS-enabled daemon without TLS?
|
||||
(main) 42sh$ docker -H tcp://$VM1_IP:2376/ info
|
||||
Get http://$VM1_IP:2376/v1.32/info: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
|
||||
* Are you trying to connect to a TLS-enabled daemon without TLS?
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -174,11 +174,11 @@ nous n'avons qu'à recopier la clef et les certificats en place.
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
(main) 42sh$ mkdir remote/virt1
|
||||
(main) 42sh$ scp "docker@$VM1_IP:.docker/*" remote/virt1
|
||||
ca.pem
|
||||
cert.pem
|
||||
key.pem
|
||||
(main) 42sh$ mkdir remote/virt1
|
||||
(main) 42sh$ scp "docker@$VM1_IP:.docker/*" remote/virt1
|
||||
ca.pem
|
||||
cert.pem
|
||||
key.pem
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -186,7 +186,7 @@ Tentons maintenant de nous connecter au daemon distant en utilisant ces élémen
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
42sh$ DOCKER_CERT_PATH=remote/virt1/ docker -H tcp://$VM1_IP:2376/ --tlsverify info
|
||||
42sh$ DOCKER_CERT_PATH=remote/virt1/ docker -H tcp://$VM1_IP:2376/ --tlsverify info
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
15
tutorial/docker-orchestration/misc/chronograf/Dockerfile
Normal file
15
tutorial/docker-orchestration/misc/chronograf/Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
|||
FROM debian
|
||||
|
||||
ENV CHRONOGRAF_VERSION 1.0.0
|
||||
RUN apt-get update && apt-get install -y wget && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||
wget -q https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||
dpkg -i chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||
rm -f chronograf_${CHRONOGRAF_VERSION}_amd64.deb
|
||||
COPY chronograf.conf /etc/chronograf/chronograf.conf
|
||||
|
||||
EXPOSE 10000
|
||||
|
||||
VOLUME /var/lib/chronograf
|
||||
|
||||
CMD ["/opt/chronograf/chronograf"]
|
|
@ -0,0 +1,2 @@
|
|||
Bind="0.0.0.0:10000"
|
||||
LocalDatabase="/var/lib/chronograf/chronograf.db"
|
31
tutorial/docker-orchestration/misc/docker-compose-std.yml
Normal file
31
tutorial/docker-orchestration/misc/docker-compose-std.yml
Normal file
|
@ -0,0 +1,31 @@
|
|||
version: '2'
|
||||
|
||||
services:
|
||||
influxdb:
|
||||
build: influxdb
|
||||
ports:
|
||||
- "8083:8083"
|
||||
- "8086:8086"
|
||||
volumes:
|
||||
- influx-data:/var/lib/influxdb
|
||||
networks:
|
||||
- influx
|
||||
|
||||
chronograf:
|
||||
build: chronograf
|
||||
ports:
|
||||
- "10000:10000"
|
||||
volumes:
|
||||
- chronograf-data:/var/lib/chronograf
|
||||
networks:
|
||||
- influx
|
||||
|
||||
volumes:
|
||||
influx-data:
|
||||
driver: local
|
||||
chronograf-data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
influx:
|
||||
driver: bridge
|
98
tutorial/docker-orchestration/misc/docker-compose-tick.yml
Normal file
98
tutorial/docker-orchestration/misc/docker-compose-tick.yml
Normal file
|
@ -0,0 +1,98 @@
|
|||
version: '3'
|
||||
services:
|
||||
# FRONT
|
||||
chronograf:
|
||||
# Full tag list: https://hub.docker.com/r/library/chronograf/tags/
|
||||
image: chronograf
|
||||
deploy:
|
||||
replicas: 3
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
environment:
|
||||
INFLUXDB_URL: http://influxdb:8086
|
||||
KAPACITOR_URL: http://kapacitor:9092
|
||||
volumes:
|
||||
# Mount for chronograf database
|
||||
- chronograf-data:/var/lib/chronograf
|
||||
ports:
|
||||
# The WebUI for Chronograf is served on port 8888
|
||||
- "8888:8888"
|
||||
networks:
|
||||
- influx
|
||||
depends_on:
|
||||
- kapacitor
|
||||
- influxdb
|
||||
# MIDDLE
|
||||
kapacitor:
|
||||
# Full tag list: https://hub.docker.com/r/library/kapacitor/tags/
|
||||
image: kapacitor
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
environment:
|
||||
HOSTNAME: kapacitor
|
||||
KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:8086
|
||||
volumes:
|
||||
# Mount for kapacitor data directory
|
||||
- kapacitor-data:/var/lib/kapacitor
|
||||
# Mount for kapacitor configuration
|
||||
#- /etc/kapacitor/config:/etc/kapacitor
|
||||
ports:
|
||||
# The API for Kapacitor is served on port 9092
|
||||
- "9092:9092"
|
||||
networks:
|
||||
- influx
|
||||
depends_on:
|
||||
- influxdb
|
||||
# BACK
|
||||
telegraf:
|
||||
# Full tag list: https://hub.docker.com/r/library/telegraf/tags/
|
||||
image: telegraf
|
||||
deploy:
|
||||
mode: global
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
volumes:
|
||||
# Mount for telegraf configuration
|
||||
- ./telegraf.conf:/etc/telegraf/telegraf.conf
|
||||
# Mount for Docker API access
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- influx
|
||||
depends_on:
|
||||
- influxdb
|
||||
# DATABASE
|
||||
influxdb:
|
||||
# Full tag list: https://hub.docker.com/r/library/influxdb/tags/
|
||||
image: influxdb
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
volumes:
|
||||
# Mount for influxdb data directory
|
||||
- influxdb-data:/var/lib/influxdb
|
||||
# Mount for influxdb configuration
|
||||
#- /etc/influxdb/config:/etc/influxdb
|
||||
ports:
|
||||
# The API for InfluxDB is served on port 8086
|
||||
- "8086:8086"
|
||||
networks:
|
||||
- influx
|
||||
networks:
|
||||
influx:
|
||||
|
||||
volumes:
|
||||
chronograf-data:
|
||||
kapacitor-data:
|
||||
influxdb-data:
|
35
tutorial/docker-orchestration/misc/docker-compose.yml
Normal file
35
tutorial/docker-orchestration/misc/docker-compose.yml
Normal file
|
@ -0,0 +1,35 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
influxdb:
|
||||
image: influxdb
|
||||
ports:
|
||||
- "8083:8083"
|
||||
- "8086:8086"
|
||||
volumes:
|
||||
- influx-data:/var/lib/influxdb
|
||||
networks:
|
||||
- influx
|
||||
|
||||
chronograf:
|
||||
image: chronograf
|
||||
ports:
|
||||
- "8888:8888"
|
||||
environment:
|
||||
INFLUXDB_URL: http://influxdb:8086
|
||||
KAPACITOR_URL: http://kapacitor:9092
|
||||
volumes:
|
||||
- chronograf-data:/var/lib/chronograf
|
||||
networks:
|
||||
- influx
|
||||
depends_on:
|
||||
- influxdb
|
||||
|
||||
volumes:
|
||||
influx-data:
|
||||
driver: local
|
||||
chronograf-data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
influx:
|
15
tutorial/docker-orchestration/misc/influxdb/Dockerfile
Normal file
15
tutorial/docker-orchestration/misc/influxdb/Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
|||
FROM debian
|
||||
|
||||
ENV INFLUXDB_VERSION 1.0.0
|
||||
RUN apt-get update && apt-get install -y wget && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||
dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||
rm -f influxdb_${INFLUXDB_VERSION}_amd64.deb
|
||||
COPY influxdb.conf /etc/influxdb/influxdb.conf
|
||||
|
||||
EXPOSE 8083 8086
|
||||
|
||||
VOLUME /var/lib/influxdb
|
||||
|
||||
CMD ["influxd"]
|
10
tutorial/docker-orchestration/misc/influxdb/influxdb.conf
Normal file
10
tutorial/docker-orchestration/misc/influxdb/influxdb.conf
Normal file
|
@ -0,0 +1,10 @@
|
|||
[meta]
|
||||
dir = "/var/lib/influxdb/meta"
|
||||
|
||||
[data]
|
||||
dir = "/var/lib/influxdb/data"
|
||||
engine = "tsm1"
|
||||
wal-dir = "/var/lib/influxdb/wal"
|
||||
|
||||
[admin]
|
||||
enabled = true
|
|
@ -0,0 +1,22 @@
|
|||
FROM debian
|
||||
|
||||
ENV INFLUXDB_VERSION 1.0.0
|
||||
ENV CHRONOGRAF_VERSION 1.0.0
|
||||
RUN apt-get update && apt-get install -y wget supervisor && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||
wget -q https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||
dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||
rm -f influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb
|
||||
|
||||
EXPOSE 8083 8086 10000
|
||||
|
||||
VOLUME /var/lib/influxdb
|
||||
VOLUME /var/lib/chronograf
|
||||
|
||||
COPY influxdb.conf /etc/influxdb/influxdb.conf
|
||||
COPY chronograf.conf /etc/chronograf/chronograf.conf
|
||||
|
||||
COPY supervisor.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
|
||||
CMD ["/usr/bin/supervisord"]
|
|
@ -0,0 +1,2 @@
|
|||
Bind="0.0.0.0:10000"
|
||||
LocalDatabase="/var/lib/chronograf/chronograf.db"
|
|
@ -0,0 +1,10 @@
|
|||
[meta]
|
||||
dir = "/var/lib/influxdb/meta"
|
||||
|
||||
[data]
|
||||
dir = "/var/lib/influxdb/data"
|
||||
engine = "tsm1"
|
||||
wal-dir = "/var/lib/influxdb/wal"
|
||||
|
||||
[admin]
|
||||
enabled = true
|
|
@ -0,0 +1,8 @@
|
|||
[supervisord]
|
||||
nodaemon=true
|
||||
|
||||
[program:influxdb]
|
||||
command=/usr/bin/influxd
|
||||
|
||||
[program:chronograf]
|
||||
command=/opt/chronograf/chronograf
|
|
@ -0,0 +1,23 @@
|
|||
FROM debian
|
||||
|
||||
ENV INFLUXDB_VERSION 1.0.0
|
||||
ENV CHRONOGRAF_VERSION 1.0.0
|
||||
RUN apt-get update && apt-get install -y wget && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
||||
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \
|
||||
wget -q https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||
dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \
|
||||
rm -f influxdb_${INFLUXDB_VERSION}_amd64.deb chronograf_${CHRONOGRAF_VERSION}_amd64.deb
|
||||
|
||||
EXPOSE 8083 8086 10000
|
||||
|
||||
VOLUME /var/lib/influxdb
|
||||
VOLUME /var/lib/chronograf
|
||||
|
||||
COPY influxdb.conf /etc/influxdb/influxdb.conf
|
||||
COPY chronograf.conf /etc/chronograf/chronograf.conf
|
||||
|
||||
# start.sh should already be executable
|
||||
COPY start.sh /usr/bin/start.sh
|
||||
|
||||
CMD ["start.sh"]
|
|
@ -0,0 +1,2 @@
|
|||
Bind="0.0.0.0:10000"
|
||||
LocalDatabase="/var/lib/chronograf/chronograf.db"
|
|
@ -0,0 +1,10 @@
|
|||
[meta]
|
||||
dir = "/var/lib/influxdb/meta"
|
||||
|
||||
[data]
|
||||
dir = "/var/lib/influxdb/data"
|
||||
engine = "tsm1"
|
||||
wal-dir = "/var/lib/influxdb/wal"
|
||||
|
||||
[admin]
|
||||
enabled = true
|
9
tutorial/docker-orchestration/misc/mymonitoring-wait/start.sh
Executable file
9
tutorial/docker-orchestration/misc/mymonitoring-wait/start.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
influxd &
|
||||
WAIT=$!
|
||||
|
||||
/opt/chronograf/chronograf &
|
||||
WAIT="${WAIT} $!"
|
||||
|
||||
wait ${WAIT}
|
24
tutorial/docker-orchestration/misc/proj/docker-compose.yml
Normal file
24
tutorial/docker-orchestration/misc/proj/docker-compose.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
version: '2'
|
||||
|
||||
services:
|
||||
nginx:
|
||||
image: nginx
|
||||
ports:
|
||||
- "80:8080"
|
||||
networks:
|
||||
- ha
|
||||
|
||||
mysql:
|
||||
image: mysql
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
networks:
|
||||
- ha
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
ha:
|
||||
driver: bridge
|
3
tutorial/docker-orchestration/misc/telegraf.conf
Normal file
3
tutorial/docker-orchestration/misc/telegraf.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
[[outputs.influxdb]]
|
||||
urls = ["http://influxdb:8086"] # required
|
||||
database = "telegraf" # required
|
|
@ -0,0 +1,11 @@
|
|||
/var/log/telegraf/telegraf.log
|
||||
{
|
||||
rotate 6
|
||||
daily
|
||||
missingok
|
||||
dateext
|
||||
copytruncate
|
||||
notifempty
|
||||
compress
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load diff
BIN
tutorial/docker-orchestration/misc/telegraf/usr/bin/telegraf
Executable file
BIN
tutorial/docker-orchestration/misc/telegraf/usr/bin/telegraf
Executable file
Binary file not shown.
|
@ -0,0 +1,208 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
# chkconfig: 2345 99 01
|
||||
# description: Telegraf daemon
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: telegraf
|
||||
# Required-Start: $all
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start telegraf at boot time
|
||||
### END INIT INFO
|
||||
|
||||
# this init script supports three different variations:
|
||||
# 1. New lsb that define start-stop-daemon
|
||||
# 2. Old lsb that don't have start-stop-daemon but define, log, pidofproc and killproc
|
||||
# 3. Centos installations without lsb-core installed
|
||||
#
|
||||
# In the third case we have to define our own functions which are very dumb
|
||||
# and expect the args to be positioned correctly.
|
||||
|
||||
# Command-line options that can be set in /etc/default/telegraf. These will override
|
||||
# any config file values.
|
||||
TELEGRAF_OPTS=
|
||||
|
||||
USER=telegraf
|
||||
GROUP=telegraf
|
||||
|
||||
if [ -r /lib/lsb/init-functions ]; then
|
||||
source /lib/lsb/init-functions
|
||||
fi
|
||||
|
||||
DEFAULT=/etc/default/telegraf
|
||||
|
||||
if [ -r $DEFAULT ]; then
|
||||
source $DEFAULT
|
||||
fi
|
||||
|
||||
if [ -z "$STDOUT" ]; then
|
||||
STDOUT=/dev/null
|
||||
fi
|
||||
if [ ! -f "$STDOUT" ]; then
|
||||
mkdir -p `dirname $STDOUT`
|
||||
fi
|
||||
|
||||
if [ -z "$STDERR" ]; then
|
||||
STDERR=/var/log/telegraf/telegraf.log
|
||||
fi
|
||||
if [ ! -f "$STDERR" ]; then
|
||||
mkdir -p `dirname $STDERR`
|
||||
fi
|
||||
|
||||
OPEN_FILE_LIMIT=65536
|
||||
|
||||
function pidofproc() {
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "Expected three arguments, e.g. $0 -p pidfile daemon-name"
|
||||
fi
|
||||
|
||||
if [ ! -f "$2" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pidfile=`cat $2`
|
||||
|
||||
if [ "x$pidfile" == "x" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ps --pid "$pidfile" | grep -q $(basename $3); then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
function killproc() {
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "Expected three arguments, e.g. $0 -p pidfile signal"
|
||||
fi
|
||||
|
||||
pid=`cat $2`
|
||||
|
||||
kill -s $3 $pid
|
||||
}
|
||||
|
||||
function log_failure_msg() {
|
||||
echo "$@" "[ FAILED ]"
|
||||
}
|
||||
|
||||
function log_success_msg() {
|
||||
echo "$@" "[ OK ]"
|
||||
}
|
||||
|
||||
# Process name ( For display )
|
||||
name=telegraf
|
||||
|
||||
# Daemon name, where is the actual executable
|
||||
daemon=/usr/bin/telegraf
|
||||
|
||||
# pid file for the daemon
|
||||
pidfile=/var/run/telegraf/telegraf.pid
|
||||
piddir=`dirname $pidfile`
|
||||
|
||||
if [ ! -d "$piddir" ]; then
|
||||
mkdir -p $piddir
|
||||
chown $USER:$GROUP $piddir
|
||||
fi
|
||||
|
||||
# Configuration file
|
||||
config=/etc/telegraf/telegraf.conf
|
||||
confdir=/etc/telegraf/telegraf.d
|
||||
|
||||
# If the daemon is not there, then exit.
|
||||
[ -x $daemon ] || exit 5
|
||||
|
||||
case $1 in
|
||||
start)
|
||||
# Checked the PID file exists and check the actual status of process
|
||||
if [ -e $pidfile ]; then
|
||||
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||
# If the status is SUCCESS then don't need to start again.
|
||||
if [ "x$status" = "x0" ]; then
|
||||
log_failure_msg "$name process is running"
|
||||
exit 0 # Exit
|
||||
fi
|
||||
fi
|
||||
|
||||
# Bump the file limits, before launching the daemon. These will carry over to
|
||||
# launched processes.
|
||||
ulimit -n $OPEN_FILE_LIMIT
|
||||
if [ $? -ne 0 ]; then
|
||||
log_failure_msg "set open file limit to $OPEN_FILE_LIMIT"
|
||||
fi
|
||||
|
||||
log_success_msg "Starting the process" "$name"
|
||||
if which start-stop-daemon > /dev/null 2>&1; then
|
||||
start-stop-daemon --chuid $USER:$GROUP --start --quiet --pidfile $pidfile --exec $daemon -- -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &
|
||||
else
|
||||
su -s /bin/sh -c "nohup $daemon -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &" $USER
|
||||
fi
|
||||
log_success_msg "$name process was started"
|
||||
;;
|
||||
|
||||
stop)
|
||||
# Stop the daemon.
|
||||
if [ -e $pidfile ]; then
|
||||
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||
if [ "$status" = 0 ]; then
|
||||
if killproc -p $pidfile SIGTERM && /bin/rm -rf $pidfile; then
|
||||
log_success_msg "$name process was stopped"
|
||||
else
|
||||
log_failure_msg "$name failed to stop service"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log_failure_msg "$name process is not running"
|
||||
fi
|
||||
;;
|
||||
|
||||
reload)
|
||||
# Reload the daemon.
|
||||
if [ -e $pidfile ]; then
|
||||
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||
if [ "$status" = 0 ]; then
|
||||
if killproc -p $pidfile SIGHUP; then
|
||||
log_success_msg "$name process was reloaded"
|
||||
else
|
||||
log_failure_msg "$name failed to reload service"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log_failure_msg "$name process is not running"
|
||||
fi
|
||||
;;
|
||||
|
||||
restart)
|
||||
# Restart the daemon.
|
||||
$0 stop && sleep 2 && $0 start
|
||||
;;
|
||||
|
||||
status)
|
||||
# Check the status of the process.
|
||||
if [ -e $pidfile ]; then
|
||||
if pidofproc -p $pidfile $daemon > /dev/null; then
|
||||
log_success_msg "$name Process is running"
|
||||
exit 0
|
||||
else
|
||||
log_failure_msg "$name Process is not running"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
log_failure_msg "$name Process is not running"
|
||||
exit 3
|
||||
fi
|
||||
;;
|
||||
|
||||
version)
|
||||
$daemon version
|
||||
;;
|
||||
|
||||
*)
|
||||
# For invalid arguments, print the usage message.
|
||||
echo "Usage: $0 {start|stop|restart|status|version}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
|
@ -0,0 +1,17 @@
|
|||
[Unit]
|
||||
Description=The plugin-driven server agent for reporting metrics into InfluxDB
|
||||
Documentation=https://github.com/influxdata/telegraf
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=-/etc/default/telegraf
|
||||
User=telegraf
|
||||
Environment='STDOUT=/var/log/telegraf/telegraf.log'
|
||||
Environment='STDERR=/var/log/telegraf/telegraf.log'
|
||||
ExecStart=/bin/sh -c "exec /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d ${TELEGRAF_OPTS} >>${STDOUT} 2>>${STDERR}"
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
Restart=on-failure
|
||||
KillMode=control-group
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -27,14 +27,14 @@ un serveur web, qui sera bien plus représentatif de ce que l'on pourra obtenir.
|
|||
Précédemment, nous lancions notre serveur web favori avec :
|
||||
|
||||
```shell
|
||||
docker container run --name mywebs -d nginx
|
||||
docker container run --name mywebs -d nginx
|
||||
```
|
||||
|
||||
La même commande, mais déployée à partir d'un nœud manager, vers un nœud
|
||||
*workers*, est :
|
||||
|
||||
```shell
|
||||
docker service create --name myWebS nginx
|
||||
docker service create --name myWebS nginx
|
||||
```
|
||||
|
||||
Allons-y, essayons !
|
||||
|
@ -42,9 +42,9 @@ Allons-y, essayons !
|
|||
On peut consulter l'état du service avec, comme d'habitude `ls` :
|
||||
|
||||
```shell
|
||||
42sh$ docker service ls
|
||||
ID NAME MODE REPLICAS IMAGE PORTS
|
||||
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
|
||||
42sh$ docker service ls
|
||||
ID NAME MODE REPLICAS IMAGE PORTS
|
||||
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
|
||||
```
|
||||
|
||||
Vous pouvez constater que sur l'un des nœuds, sur lequel votre serveur aura été
|
||||
|
@ -56,7 +56,7 @@ Rien de très excitant pour le moment, car nous ne pouvons pas vraiment accéder
|
|||
d'ajouter une redirection de port :
|
||||
|
||||
```shell
|
||||
docker service update --publish-add 80 myWebS
|
||||
docker service update --publish-add 80 myWebS
|
||||
```
|
||||
|
||||
À chaque modification de configuration, les conteneurs lancés au sein du
|
||||
|
@ -101,13 +101,13 @@ Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici
|
|||
:
|
||||
|
||||
```shell
|
||||
docker service update --replicas 3 myWebS
|
||||
docker service update --replicas 3 myWebS
|
||||
```
|
||||
|
||||
Roulement de tambours .......
|
||||
|
||||
```shell
|
||||
docker service ps myWebS
|
||||
docker service ps myWebS
|
||||
```
|
||||
|
||||
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
|
||||
|
@ -127,7 +127,7 @@ Notre système de monitoring est une *stack* lui aussi, d'ailleurs, nous pouvons
|
|||
la lancer grâce à notre `docker-compose.yml` :
|
||||
|
||||
```shell
|
||||
docker stack deploy --compose-file docker-compose.yml tic
|
||||
docker stack deploy --compose-file docker-compose.yml tic
|
||||
```
|
||||
|
||||
### Règle de déploiement
|
||||
|
@ -136,23 +136,23 @@ Par rapport à `docker-compose`, nous pouvons indiquer dans ce fichier des
|
|||
paramètres qui ne serviront qu'au déploiement de notre tâche.
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
redis:
|
||||
image: redis:alpine
|
||||
version: '3'
|
||||
services:
|
||||
redis:
|
||||
image: redis:alpine
|
||||
|
||||
deploy:
|
||||
replicas: 6
|
||||
update_config:
|
||||
parallelism: 2
|
||||
delay: 10s
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
resources:
|
||||
memory: 50M
|
||||
deploy:
|
||||
replicas: 6
|
||||
update_config:
|
||||
parallelism: 2
|
||||
delay: 10s
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
resources:
|
||||
memory: 50M
|
||||
```
|
||||
|
||||
Certaines informations comme les ressources, permettent à l'orchestrateur de
|
||||
|
|
|
@ -78,7 +78,7 @@ ce n'est pas plus compliqué que de faire :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
docker swarm init
|
||||
docker swarm init
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -99,7 +99,7 @@ commande, vous pouvez retrouver le jeton avec :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
docker swarm join-token worker
|
||||
docker swarm join-token worker
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -120,8 +120,8 @@ utilisant `docker-machine`.
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
eval $(docker-machine env echinoidea)
|
||||
docker swarm join --token SWMTKN-1-...-... 10.10.10.42:2377
|
||||
eval $(docker-machine env echinoidea)
|
||||
docker swarm join --token SWMTKN-1-...-... 10.10.10.42:2377
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -129,11 +129,11 @@ Une fois rejoint, vous devriez voir apparaître un nouveau nœud *worker* dans :
|
|||
|
||||
<div lang="en-US">
|
||||
```shell
|
||||
42sh$ eval $(docker-machine env -u)
|
||||
42sh$ docker node ls
|
||||
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
|
||||
y9skzvuf989hjrkciu8mnsy echinoidea Ready Active
|
||||
ovgh6r32kgcbswb2we48br1 * wales Ready Active Leader
|
||||
42sh$ eval $(docker-machine env -u)
|
||||
42sh$ docker node ls
|
||||
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
|
||||
y9skzvuf989hjrkciu8mnsy echinoidea Ready Active
|
||||
ovgh6r32kgcbswb2we48br1 * wales Ready Active Leader
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue