设为首页 收藏本站
查看: 1463|回复: 0

[经验分享] docker graphite 部署

[复制链接]

尚未签到

发表于 2015-4-18 05:57:30 | 显示全部楼层 |阅读模式
  一、获取graphite-centos docker image



sudo docker pull steeef/graphite-centos
(参见:https://registry.hub.docker.com/u/steeef/graphite-centos/)
  二、运行一个graphite容器



docker run -d \
--name graphite \
-v /data/uxin/graphite:/var/lib/graphite/storage/whisper \
-p 8880:80 \
-p 2003:2003 \
-p 2004:2004 \
-p 7002:7002 \
steeef/graphite-centos
  三、在容器中执行bash
1.进入graphite容器:



sudo docker exec -t -i graphite /bin/bash
  2.修改graphite配置:
  1)修改graphite显示时间:



TIME_ZONE = 'Asia/Shanghai'
  2)修改系统时区



cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3.为nginx的登录增加用户名和密码(见另一篇博文)
4.重新启动服务
  将/etc/supervisor.conf中关于nginx的启动去掉,改为在/tmp/start.sh中启动nginx,并且nginx.conf配置ngingx的启动方式为daemon启动,需要将daemon off注释掉。
  这样做的原因是使用supervisor来启动nginx会将CPU占用率位置在90%以上。
  执行启动所有服务/tmp/start.sh
四、使用docker停止、重新启动容器



sudo docker stop graphite
sudo docker restart graphite
sudo docker top graphite
  
  附录1:Dockerfile



FROM centos:latest
MAINTAINER Stephen Price
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# Install required packages
RUN yum -y install gcc python-devel pycairo pyOpenSSL python-memcached \
bitmap bitmap-fonts python-pip python-django-tagging \
python-sqlite2 python-rrdtool memcached python-simplejson python-gunicorn \
supervisor openssh-server sudo nginx
# Use pip to install graphite, carbon, and deps
RUN pip-python install whisper
RUN pip-python install Twisted==11.1.0
RUN pip-python install --install-option="--prefix=/var/lib/graphite" --install-option="--install-lib=/var/lib/graphite/lib" carbon
RUN pip-python install --install-option="--prefix=/var/lib/graphite" --install-option="--install-lib=/var/lib/graphite/webapp" graphite-web
RUN mkdir -p /var/run/sshd
RUN chmod -rx /var/run/sshd
RUN useradd -d /home/graphite -m -s /bin/bash graphite
RUN echo graphite:graphite | chpasswd
RUN echo 'graphite ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/graphite
RUN chmod 0440 /etc/sudoers.d/graphite
# Add system service config
ADD nginx.conf /etc/nginx/nginx.conf
ADD supervisord.conf /etc/supervisord.conf
#
## Add graphite config
ADD initial_data.json /var/lib/graphite/webapp/graphite/initial_data.json
ADD local_settings.py /var/lib/graphite/webapp/graphite/local_settings.py
ADD carbon.conf /var/lib/graphite/conf/carbon.conf
ADD storage-schemas.conf /var/lib/graphite/conf/storage-schemas.conf
RUN mkdir -p /var/lib/graphite/storage/whisper
RUN touch /var/lib/graphite/storage/graphite.db /var/lib/graphite/storage/index
RUN chown -R nginx /var/lib/graphite/storage
RUN chmod 0775 /var/lib/graphite/storage /var/lib/graphite/storage/whisper
RUN chmod 0664 /var/lib/graphite/storage/graphite.db
RUN cd /var/lib/graphite/webapp/graphite && python manage.py syncdb --noinput
# Nginx
EXPOSE 80
# Carbon line receiver port
EXPOSE 2003
# Carbon pickle receiver port
EXPOSE 2004
# Carbon cache query port
EXPOSE 7002
# ssh
EXPOSE 22
ADD start.sh /tmp/start.sh
RUN chmod +x /tmp/start.sh
ENTRYPOINT /tmp/start.sh
  
  附录2:容器运行后,第一个执行的命令 /tmp/start.sh(nginx.conf配置ngingx的启动方式为daemon启动,需要将daemon off注释掉)



#!/bin/bash
if [ -n "${SECRET_KEY}" ]; then
sed -E -i "s/^environment = (.*)$/environment = \1,SECRET_KEY='$SECRET_KEY'/" /etc/supervisord.conf
fi
#ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C '' -N ''
#ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' -N ''
#ssh-keygen -q -t rsa1 -f /etc/ssh/ssh_host_key -C '' -N ''
/usr/bin/supervisord
/usr/sbin/nginx
/usr/sbin/sshd -D -o UseDNS=no -o UsePAM=no
  
  附录3:supervisor.conf



bash-4.1# vi /etc/supervisord.conf
[supervisord]
environment = GRAPHITE_STORAGE_DIR=/var/lib/graphite/storage,GRAPHITE_CONF_DIR=/var/lib/graphite/conf
logfile = /var/log/supervisor/supervisord.log
#[program:nginx]
#command = /usr/sbin/nginx
#autorestart = true
#log_stdout = true
#log_stderr = true
#logfile_maxbytes=5MB
#logfile_backups=10
#logfile = /var/log/supervisor/nginx.log
[program:carbon-cache]
user = nginx
command = /var/lib/graphite/bin/carbon-cache.py  start
logfile = /var/log/supervisor/carbon-cache.log
autorestart = true
log_stdout = true
log_stderr = true
logfile_maxbytes=5MB
logfile_backups=10
[program:graphite-webapp]
user = nginx
directory = /var/lib/graphite/webapp
command = /usr/bin/gunicorn_django -b127.0.0.1:8000 --pythonpath=/var/lib/graphite/webapp/graphite --preload -w2 --settings=settings
logfile = /var/log/supervisor/graphite.log
autorestart = true
autostart = true
log_stdout = true
log_stderr = true
logfile_maxbytes=5MB
logfile_backups=10
            
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58176-1-1.html 上篇帖子: [转载] 深入理解docker volume 下篇帖子: 一种Docker image镜像的取代方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表