harbor进程组件化运行及systemd 进程日志分写
2017-11-14 16:01
656 查看
目标
由于公司容器化上生产后,需要规范发布流程,而作为容器的基础服务harbor镜像仓库,通过自己来发布自己不太理,于是将镜像方式的harbor组件变更为进程方式发布。由于已经上线较长时间,各系统的配置诸如环境变量、配置文件、日志告警相关的一堆流程已配置过。改代码编译问题好办,如何让原来的环境变量、配置文件、日志文件等均不变化是目前需要解决的问题
环境
centos 7.2
1、harbor jobserivce ui为一套代码共用base config服务对于两服务的配置项CONFIG_PATH指向的配置文件不同,主要涉及分离端口监听问题
CONFIG_PATH=/apps/conf/harbor/jobservice/app.confCONFIG_PATH=/apps/conf/harbor/ui/app.conf/apps/conf/harbor/jobservice/app.conf httpport = 8080
/apps/conf/harbor/ui/app.confhttpport = 8088
解决
环境变量问题可以通过systemd的EnvironmentFile变量解决
示例
2、日志问题,进程由systemd接管后,日志写入到/var/log/messages里,现要将jobservice registry ui三个组件的日志分开写,每个日志的监控级别不同,registry日志里的error关键字并一定是错误,不分开写会错误日志报警问题
解决
该问题可以结合systemd与rsyslog服务配置共同处理具体处理如下
示例
日志分开写后效果
systemd日志写入参考:https://stackoverflow.com/questions/37585758/how-to-redirect-output-of-systemd-service-to-a-file
由于公司容器化上生产后,需要规范发布流程,而作为容器的基础服务harbor镜像仓库,通过自己来发布自己不太理,于是将镜像方式的harbor组件变更为进程方式发布。由于已经上线较长时间,各系统的配置诸如环境变量、配置文件、日志告警相关的一堆流程已配置过。改代码编译问题好办,如何让原来的环境变量、配置文件、日志文件等均不变化是目前需要解决的问题
环境
centos 7.2
1、harbor jobserivce ui为一套代码共用base config服务对于两服务的配置项CONFIG_PATH指向的配置文件不同,主要涉及分离端口监听问题
CONFIG_PATH=/apps/conf/harbor/jobservice/app.confCONFIG_PATH=/apps/conf/harbor/ui/app.conf/apps/conf/harbor/jobservice/app.conf httpport = 8080
/apps/conf/harbor/ui/app.confhttpport = 8088
解决
环境变量问题可以通过systemd的EnvironmentFile变量解决
示例
环境变量文件 cat /apps/conf/harbor/jobservice/env HARBOR_DB_HOST='192.168.1.23' HARBOR_DB_PORT=3306 HARBOR_DB_USER='root' HARBOR_DB_PASSWORD='1xxxv' CONFIG_PATH=/apps/conf/harbor/jobservice/app.conf systemd配置文件引用环境变量文件 cat /usr/lib/systemd/system/harbor-jobservice.service [Service] EnvironmentFile=/apps/conf/harbor/jobservice/env ExecStart=/apps/svr/harbor/jobservice 启动该服务时相当于为该进程执行过一次export,不影响其他系统服务 export VIP_HARBOR_DB_HOST='192.168.1.23' export VIP_HARBOR_DB_PORT=3306 export VIP_HARBOR_DB_USER='root' export VIP_HARBOR_DB_PASSWORD='1xxxv' export CONFIG_PATH=/apps/conf/harbor/jobservice/app.conf
2、日志问题,进程由systemd接管后,日志写入到/var/log/messages里,现要将jobservice registry ui三个组件的日志分开写,每个日志的监控级别不同,registry日志里的error关键字并一定是错误,不分开写会错误日志报警问题
解决
该问题可以结合systemd与rsyslog服务配置共同处理具体处理如下
示例
jobservice配置 cat /usr/lib/systemd/system/harbor-jobservice.service [Unit] Description=Harbor Jobservice After=network.target [Service] EnvironmentFile=/apps/conf/harbor/jobservice/env ExecStart=/apps/svr/harbor/jobservice ExecReload=/bin/kill -HUP $MAINPID KillMode=process StandardOutput=syslog #日志采用syslog StandardError=syslog #日志采用syslog SyslogIdentifier=jobservice #日志标签 [Install] WantedBy=multi-user.target ui配置 cat /usr/lib/systemd/system/harbor-ui.service [Unit] Description=Harbor UI After=network.target [Service] EnvironmentFile=/apps/conf/harbor/ui/env ExecStart=/apps/svr/harbor/ui ExecReload=/bin/kill -HUP $MAINPID KillMode=process StandardOutput=syslog #日志采用syslog StandardError=syslog #日志采用syslog SyslogIdentifier=ui #日志标签 [Install] WantedBy=multi-user.target registry配置 cat /usr/lib/systemd/system/registry.service [Unit] Description=Harbor Registry After=network.target [Service] ExecStart=/apps/svr/harbor/registry serve /apps/conf/harbor/registry/config.yml ExecReload=/bin/kill -HUP $MAINPID KillMode=process StandardOutput=syslog #日志采用syslog StandardError=syslog #日志采用syslog SyslogIdentifier=registry #日志标签 [Install] WantedBy=multi-user.target rsyslog配置 新增配置文件 /etc/rsyslog.d/harbor.conf if $programname == 'jobservice' then /apps/logs/harbor/jobservice/jobservice.test.com.log if $programname == 'jobservice' then ~ if $programname == 'ui' then /apps/logs/harbor/ui/ui.test.com.log if $programname == 'ui' then ~ if $programname == 'registry' then /apps/logs/harbor/registry/registry.test.com.log if $programname == 'registry' then ~
日志分开写后效果
[root@harborB ~]# tail -f /var/log/messages Nov 14 15:21:10 harborB systemd: Stopping Harbor Registry... Nov 14 15:21:10 harborB systemd: Started Harbor Registry. Nov 14 15:21:10 harborB systemd: Starting Harbor Registry... [root@harborB ~]# tailf /apps/logs/harbor/registry/registry.test.com.log Nov 14 15:21:10 harborB registry: time="2017-11-14T15:21:10.679673744+08:00" level=info msg="redis not configured" go.version=go1.8.3 instance.id=ece5a83c-6359-476e-8358-49bbb33ed441 service=registry version="v2.6.0+unknown" Nov 14 15:21:10 harborB registry: time="2017-11-14T15:21:10.699754153+08:00" level=info msg="using inmemory blob descriptor cache" go.version=go1.8.3 instance.id=ece5a83c-6359-476e-8358-49bbb33ed441 service=registry version="v2.6.0+unknown" Nov 14 15:21:10 harborB registry: time="2017-11-14T15:21:10.699862266+08:00" level=info msg="listening on [::]:5000" go.version=go1.8.3 instance.id=ece5a83c-6359-476e-8358-49bbb33ed441 service=registry version="v2.6.0+unknown"
systemd日志写入参考:https://stackoverflow.com/questions/37585758/how-to-redirect-output-of-systemd-service-to-a-file
相关文章推荐
- Server2008+SQL2008 日志读取代理器未运行 进程无法在“WIN-XXX”上执行“sp_replcmds”
- Server2008+SQL2008 日志读取代理器未运行 进程无法在“WIN-XXX”上执行“sp_replcmds”
- 关于VS220113无法启动IIS Express,系统日志:工作进程未能预加载 .Net 运行时版本 v4.0.30128问题
- SQL2008 日志读取代理器未运行 进程无法在“XXX”上执行 sp_replcmds
- Linux 简单shell创建自己的守护进程,自动重启,纪录进程运行状态,日志切割压缩
- Server2008+SQL2008 日志读取代理器未运行 进程无法在“WIN-XXX”上执行“sp_replcmds”
- 获取某应用客户端的日志文件_32_另一个程序正在使用此文件,进程无法访问
- Spark定制班第30课:集群运行模式下的Spark Streaming日志和Web监控台实战演示彻底解密
- 管理进程并设置计划运行的任务
- 【工具巧用】用killall -STOP保留多进程运行环境现场
- Linux 中显示所有正在运行的进程
- vc 防止程序重复运行(即只运行一个实例)并激活已运行进程和枚举进程及窗口
- serivce--取得正在运行的进程
- 十三、格式化输出指定用户的当前运行进程:
- linux 命令pidof - 找出正在运行程序的进程PID
- Linux 技巧:让进程在后台可靠运行的几种方法
- QT开发之QProcess进程运行外部程序
- Qt判断进程是否运行
- 同一个应用程序的不同Activity可以运行在不同的进程中么?
- Saltstack运行cmd.run重新启动tomcat后出现日志乱码(15)