Monkey

Think! And Think Again


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 公益404

  • 搜索

未命名

发表于 2017-05-23 |

华为交换机 开启snmp 并添加zabbix监控

[fonsview@ZX-OTT-ZabbixServer ~]$ telnet 10.23.xx.xx
Username:huawei
Password: [这里输入交换机密码]

system-view
Enter system view, return user view with Ctrl+Z.
FS-OTT-S9306-1]snmp-agent
FS-OTT-S9306-1]snmp-agent community read fsv_zabbix
FS-OTT-S9306-1]snmp-agent sys-info version all
FS-OTT-S9306-1]snmp-agent target-host trap address udp-domain 这里填写zabbixserver的ip udp-port 161 params securityname fsv_zabbix
FS-OTT-S9306-1]snmp-agent trap type base-trap
FS-OTT-S9306-1]snmp-agent trap enable

测试,看到如下信息,说明交换机开启正常:
[root@ZX-OTT-ZabbixServer ~]# snmpwalk -v 2c -c fsv_zabbix 10.23.xx.xx .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Quidway S9306
Huawei Versatile Routing Platform Software
VRP (R) Software, Version 5.160 (S9300 V200R008C00SPC500)
Copyright (c) 2000-2015 Huawei Technologies Co., Ltd

zabbix添加

  1. 导入主机模板
    fsv_switch.xml

  2. 创建主机
    SNMP接口 10.23.xx.xx
    端口:161

并在宏这里设置
{$SNMP_COMMUNITY} => fsv_zabbix

  1. 为主机选择 fsv_switch这个模板

  2. 等在主机里面 看到snmp协议这里是绿色 就说明监控添加好了

未命名

发表于 2017-05-23 |

zabbix 已添加监控 清单

所有主机 基础监控

  • 主机运行时间
    查看方式: 最新数据 –> General –> System uptime

  • CPU 占用率
    查看方式: 最新数据 –> CPU –> CPU idle time
    计算方法:
    CPU 占用率 = 100% - %idle

CPU监控的相关指标还有如下:
CPU user time
CPU system time
CPU steal time
CPU softirq time
CPU nice time
CPU iowait time
CPU interrupt time

  • cpu 负载情况
    1分钟 5分钟 15分钟 平均每核cpu负载情况 (注:小于5正常)

查看方式: 最新数据 –> CPU –>
Processor load (1 min average per core)
Processor load (5 min average per core)
Processor load (15 min average per core)

  • cpu 单核占用率
    查看方式: 最新数据 –> CPU Core –> CPU Core XX idle time

计算方法:
CPU 占用率 = 100% - %idle

  • 内存占用相关参数
    查看方式: 最新数据 –> Memory –>

总内存: Total memory
可用内存: Available memory
注:Available memory=free+buffers+cached

  • swap相关
    查看方式: 最新数据 –> Memory –>
    总swap大小:Total swap space
    剩余swap占比:Free swap space in %
    剩余swap大小:Free swap space

  • 系统磁盘容量相关
    查看方式: 最新数据 –> Filesystems –>
    总磁盘大小:Total disk space on /
    已经使用磁盘大小:Used disk space on /
    剩余磁盘大小:Free disk space on /

系统磁盘剩余容量占用率:Free disk space on / (percentage)
系统磁盘剩余inodes占用率:Free inodes on / (percentage)

注:每个磁盘有个inodes数,就是可创建文件数量的限制
可以使用df -i查看

  • 系统盘软raid监控
    查看方式: 最新数据 –> Filesystems –> fsv_系统盘软raid监控

  • 磁盘健康状态
    查看方式: 最新数据 –> iostat –> sdX 磁盘健康状态
    zabbix自动: smartctl -H /dev/sdX 检查磁盘状态

  • 磁盘读写速率
    查看方式: 最新数据 –> iostat
    磁盘每秒读MB:sdz rMB/s
    磁盘每秒写MB:sdz wMB/s

  • 磁盘每秒 IO 数
    查看方式: 最新数据 –> iostat –> tps

  • 磁盘使用率
    查看方式: 最新数据 –> iostat –> %util

注: 磁盘io还可监控如下,单模板中默认停止,如想监控请 启用。
svctm
w/s
wrqm/s
rrqm/s
avgrq-sz
avgqu-sz
await
r/s

  • 网卡流量监控
    查看方式: 最新数据 –> Network interfaces –>
    出网卡流量:Outgoing network traffic on ethX
    进网卡流量:Incoming network traffic on ethX

所有网卡(除boundX)总出网卡流量:Outgoing network traffic on all
所有网卡(除boundX)总进网卡流量:Incoming network traffic on all

  • CORE 文件个数
    查看方式: 最新数据 –> OS –> core 文件数量

  • 时间同步状态
    开启:模板 Template OS Linux –> 触发器 –> “时间误差 大于60秒告警,当前是 {ITEM.VALUE}” 后

和zabbix server 时间误差大于60秒 的会自动报警

  • 自动发现主机正在运行服务的tcp侦听端口,然后自动监控所有相关服务状态
    查看方式: 最新数据 –> Tcp listen –> 端口XXX 正在运行

各个网元检查

ss 相关

查看方式: 最新数据 –> ss –>

ss状态:fsv_ss
ss在线人数:fsv_ss current_online_sessions
ss ha状态:fsv_ss ha status
ss直播人数:fsv_ss live_online_sessions
ss运行时间:fsv_ss uptime
ss直播乱序数量:ss 直播 乱序 监控
ss直播断流数量:ss 直播 断流 监控
fsv_ss 的 数据盘检查

注: 如下监控,已经添加但默认被停止,如果需要请启用
vod_online_sessions
tvod_online_sessions
pull_online_sessions
tstv_online_sessions
current_pem_load
current_hem_load
current_hls_load

sync同步监控

  1. 监控lsyncd
  2. 监控rsync

cmm主备监控

查看方式: 最新数据 –> cmm –>

##rss 连接数监控
(1)ESTAB 连接数
(2)LAST-ACK 连接数

##aaa 相关
查看方式: 最新数据 –> aaa –>
aaa ping
aaa的haproxy监控
aaa的keepalived

##epg 主机
查看方式: 最新数据 –> epg –>

  1. epg 运行状态 监控

比如:每分钟
curl -v “http://10.23.255.3:6600/epg/index.html“
判断状态码是否为200

  1. epg 在线用户数监控

##交换机监控
交换机运行时间:System uptime
交换机名字:Host name
交换机硬件信息
交换机各接口的 进流量和出流量

mysql监控

  1. mysql主从监控
  2. mysql同步超时监控
  3. 其他mysql查询性能监控
    MySQL version
    MySQL uptime
    MySQL update operations per second
    MySQL status
    MySQL slow queries
    MySQL select operations per second
    MySQL rollback operations per second
    MySQL queries per second
    MySQL insert operations per second
    MySQL delete operations per second
    MySQL commit operations per second
    MySQL bytes sent per second
    MySQL bytes received per second
    MySQL begin operations per second
    mysql 当前连接数

网元状态监控:

  1. aaa 状态那里 添加 aaa.ping[6600]
  2. cms 状态那里 添加 cms.ping[6600]
  3. epg 状态那里 添加 epg.ping[6601]
  4. nginx 状态那里 添加 nginx.ping[81]
  5. oss 状态那里 添加 oss.ping[81]

ss core 监控

tcp状态监控:
tcp 所有状态6060端口监控
tcp 所有状态6600端口监控
tcp closed状态 监控
tcp established状态 监控
tcp fin-wait-1状态 监控
tcp fin-wait-2状态 监控
tcp last-ack状态 监控
tcp syn-recv状态 监控
tcp syn-send状态 监控
tcp time-wait状态 监控

未命名

发表于 2017-05-23 |

k8s 介绍

启动一个单节点的集群

启动etcd集群

1
2
3
4
5
6
7
8
9
10
11
docker run -d --name=etcd \
--net=host \
gcr.io/google_containers/etcd:2.2.1 \
/usr/local/bin/etcd \
--listen-client-urls=http://0.0.0.0:4001 \
--advertise-client-urls=http://0.0.0.0:4001 \
--data-dir=/var/etcd/data
这条命令,启动一个 单节点etcd集群 侦听4001端口
--net=host 意思是这个容器 共享同一个网络名字叫host
生产环境上,推荐你启动三个节点的etcd集群 保证可用性

API server

1
2
3
4
5
6
7
8
Kubernetes 是一段组件的联合统称,hyperkube运行你运行多个组件,第一个组件就是API server
docker run -d --name=api \
--net=host --pid=host --privileged=true \
gcr.io/google_containers/hyperkube:v1.2.2 \
/hyperkube apiserver \
--insecure-bind-address=0.0.0.0 \
--service-cluster-ip-range=10.0.0.1/24 \
--etcd_servers=http://127.0.0.1:4001

Master

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker run -d --name=kubs \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/dev:/dev \
--volume=/var/lib/docker/:/var/lib/docker:rw \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/var/run:/var/run:rw \
--net=host \
--pid=host \
--privileged=true \
gcr.io/google_containers/hyperkube:v1.2.2 \
/hyperkube kubelet \
--containerized \
--hostname-override="0.0.0.0" \
--address="0.0.0.0" \
--cluster_dns=10.0.0.10 --cluster_domain=cluster.local \
--api-servers=http://localhost:8080 \
--config=/etc/kubernetes/manifests-multi

Master 是集群的控制单元,这个master 管理调度一个新的容器在哪个节点运行
其中 控制管理处理复制 调度服务 追踪资源的使用

Proxy

1
2
3
4
5
6
7
docker run -d --name=proxy\
--net=host \
--privileged \
gcr.io/google_containers/hyperkube:v1.2.2 \
/hyperkube proxy \
--master=http://0.0.0.0:8080 --v=2
任何节点对集群的请求都会通过代理服务来转发,它处理负载均衡和两个容器之间的通信

Kubectl

Kubectl是个命令行客户端来和Master进行通信。

1
2
3
4
5
6
7
8
curl -o ~/.bin/kubectl http://storage.googleapis.com/kubernetes-release/release/v1.2.2/bin/linux/amd64/kubectl
chmod u+x ~/.bin/kubectl
使用这个客户端,要定义一个环境变量
export KUBERNETES_MASTER=http://host01:8080

KubeDNS / SkyDNS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Kubernetes 使用 etc的 它的关系型DNS服务叫做 SkyDNS
kubectl create -f ~/kube-system.json
kubectl create -f ~/skydns-rc.yaml
kubectl create -f ~/skydns-svc.yaml
> cat kube-system.json
{
"kind": "Namespace",
"apiVersion": "v1",
"metadata": {
"name": "kube-system"
}
}

Kube UI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
使用下面 命令 启动 图形面板
kubectl create -f ~/dashboard.yaml
dashboard.yaml 中内容
kind: List
apiVersion: v1
items:
- kind: ReplicationController
apiVersion: v1
metadata:
labels:
app: kubernetes-dashboard
version: v1.0.1
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
selector:
app: kubernetes-dashboard
template:
metadata:
labels:
app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.0.1
imagePullPolicy: Always
ports:
- containerPort: 9090
protocol: TCP
args:
- --apiserver-host=172.17.0.28:8080
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
- kind: Service
apiVersion: v1
metadata:
labels:
app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 80
targetPort: 9090
selector:
app: kubernetes-dashboard

健康检查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
curl http://host01:4001/version
curl http://host01:8080/version
export KUBERNETES_MASTER=http://host01:8080
kubectl cluster-info 查看集群信息
kubectl get nodes
> cat /home/scrapbook/.bin/launch.sh
echo "Starting Kubernetes v1.2.2..."
docker run -d --net=host gcr.io/google_containers/etcd:2.2.1 /usr/local/bin/etcd --list
en-client-urls=http://0.0.0.0:4001 --advertise-client-urls=http://0.0.0.0:4001 --data-d
ir=/var/etcd/data
docker run -d --name=api --net=host --pid=host --privileged=true gcr.io/google_containe
rs/hyperkube:v1.2.2 /hyperkube apiserver --insecure-bind-address=0.0.0.0 --service-clus
ter-ip-range=10.0.0.1/24 --etcd_servers=http://127.0.0.1:4001 --v=2
docker run -d --name=kubs --volume=/:/rootfs:ro --volume=/sys:/sys:ro --volume=/dev:/de
v --volume=/var/lib/docker/:/var/lib/docker:rw --volume=/var/lib/kubelet/:/var/lib/kube
let:rw --volume=/var/run:/var/run:rw --net=host --pid=host --privileged=true gcr.io/goo
gle_containers/hyperkube:v1.2.2 /hyperkube kubelet --allow-privileged=true --containeri
zed --enable-server --hostname-override="127.0.0.1" --address="0.0.0.0" --api-servers=h
ttp://0.0.0.0:8080 --cluster_dns=10.0.0.10 --cluster_domain=cluster.local --config=/etc
/kubernetes/manifests-multi
echo "Downloading Kubectl..."
curl -o ~/.bin/kubectl http://storage.googleapis.com/kubernetes-release/release/v1.2.2/
bin/linux/amd64/kubectl
chmod u+x ~/.bin/kubectl
export KUBERNETES_MASTER=http://host01:8080
echo "Waiting for Kubernetes to start..."
until $(kubectl cluster-info &> /dev/null); do
sleep 1
done
echo "Starting Kubernetes Proxy..."
docker run -d --name=proxy --net=host --privileged gcr.io/google_containers/hyperkube:v
1.2.2 /hyperkube proxy --proxy-mode=userspace --master=http://0.0.0.0:8080 --v=2
echo "Kubernetes started"
echo "Starting Kubernetes DNS..."
kubectl -s http://host01:8080 create -f ~/kube-system.json
kubectl -s http://host01:8080 create -f ~/skydns-rc.yaml
kubectl -s http://host01:8080 create -f ~/skydns-svc.yaml
echo "Starting Kubernetes UI..."
kubectl -s http://host01:8080 create -f ~/dashboard.yaml
kubectl -s http://host01:8080 cluster-info

未命名

发表于 2017-05-23 |

##
etcd 下载:
http://onayasfq5.bkt.clouddn.com/etcd-v3.2.0-rc.1-linux-amd64.tar.gz

etcd启动:
./etcd

2017-05-20 14:40:56.139621 I | embed: listening for peers on http://localhost:2380
2017-05-20 14:40:56.140017 I | embed: listening for client requests on localhost:2379
2017-05-20 14:40:56.145280 I | etcdserver: name = default
2017-05-20 14:40:56.145334 I | etcdserver: data dir = default.etcd
2017-05-20 14:40:56.145358 I | etcdserver: member dir = default.etcd/member
2017-05-20 14:40:56.145377 I | etcdserver: heartbeat = 100ms
2017-05-20 14:40:56.145395 I | etcdserver: election = 1000ms
2017-05-20 14:40:56.145413 I | etcdserver: snapshot count = 100000
2017-05-20 14:40:56.145441 I | etcdserver: advertise client URLs = http://localhost:2379
2017-05-20 14:40:56.145462 I | etcdserver: initial advertise peer URLs = http://localhost:2380
2017-05-20 14:40:56.145499 I | etcdserver: initial cluster = default=http://localhost:2380

可以看到基本信息,比如默认创建的目录default.etcd

安装http客户端:
pip install –upgrade pip setuptools
pip install httpie

检查查询版本:
http http://127.0.0.1:2379/version

key的增删改查:

增和改
上面这个命令通过 PUT 方法把 /message 设置为 hello, etcd。
http PUT http://127.0.0.1:2379/v2/keys/message value==”hello, etcd”

查:
http get http://127.0.0.1:2379/v2/keys/message

删:
http DELETE http://127.0.0.1:2379/v2/keys/message

配置方法,三个节点 分别是 infra0=http://172.16.6.58:2380,infra1=http://172.16.199.224:2380,infra2=http://172.16.12.41:2380
root ➜ ~ etcdctl –version
etcdctl version: 3.1.3
API version: 2

export ETCDCTL_API=3
etcdctl version

$ etcd –name infra0 –initial-advertise-peer-urls http://172.16.6.58:2380 \
–listen-peer-urls http://172.16.6.58:2380 \
–listen-client-urls http://172.16.6.58:2379,http://127.0.0.1:2379 \
–advertise-client-urls http://172.16.6.58:2379 \
–initial-cluster-token etcd-cluster-1 \
–initial-cluster infra0=http://172.16.6.58:2380,infra1=http://172.16.199.224:2380,infra2=http://172.16.12.41:2380 \
–initial-cluster-state new

$ etcd –name infra1 –initial-advertise-peer-urls http://172.16.199.224:2380 \
–listen-peer-urls http://172.16.199.224:2380 \
–listen-client-urls http://172.16.199.224:2379,http://127.0.0.1:2379 \
–advertise-client-urls http://172.16.199.224:2379 \
–initial-cluster-token etcd-cluster-1 \
–initial-cluster infra0=http://172.16.6.58:2380,infra1=http://172.16.199.224:2380,infra2=http://172.16.12.41:2380 \
–initial-cluster-state new

$ etcd –name infra2 –initial-advertise-peer-urls http://172.16.12.41:2380 \
–listen-peer-urls http://172.16.12.41:2380 \
–listen-client-urls http://172.16.12.41:2379,http://127.0.0.1:2379 \
–advertise-client-urls http://172.16.12.41:2379 \
–initial-cluster-token etcd-cluster-1 \
–initial-cluster infra0=http://172.16.6.58:2380,infra1=http://172.16.199.224:2380,infra2=http://172.16.12.41:2380 \
–initial-cluster-state new

$ etcdctl member list
2b4fd535115ae11c: name=infra2 peerURLs=http://172.16.12.41:2380 clientURLs=http://172.16.12.41:2379 isLeader=false
6e626765ce2d2c33: name=infra1 peerURLs=http://172.16.199.224:2380 clientURLs=http://172.16.199.224:2379 isLeader=false
db1fc1144eff6ac6: name=infra0 peerURLs=http://172.16.6.58:2380 clientURLs=http://172.16.6.58:2379 isLeader=true

集群节点删除:
$etcdctl member remove infra1 http://172.16.199.224:2380

集群节点添加:
$etcdctl member add infra1 http://172.16.199.224:2380
Added member named infra1 with ID 1a507103ca1c349c to cluster

ETCD_NAME=”infra1”
ETCD_INITIAL_CLUSTER=”infra1=http://172.16.199.224:2380,infra2=http://172.16.12.41:2380,infra0=http://172.16.6.58:2380“
ETCD_INITIAL_CLUSTER_STATE=”existing”

添加后,把配置文件删除后,重新启动进程

未命名

发表于 2017-05-23 |

fedora 简单环境安装

fedora 中文社区软件源 http://copr-be.cloud.fdzh.org/

https://github.com/FZUG/repo/wiki/Sogou-Pinyin-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

安装

  • 查看 有哪些目录
    smbclient -U monkey -L 172.16.200.250

Sharename Type Comment


IPC$ IPC IPC Service ()
home Disk Home
Upload Disk
Release Disk
wiki Disk
KS Disk
Restrict Disk
Media Disk 媒体资源库
Public Disk System default share

  • 挂载
    sudo mount.cifs //172.16.200.250/Upload /home/monkey/it-fs/Upload -o domain=fonsview.com,username=monkey,password=123.coM

sudo mount.cifs //172.16.200.250/Release /home/monkey/it-fs/Release -o domain=fonsview.com,username=monkey,password=123.coM
sudo mount.cifs //172.16.200.250/Public /home/monkey/it-fs/Public -o domain=fonsview.com,username=monkey,password=123.coM

  • plank 小巧好用的dock
    dnf install plank
  • 安装google chrome

http://orion.lcg.ufrj.br/RPMS/myrpms/google/
注:fedora24 和 chrome 54.0.2840.100-1.x86_64.rpm 不兼容

  • 安装xx-net 翻墙
    安装fedora中国 源之后
    dnf install xx-net

  • 系统升级
    sudo dnf upgrade –refresh
    sudo dnf install dnf-plugin-system-upgrade
    sudo dnf system-upgrade download –refresh –releasever=25 –allowerasing –best –nogpgcheck

    请加上–nogpgcheck 否则可以会因为某些key没有安装 出现无法安装

sudo dnf system-upgrade reboot

  • 升级后key会变,在下面网站 找寻对应的key替换

https://getfedora.org/keys/

比如fedora25:
$rpm –import PUBKEY https://getfedora.org/static/FDB19C98.txt

  • 安装dock
    https://extensions.gnome.org/extension/307/dash-to-dock/

  • open terminal in current folder in fedora?

    • Open Terminal and type sudo yum install nautilus-open-terminal
    • Log Off and log on
    • Now, in any folder, if you right click you will have the option Open in Terminal, which opens the terminal in the current directory.
  • 在终端中打开 目录
    $ nautilus .

  • 添加 更新软件源 安装 mpv 播放器
    rpm -Uvh http://mirrors.aliyun.com/rpmfusion/free/fedora/rpmfusion-free-release-25.noarch.rpm
    rpm -Uvh http://mirrors.aliyun.com/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-25.noarch.rpm

yum install mpv

未命名

发表于 2017-05-22 |

prometheus 数据库使用

vi /prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s

scrape_configs:

  • job_name: ‘prometheus’

    static_configs:

    • targets: [‘localhost:9090’, ‘localhost:9100’]
      labels:
      group: ‘prometheus’

启动一个数据库
mkdir -p /prometheus/data
docker run -d –net=host \
-v /prometheus.yml:/etc/prometheus/prometheus.yml \
-v /prometheus/data:/prometheus \
–name prometheus-server \
prom/prometheus

  • 导出数据
    docker run -d -p 9100:9100 \
    -v “/proc:/host/proc” \
    -v “/sys:/host/sys” \
    -v “/:/rootfs” \
    –net=”host” \
    –name=promethus \
    quay.io/prometheus/node-exporter:v0.13.0 \
    -collector.procfs /host/proc \
    -collector.sysfs /host/sys \
    -collector.filesystem.ignored-mount-points “^/(sys|proc|dev|host|etc)($|/)”

未命名

发表于 2017-05-22 |

使用 etcd 做为 ansible inventory 数据源
发表于2015 年 9 月 23 日
etcd 文档

https://coreos.com/etcd/docs/0.4.7/etcd-api/
https://github.com/oreh/simpletcd

结构

hostvars/12.34.56.78/redis_maxmemory => 4GB
hostvars/12.34.56.78/hostname => abc.jpuyy.com

输出

[abc.jpuyy.com]
12.34.56.78

对应的变量是 redis_maxmemory = 4GB

未命名

发表于 2017-05-22 |

容器链接

参考

Links运行container之间发现彼此并且彼此间安全的通讯。使用 –link可以创建一个link. 让我们创建一个运行数据库的container。

$ sudo docker run -d –name db training/postgres
这里我们基于 training/postgres image创建了一个叫做 db 的container, 上面提供PostgreSQL 数据库服务.

现在让我们创建一个叫做 web的container, 并且把他和 db container连接到一起。

$ sudo docker run -d -P –name web –link db:db training/webapp python app.py
这个命令会吧 db 和 web 连接到一起 –link 的用法:

–link name:alias
这里 name 是我们要连接的container的名字, alias 是一link的别名. 下面我们会看到如何使用这个 别名.

下面让我们用 docker ps 看看被连接到一起的container们。

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
349169744e49 training/postgres:latest su postgres -c ‘/usr About a minute ago Up About a minute 5432/tcp db
aed84ee21bde training/webapp:latest python app.py 16 hours ago Up 2 minutes 0.0.0.0:49154->5000/tcp db/web,web
这里我们可以看到我们创建的两个分别叫 db 和 web 的container, 注意 web container 在name列里还显示了另外一个名字db/web。 这个名字告诉我们 web container 被连接到了 db container, 并且建立了一种父子关系。

linking到底有什么用呢?我们已经看到了link在两个container间创建了一个 父子 关系. 父container 这个例子里的 db 可以得到他的子container web上的信息. Docker是通过在 两个container建立了一个安全通道来实现的, 这样container就不用对外暴露端口了. 你可能已经注意到了 我们在启动 db container的时候没有使用 -p 或者 -P。 因为我们已经吧两个container通过 link连接起来了, 所以没必要通过端口暴露数据库的服务了.

Docker通过下述两种方法吧子container里的信息暴露给父container:

环境变量

更新 /etc/host 文件

我们先看下docker设定的环境变量。 在 web containre里, 让我们运行 env 命令 列出所有的环境变量。

root@aed84ee21bde:/opt/webapp# env
HOSTNAME=aed84ee21bde
. . .
DB_NAME=/web/db
DB_PORT=tcp://172.17.0.5:5432
DB_PORT_5000_TCP=tcp://172.17.0.5:5432
DB_PORT_5000_TCP_PROTO=tcp
DB_PORT_5000_TCP_PORT=5432
DB_PORT_5000_TCP_ADDR=172.17.0.5
. . .
注: 这些环境变量只是为第一个在container里的进程设置的。 类似的守护进程(例如 sshd) 会在新建子shell的时候抹除这些变量。

未命名

发表于 2017-05-22 |

容器的真实路径

/var/lib/docker/containers/02e3a9c7ea1195171f59a8fc0893323aeecdad8db1a96b49b79952a1fc857d46/

未命名

发表于 2017-05-22 |
  1. docker中的日志处理
    使用ELK处理Docker日志(一)
    使用ELK处理Docker日志(二)

如何在 Rancher 中统一管理容器日志
可以参考学习使用,rsyslog 直接输出json到elasticsearch中

rsyslog通过自定义json格式发送日志信息给logstash

docker日志处理三种方法:
docker –> rsyslog –> kafaka –> logstash –> elasticsearch
docker –> rsyslog –> filebeat –> elasticsearch
docker –> filebeat –> elasticsearch

1…8910…21
kikiyou

kikiyou

越努力越幸运

204 日志
20 标签
GitHub Quora 知乎 豆瓣 果壳 Facebook Twitter 新浪微博
Links
  • Awesome
© 2015 - 2017 kikiyou
由 Hexo 强力驱动
主题 - NexT.Mist