mirror of
https://github.com/zabbix/zabbix-docker.git
synced 2025-08-09 08:35:05 +02:00
Added Oracle Linux 8 images instead of CentOS 8
This commit is contained in:
1
java-gateway/ol/.dockerignore
Normal file
1
java-gateway/ol/.dockerignore
Normal file
@ -0,0 +1 @@
|
||||
build.sh
|
98
java-gateway/ol/Dockerfile
Normal file
98
java-gateway/ol/Dockerfile
Normal file
@ -0,0 +1,98 @@
|
||||
FROM oraclelinux:8-slim
|
||||
|
||||
LABEL org.opencontainers.image.title="Zabbix Java Gateway" \
|
||||
org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
|
||||
org.opencontainers.image.vendor="Zabbix LLC" \
|
||||
org.opencontainers.image.url="https://zabbix.com/" \
|
||||
org.opencontainers.image.description="Zabbix Java Gateway performs native support for monitoring JMX applications" \
|
||||
org.opencontainers.image.licenses="GPL v2.0"
|
||||
|
||||
STOPSIGNAL SIGTERM
|
||||
|
||||
RUN set -eux && \
|
||||
groupadd --system --gid 1995 zabbix && \
|
||||
useradd \
|
||||
--system --comment "Zabbix monitoring system" \
|
||||
-g zabbix -G root \
|
||||
--uid 1997 \
|
||||
--shell /sbin/nologin \
|
||||
--home-dir /var/lib/zabbix/ \
|
||||
zabbix && \
|
||||
mkdir -p /etc/zabbix/ && \
|
||||
mkdir -p /usr/sbin/zabbix_java/ && \
|
||||
mkdir -p /usr/sbin/zabbix_java/ext_lib/ && \
|
||||
INSTALL_PKGS="java-1.8.0-openjdk-headless \
|
||||
findutils" && \
|
||||
microdnf -y install --setopt=install_weak_deps=0 --best \
|
||||
--nodocs ${INSTALL_PKGS} && \
|
||||
microdnf -y clean all && \
|
||||
rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \
|
||||
rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki
|
||||
|
||||
ARG MAJOR_VERSION=5.0
|
||||
ARG ZBX_VERSION=${MAJOR_VERSION}.12
|
||||
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
|
||||
|
||||
ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES}
|
||||
|
||||
LABEL org.opencontainers.image.documentation="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \
|
||||
org.opencontainers.image.version="${ZBX_VERSION}" \
|
||||
org.opencontainers.image.source="${ZBX_SOURCES}"
|
||||
|
||||
COPY ["conf/etc/", "/etc/"]
|
||||
|
||||
RUN set -eux && REPOLIST="ol8_baseos_latest,ol8_appstream" && \
|
||||
INSTALL_PKGS="autoconf \
|
||||
automake \
|
||||
java-1.8.0-openjdk-devel \
|
||||
make \
|
||||
git \
|
||||
gcc" && \
|
||||
microdnf -y install --setopt=install_weak_deps=0 --best \
|
||||
--nodocs dnf && \
|
||||
dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \
|
||||
--setopt=tsflags=nodocs ${INSTALL_PKGS} && \
|
||||
cd /tmp/ && \
|
||||
git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch ${ZBX_VERSION} --depth 1 --single-branch zabbix-${ZBX_VERSION} && \
|
||||
cd /tmp/zabbix-${ZBX_VERSION} && \
|
||||
zabbix_revision=`git rev-parse --short HEAD` && \
|
||||
sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \
|
||||
sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java && \
|
||||
./bootstrap.sh && \
|
||||
./configure \
|
||||
--datadir=/usr/lib \
|
||||
--libdir=/usr/lib/zabbix \
|
||||
--sysconfdir=/etc/zabbix \
|
||||
--prefix=/usr \
|
||||
--enable-java \
|
||||
--silent && \
|
||||
make -j"$(nproc)" -s && \
|
||||
mkdir -p /usr/sbin/zabbix_java/ && \
|
||||
cp -r src/zabbix_java/bin /usr/sbin/zabbix_java/ && \
|
||||
cp -r src/zabbix_java/lib /usr/sbin/zabbix_java/ && \
|
||||
rm -rf /usr/sbin/zabbix_java/lib/*.xml && \
|
||||
cd /tmp/ && \
|
||||
rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \
|
||||
dnf -y history undo last && \
|
||||
dnf -y clean all && \
|
||||
microdnf -y remove dnf && \
|
||||
chown --quiet -R zabbix:root /etc/zabbix/ /usr/sbin/zabbix_java/ && \
|
||||
chgrp -R 0 /etc/zabbix/ /usr/sbin/zabbix_java/ && \
|
||||
chmod -R g=u /etc/zabbix/ /usr/sbin/zabbix_java/ && \
|
||||
rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \
|
||||
rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki
|
||||
|
||||
EXPOSE 10052/TCP
|
||||
|
||||
WORKDIR /var/lib/zabbix
|
||||
|
||||
VOLUME ["/usr/sbin/zabbix_java/ext_lib"]
|
||||
|
||||
COPY ["conf/usr/sbin/zabbix_java_gateway", "/usr/sbin/"]
|
||||
COPY ["docker-entrypoint.sh", "/usr/bin/"]
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
|
||||
USER 1997
|
||||
|
||||
CMD ["/usr/sbin/zabbix_java_gateway"]
|
139
java-gateway/ol/README.md
Normal file
139
java-gateway/ol/README.md
Normal file
@ -0,0 +1,139 @@
|
||||

|
||||
|
||||
# What is Zabbix?
|
||||
|
||||
Zabbix is an enterprise-class open source distributed monitoring solution.
|
||||
|
||||
Zabbix is software that monitors numerous parameters of a network and the health and integrity of servers. Zabbix uses a flexible notification mechanism that allows users to configure e-mail based alerts for virtually any event. This allows a fast reaction to server problems. Zabbix offers excellent reporting and data visualisation features based on the stored data. This makes Zabbix ideal for capacity planning.
|
||||
|
||||
For more information and related downloads for Zabbix components, please visit https://hub.docker.com/u/zabbix/ and https://zabbix.com
|
||||
|
||||
# What is Zabbix Java Gateway?
|
||||
|
||||
Zabbix Java Gateway performs native support for monitoring JMX applications. Java gateway accepts incoming connection from Zabbix server or Zabbix proxy and can only be used as a "passive proxy".
|
||||
|
||||
# Zabbix Java Gateway images
|
||||
|
||||
These are the only official Zabbix Java Gateway Docker images. They are based on Alpine Linux v3.12, Ubuntu 20.04 (focal) and CentOS 8 images. The available versions of Zabbix Java Gateway are:
|
||||
|
||||
Zabbix Java Gateway 3.0 (tags: alpine-3.0-latest, ubuntu-3.0-latest, centos-3.0-latest) (unsupported)
|
||||
Zabbix Java Gateway 3.0.* (tags: alpine-3.0.*, ubuntu-3.0.*, centos-3.0.*) (unsupported)
|
||||
Zabbix Java Gateway 3.2 (tags: alpine-3.2-latest, ubuntu-3.2-latest, centos-3.2-latest) (unsupported)
|
||||
Zabbix Java Gateway 3.2.* (tags: alpine-3.2.*, ubuntu-3.2.*, centos-3.2.*) (unsupported)
|
||||
Zabbix Java Gateway 3.4 (tags: alpine-3.4-latest, ubuntu-3.4-latest, centos-3.4-latest) (unsupported)
|
||||
Zabbix Java Gateway 3.4.* (tags: alpine-3.4.*, ubuntu-3.4.*, centos-3.4.*) (unsupported)
|
||||
Zabbix Java Gateway 4.0 (tags: alpine-4.0-latest, ubuntu-4.0-latest, centos-4.0-latest)
|
||||
Zabbix Java Gateway 4.0.* (tags: alpine-4.0.*, ubuntu-4.0.*, centos-4.0.*)
|
||||
Zabbix Java Gateway 4.2 (tags: alpine-4.2-latest, ubuntu-4.2-latest, centos-4.2-latest) (unsupported)
|
||||
Zabbix Java Gateway 4.2.* (tags: alpine-4.2.*, ubuntu-4.2.*, centos-4.2.*) (unsupported)
|
||||
Zabbix Java Gateway 4.4 (tags: alpine-4.4-latest, ubuntu-4.4-latest, centos-4.4-latest) (unsupported)
|
||||
Zabbix Java Gateway 4.4.* (tags: alpine-4.4.*, ubuntu-4.4.*, centos-4.4.*) (unsupported)
|
||||
Zabbix Java Gateway 5.0 (tags: alpine-5.0-latest, ubuntu-5.0-latest, centos-5.0-latest)
|
||||
Zabbix Java Gateway 5.0.* (tags: alpine-5.0.*, ubuntu-5.0.*, centos-5.0.*)
|
||||
Zabbix Java Gateway 5.2 (tags: alpine-5.2-latest, ubuntu-5.2-latest, centos-5.2-latest)
|
||||
Zabbix Java Gateway 5.2.* (tags: alpine-5.2.*, ubuntu-5.2.*, centos-5.2.*)
|
||||
Zabbix Java Gateway 5.4 (tags: alpine-5.4-latest, ubuntu-5.4-latest, centos-5.4-latest, alpine-latest, ubuntu-latest, centos-latest, latest)
|
||||
Zabbix Java Gateway 5.4.* (tags: alpine-5.4.*, ubuntu-5.4.*, centos-5.4.*)
|
||||
Zabbix Java Gateway 6.0 (tags: alpine-trunk, ubuntu-trunk, centos-trunk)
|
||||
|
||||
Images are updated when new releases are published. The image with ``latest`` tag is based on Alpine Linux.
|
||||
|
||||
# How to use this image
|
||||
|
||||
## Start `zabbix-java-gateway`
|
||||
|
||||
Start a Zabbix Java Gateway container as follows:
|
||||
|
||||
docker run --name some-zabbix-java-gateway -d zabbix/zabbix-java-gateway:tag
|
||||
|
||||
Where `some-zabbix-java-gateway` is the name you want to assign to your container and `tag` is the tag specifying the version you want. See the list above for relevant tags, or look at the [full list of tags](https://hub.docker.com/r/zabbix/zabbix-java-gateway/tags/).
|
||||
|
||||
## Linking the container to Zabbix server or Zabbix proxy
|
||||
|
||||
docker run --name some-zabbix-java-gateway --link some-zabbix-server:zabbix-server -d zabbix/zabbix-java-gateway:tag
|
||||
|
||||
## Container shell access and viewing Zabbix Java Gateway logs
|
||||
|
||||
The `docker exec` command allows you to run commands inside a Docker container. The following command line will give you a bash shell inside your `zabbix-java-gateway` container:
|
||||
|
||||
```console
|
||||
$ docker exec -ti some-zabbix-java-gateway /bin/bash
|
||||
```
|
||||
|
||||
The Zabbix Java Gateway log is available through Docker's container log:
|
||||
|
||||
```console
|
||||
$ docker logs some-zabbix-java-gateway
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
When you start the `zabbix-java-gateway` image, you can adjust the configuration of the Zabbix Java Gateway by passing one or more environment variables on the `docker run` command line.
|
||||
|
||||
### `ZBX_START_POLLERS`
|
||||
|
||||
This variable is specified amount of pollers. By default, value is `5`.
|
||||
|
||||
### `ZBX_TIMEOUT`
|
||||
|
||||
This variable is used to specify timeout for outgoing connections. By default, value is `3`.
|
||||
|
||||
### `ZBX_DEBUGLEVEL`
|
||||
|
||||
This variable is used to specify log level. By default, value is `info`. The variable allows next values: ``trace``, ``debug``, ``info``, ``want``, ``error``, ``all``, ``off``
|
||||
|
||||
### `ZBX_PROPERTIES_FILE`
|
||||
|
||||
Name of properties file. Can be used to set additional properties using a key-value format in such a way that they are not visible on a command line or to overwrite existing ones.
|
||||
|
||||
### `ZABBIX_OPTIONS`
|
||||
|
||||
Additional arguments for Zabbix Java Gateway. Useful to enable additional libraries and features.
|
||||
|
||||
## Allowed volumes for the Zabbix Java Gateway container
|
||||
|
||||
### ``/usr/sbin/zabbix_java/ext_lib``
|
||||
|
||||
The volume allows include additional JAR files to extend allowed protocols for Zabbix Java Gateway.
|
||||
|
||||
# The image variants
|
||||
|
||||
The `zabbix-java-gateway` images come in many flavors, each designed for a specific use case.
|
||||
|
||||
## `zabbix-java-gateway:ubuntu-<version>`
|
||||
|
||||
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
|
||||
|
||||
## `zabbix-java-gateway:alpine-<version>`
|
||||
|
||||
This image is based on the popular [Alpine Linux project](http://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
|
||||
|
||||
This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
|
||||
|
||||
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
|
||||
|
||||
# Supported Docker versions
|
||||
|
||||
This image is officially supported on Docker version 1.12.0.
|
||||
|
||||
Support for older versions (down to 1.6) is provided on a best-effort basis.
|
||||
|
||||
Please see [the Docker installation documentation](https://docs.docker.com/installation/) for details on how to upgrade your Docker daemon.
|
||||
|
||||
# User Feedback
|
||||
|
||||
## Documentation
|
||||
|
||||
Documentation for this image is stored in the [`java-gateway/` directory](https://github.com/zabbix/zabbix-docker/tree/current/java-gateway) of the [`zabbix/zabbix-docker` GitHub repo](https://github.com/zabbix/zabbix-docker/). Be sure to familiarize yourself with the [repository's `README.md` file](https://github.com/zabbix/zabbix-docker/blob/master/README.md) before attempting a pull request.
|
||||
|
||||
## Issues
|
||||
|
||||
If you have any problems with or questions about this image, please contact us through a [GitHub issue](https://github.com/zabbix/zabbix-docker/issues).
|
||||
|
||||
### Known issues
|
||||
|
||||
## Contributing
|
||||
|
||||
You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.
|
||||
|
||||
Before you start to code, we recommend discussing your plans through a [GitHub issue](https://github.com/zabbix/zabbix-docker/issues), especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.
|
1
java-gateway/ol/build.sh
Symbolic link
1
java-gateway/ol/build.sh
Symbolic link
@ -0,0 +1 @@
|
||||
../../build.sh
|
@ -0,0 +1,15 @@
|
||||
<configuration scan="true" scanPeriod="15 seconds">
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
|
||||
</appender>
|
||||
|
||||
<root level="info">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
35
java-gateway/ol/conf/usr/sbin/zabbix_java_gateway
Executable file
35
java-gateway/ol/conf/usr/sbin/zabbix_java_gateway
Executable file
@ -0,0 +1,35 @@
|
||||
|
||||
JAVA=${JAVA:-"/usr/bin/java"}
|
||||
|
||||
JAVA_OPTIONS="-server $JAVA_OPTIONS"
|
||||
JAVA_OPTIONS="$JAVA_OPTIONS -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml"
|
||||
|
||||
cd /usr/sbin/zabbix_java
|
||||
|
||||
CLASSPATH="lib"
|
||||
for jar in `find lib bin ext_lib -name "*.jar"`; do
|
||||
CLASSPATH="$CLASSPATH:$jar"
|
||||
done
|
||||
|
||||
if [ -n "$ZBX_LISTEN_IP" ]; then
|
||||
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.listenIP=$ZBX_LISTEN_IP"
|
||||
fi
|
||||
if [ -n "$ZBX_LISTEN_PORT" ]; then
|
||||
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.listenPort=$ZBX_LISTEN_PORT"
|
||||
fi
|
||||
if [ -n "$ZBX_START_POLLERS" ]; then
|
||||
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.startPollers=$ZBX_START_POLLERS"
|
||||
fi
|
||||
if [ -n "$ZBX_TIMEOUT" ]; then
|
||||
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.timeout=$ZBX_TIMEOUT"
|
||||
fi
|
||||
if [ -n "$ZBX_PROPERTIES_FILE" ]; then
|
||||
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.propertiesFile=$ZBX_PROPERTIES_FILE"
|
||||
fi
|
||||
|
||||
tcp_timeout=${ZBX_TIMEOUT:=3}000
|
||||
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dsun.rmi.transport.tcp.responseTimeout=$tcp_timeout"
|
||||
|
||||
COMMAND_LINE="$JAVA $JAVA_OPTIONS -classpath $CLASSPATH $ZABBIX_OPTIONS com.zabbix.gateway.JavaGateway"
|
||||
|
||||
exec $COMMAND_LINE
|
46
java-gateway/ol/docker-entrypoint.sh
Executable file
46
java-gateway/ol/docker-entrypoint.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o pipefail
|
||||
|
||||
set +e
|
||||
|
||||
# Script trace mode
|
||||
if [ "${DEBUG_MODE,,}" == "true" ]; then
|
||||
set -o xtrace
|
||||
fi
|
||||
|
||||
# Default directories
|
||||
# Configuration files directory
|
||||
ZABBIX_ETC_DIR="/etc/zabbix"
|
||||
|
||||
prepare_java_gateway_config() {
|
||||
echo "** Preparing Zabbix Java Gateway log configuration file"
|
||||
|
||||
ZBX_GATEWAY_CONFIG=$ZABBIX_ETC_DIR/zabbix_java_gateway_logback.xml
|
||||
|
||||
if [ -n "${ZBX_DEBUGLEVEL}" ]; then
|
||||
echo "Updating $ZBX_GATEWAY_CONFIG 'DebugLevel' parameter: '${ZBX_DEBUGLEVEL}'... updated"
|
||||
if [ -f "$ZBX_GATEWAY_CONFIG" ]; then
|
||||
sed -i -e "/^.*<root level=/s/=.*/=\"${ZBX_DEBUGLEVEL}\">/" "$ZBX_GATEWAY_CONFIG"
|
||||
else
|
||||
echo "**** Zabbix Java Gateway log configuration file '$ZBX_GATEWAY_CONFIG' not found"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
prepare_java_gateway() {
|
||||
echo "** Preparing Zabbix Java Gateway"
|
||||
|
||||
prepare_java_gateway_config
|
||||
}
|
||||
|
||||
#################################################
|
||||
|
||||
if [ "$1" == '/usr/sbin/zabbix_java_gateway' ]; then
|
||||
prepare_java_gateway
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
|
||||
#################################################
|
Reference in New Issue
Block a user