docker image 实践之容器化 ganglia
基礎鏡像
單播模式下檢測效果
使用centos:6作為基礎鏡像,因為centos:7沒有使用systemd作為系統服務管理工具.這在后面啟動ganglia進程的時候會帶來很多麻煩,但是有解決方案(由dockone社區微信群大神給出的解決方案,個人并未嘗試):
使用supervisor來統一管理進行
runt管理進程
Dockerfile
FROM centos:6 MAINTAINER wlu wlu@linkernetworks.comRUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmRUN yum install -y php-common php-cli php-gb php# install ganglia server RUN yum install -y rrdtool rrdtool-devel ganglia-web ganglia-gmetad \ganglia-gmond ganglia-gmond-python httpd apr-devel zlib-devel \libconfuse-devel expat-devel pcre-devel# install ganglia client #RUN yum install -y ganglia-gmondRUN mkdir -p /var/lib/ganglia && \chown nobody:nobody /var/lib/ganglia && \chmod 777 /var/lib/gangliaADD supervisord.conf /etc/supervisord.conf RUN yum install -y python-setuptools && \easy_install supervisor && \yum clean allRUN yum install -y vim && \ln -f -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeCMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]注意:這里可以把多個指令合并以減少鏡像層數.
ganglia的配置
原理圖:
ganglia可以監控整個集群的信息.這里有兩個概念:
ganglia 中央機器...對應gmetad進程.對應配置信息在/etc/ganglia/gmetad.conf(centos6下)
ganglia client...對應gmond進程.對應配置信息在/etc/ganglia/gmond.conf(centos6下)
有點類似于master和slave的關系.
在集群中需要有一個中央機器來統一接收其它機器上收集到的監控信息(也可以包括中央機器自身),在這個中央機器上運行gmetad進程.
在其它機器上運行gmond進程,用來收集機器上的監控信息.
ganglia的兩種模式
單播模式
這種模式下client上的數據會發送給中央機器,下面看下client(即gmond)的配置(只摘取部分需要的配置項):
gmond.conf
...... cluster {name = "unspecified"owner = "unspecified"latlong = "unspecified"url = "unspecified" } ...... udp_send_channel {#bind_hostname = yes # Highly recommended, soon to be default.# This option tells gmond to use a source address# that resolves to the machine's hostname. Without# this, the metrics may appear to come from any# interface and the DNS names associated with# those IPs will be used to create the RRDs.mcast_join = 239.2.11.71port = 8649ttl = 1 } ...... /* You can specify as many udp_recv_channels as you like as well. */ udp_recv_channel {mcast_join = 239.2.11.71port = 8649bind = 239.2.11.71retry_bind = true# Size of the UDP buffer. If you are handling lots of metrics you really# should bump it up to e.g. 10MB or even higher.# buffer = 10485760 } ......cluster name,這個必須指定并且相同集群使用相同的name
udp_send_channel,因為單播模式下各個client把數據以udp協議發給中央機器,所以需要配置中央機器的ip,配置后的結果:
這條需要注釋:#mcast_join = 239.2.11.71,ganglia默認是多播.
注釋掉多播的配置:
note:這里注釋掉多播和綁定的ip.我還不是太明白,詳情參考這里
配置好后就可以通過service gmond start來啟動client上的gmond進程了.
gmetad.conf
data_source "my cluster" localhost改為
data_source "your cluster name" host_ip #host_ip指中央機器的配置配置好后就可以通過service gmetad start來啟動中央機器上的gmetad進程了.
多播模式
多播的特點:
集群中的每個client把自己的數據發送給集群中的其它client
中央機器指定一個client作為數據源.
個人覺得這種方式很浪費,因為單播模式下數據傳輸次數要少
參考連接
reference 1
reference 2
本項目對應的GitHub地址
httpd訪問控制問題
ps
南京docker meetup已經于2015年3月份成立,將于2016年開始舉辦線下技術分享.誠摯歡迎各位對docker及容器技術感興趣的同學加入Docker Nanjing meetup
總結
以上是生活随笔為你收集整理的docker image 实践之容器化 ganglia的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [cocos2d-x][apk打包][F
- 下一篇: Pascal's Triangle 2(