zoukankan      html  css  js  c++  java
  • 从git源码安装zabbix-agent

    从网上随便找了几个image,都是从svn下载的代码,根本跑不了,于是自己重新做了个,从git上拿的源码,只是build出来的image有点大,有时间再优化了

    Dockerfile

    FROM centos:centos7
    MAINTAINER Ryan sun.ryan@acxiom.com
    
    ENV ZABBIX_VERSION=3.0.1 
        ZABBIX_SERVER=127.0.0.1 
    	ZABBIX_SOURCE=zabbix-agent.${ZABBIX_VERSION}.tar.gz 
        HOSTNAME=zabbix.agent 
        HOST_METADATA=zabbix.agent 
        CONFIG_FILE=/usr/local/etc/zabbix_agentd.conf
    
    RUN 
      yum clean all && yum makecache && 
      yum install --nogpgcheck -y automake gcc make iproute
    
    ADD ./${ZABBIX_SOURCE} /usr/local/src/
    
    WORKDIR /usr/local/src
    
    RUN 
      cd ./zabbix && 
      ./bootstrap.sh && 
      ./configure --enable-agent && 
      make install
    
    RUN 
      rpm -e --nodeps make gcc && 
      yum remove -y automake && 
      useradd -G wheel zabbix && 
      rm -rf  /usr/local/src/zabbix && 
      yum clean all
    
    COPY ./bootstrap.sh /
    
    RUN 
        chown -R zabbix:wheel /usr/local/etc/
    
    USER zabbix
    
    EXPOSE 10050
    
    ENTRYPOINT ["/bootstrap.sh"]
    

    bootstrap.sh

    #!/bin/sh
    set -eu
    export TERM=xterm
    
    # Bash Colors
    red=`tput setaf 1`
    green=`tput setaf 2`
    yellow=`tput setaf 3`
    white=`tput setaf 7`
    bold=`tput bold`
    reset=`tput sgr0`
    separator=$(echo && printf '=%.0s' {1..100} && echo)
    # Logging Finctions
    log() {
      if [[ "$@" ]]; then echo "${bold}${green}[LOG `date +'%T'`]${reset} $@"; else echo; fi
    }
    
    ### Update config file based on environment variables
    update_config() {
        log "Updating configuration file..."
        if [ ! -z "$ZABBIX_SERVER" ]; then
          log "Changing Zabbix Server IP to ${bold}${white}${ZABBIX_SERVER}${reset}"
          sed -i 's/^[# ]*Server=.*$/Server='$ZABBIX_SERVER'/g' ${TARGET_CONFIG_FILE}
        fi
        if [ ! -z "$HOSTNAME" ]; then
          log "Changing Zabbix Hostname to ${bold}${white}${HOSTNAME}${reset}."
          sed -i 's/^[# ]*Hostname=.*$/Hostname='$HOSTNAME'/g' ${TARGET_CONFIG_FILE}
        fi
        if [ ! -z "$HOST_METADATA" ]; then
          log "Changing Zabbix Host Metadata to ${bold}${white}${HOST_METADATA}${reset}."
          sed -i 's/^[# ]*HostMetadata=.*$/HostMetadata='$HOST_METADATA'/g' ${TARGET_CONFIG_FILE}
        fi
        log "Config updated"
    }
    print_config() {
      log "Current Zabbix Agent config:"
      printf '=%.0s' {1..100} && echo
      cat ${TARGET_CONFIG_FILE}
      echo ""
      printf '=%.0s' {1..100} && echo
    }
    start() {
        log "Starting Zabbix Agent using configuration file: ${TARGET_CONFIG_FILE}"
        print_config
        zabbix_agentd -f -c ${TARGET_CONFIG_FILE}
    }
    
    # Use the default config file if not set by an environment variable
    if [ -z "$CONFIG_FILE" ]; then
      SRC_CONFIG_FILE="/usr/local/etc/zabbix_agentd.conf"
    else
      SRC_CONFIG_FILE="$CONFIG_FILE"
    fi
    
    # This is the actual config file used, containing changes implied by environment variables
    TARGET_CONFIG_FILE=$(mktemp)
    log "Loading config: ${SRC_CONFIG_FILE}"
    cp "$SRC_CONFIG_FILE" "$TARGET_CONFIG_FILE"
    
    update_config
    start
    

      

      

  • 相关阅读:
    /、./和../的区别
    【Java基础】-- FileUtils工具类常用方法
    【数据库】-- MySQL中比like更高效的三个写法
    【Java框架】-- SpringBoot大文件RestTemplate下载解决方案
    记一次gitlab代码仓清空还原复盘
    聊聊如何实现一个带有拦截器功能的SPI
    聊聊如何实现一个支持键值对的SPI
    类实例对象的class类型却不属于该类,何解?
    exe打包成安装文件(界面美观)
    linux系统软件启动sh脚本
  • 原文地址:https://www.cnblogs.com/ryansunyu/p/8058764.html
Copyright © 2011-2022 走看看