From 6a988bab74a859005a590dfd90f360013f350ce3 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 11 Mar 2024 20:10:07 +0800 Subject: [PATCH 1/2] add grafana loki image --- loki/2.9.5/22.03-lts-sp3/Dockerfile | 34 ++++++++ loki/2.9.5/22.03-lts-sp3/local-config.yaml | 42 ++++++++++ loki/README.md | 30 +++++++ loki/doc/image-info.yml | 89 +++++++++++++++++++++ loki/doc/picture/logo.png | Bin 0 -> 16836 bytes loki/meta.yml | 2 + prometheus/README.md | 1 + 7 files changed, 198 insertions(+) create mode 100644 loki/2.9.5/22.03-lts-sp3/Dockerfile create mode 100644 loki/2.9.5/22.03-lts-sp3/local-config.yaml create mode 100644 loki/README.md create mode 100644 loki/doc/image-info.yml create mode 100644 loki/doc/picture/logo.png create mode 100644 loki/meta.yml diff --git a/loki/2.9.5/22.03-lts-sp3/Dockerfile b/loki/2.9.5/22.03-lts-sp3/Dockerfile new file mode 100644 index 00000000..9f1230e8 --- /dev/null +++ b/loki/2.9.5/22.03-lts-sp3/Dockerfile @@ -0,0 +1,34 @@ +ARG BASE=openeuler/openeuler:22.03-lts-sp3 +FROM ${BASE} + +ARG TARGETARCH +ARG BUILDARCH +ARG VERSION=2.9.5 + +RUN yum -y update && \ + yum -y install wget && \ + yum clean all + +RUN if [ "$TARGETARCH" = "amd64" ]; then \ + BUILDARCH="x86_64"; \ + elif [ "$TARGETARCH" = "arm64" ]; then \ + BUILDARCH="aarch64"; \ + fi && \ + wget -O grafana-logcli.rpm https://github.com/grafana/loki/releases/download/v${VERSION}/logcli-${VERSION}.${BUILDARCH}.rpm && \ + wget -O grafana-loki.rpm https://github.com/grafana/loki/releases/download/v${VERSION}/loki-${VERSION}.${BUILDARCH}.rpm && \ + wget -O grafana-promtail.rpm https://github.com/grafana/loki/releases/download/v${VERSION}/promtail-${VERSION}.${BUILDARCH}.rpm && \ + yum -y install grafana-loki.rpm grafana-promtail.rpm grafana-logcli.rpm && \ + rm -rf grafana-loki.rpm grafana-promtail.rpm grafana-logcli.rpm + +COPY local-config.yaml /etc/loki/local-config.yaml + +RUN groupadd -g 10001 loki && \ + adduser -u 10001 -g loki loki && \ + mkdir -p /loki/rules && \ + mkdir -p /loki/rules-temp && \ + chown -R loki:loki /etc/loki /loki + +USER 10001 +EXPOSE 3100 +ENTRYPOINT [ "loki" ] +CMD ["-config.file=/etc/loki/local-config.yaml"] diff --git a/loki/2.9.5/22.03-lts-sp3/local-config.yaml b/loki/2.9.5/22.03-lts-sp3/local-config.yaml new file mode 100644 index 00000000..119b9395 --- /dev/null +++ b/loki/2.9.5/22.03-lts-sp3/local-config.yaml @@ -0,0 +1,42 @@ +auth_enabled: false + +server: + http_listen_port: 3100 + +common: + instance_addr: 127.0.0.1 + path_prefix: /loki + storage: + filesystem: + chunks_directory: /loki/chunks + rules_directory: /loki/rules + replication_factor: 1 + ring: + kvstore: + store: inmemory + +schema_config: + configs: + - from: 2020-10-24 + store: tsdb + object_store: filesystem + schema: v12 + index: + prefix: index_ + period: 24h + +ruler: + alertmanager_url: http://localhost:9093 + +# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration +# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/ +# +# Statistics help us better understand how Loki is used, and they show us performance +# levels for most users. This helps us prioritize features and documentation. +# For more information on what's sent, look at +# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go +# Refer to the buildReport method to see what goes into a report. +# +# If you would like to disable reporting, uncomment the following lines: +#analytics: +# reporting_enabled: false \ No newline at end of file diff --git a/loki/README.md b/loki/README.md new file mode 100644 index 00000000..8ab69503 --- /dev/null +++ b/loki/README.md @@ -0,0 +1,30 @@ +# Loki + +# Quick reference + +- The official Loki docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/loki:$TAG" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +2. Run: +```shell +docker run -d -p 3100:3100 openeuler/loki:$TAG +``` + +# Supported tags and respective Dockerfile links + +- 2.9.5-oe2203sp3: loki v2.9.5, openEuler 22.03-LTS-SP3 + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. diff --git a/loki/doc/image-info.yml b/loki/doc/image-info.yml new file mode 100644 index 00000000..75f939c5 --- /dev/null +++ b/loki/doc/image-info.yml @@ -0,0 +1,89 @@ +name: loki +category: cloud +description: Loki是一个受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。它的设计非常经济高效且易于操作。它不索引日志的内容,而是为每个日志流建立一组标签。 +environment: | + 本应用以容器镜像的方式供用户使用,运行于预置docker的Linux环境。Docker的推荐安装方式如下: + ## apt安装 + ### 1.更新系统软件包依赖 + ``` + sudo spt update + sudo apt install ca-certificates curl gnupg lsb-release + ``` + ### 2.添加Docker官方GPG密钥 + ``` + sudo mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + sudo chmod a+r /etc/apt/keyrings/docker.gpg + ``` + ### 3.添加Docker官方APT源 + ``` + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + ``` + ### 4.再次更新软件包索引 + ``` + sudo apt update + ``` + ### 5.安装Docker + ``` + sudo apt install docker-ce docker-ce-cli containerd.io + ``` + + ## yum安装 + ### 1.安装yum-utils + ``` + sudo yum install -y yum-utils + ``` + ### 2.添加Docker源 + ``` + sudo yum-config-manager \ + > --add-repo \ + > https://download.docker.com/linux/centos/docker-ce.repo + ``` + ### 3.安装Docker + ``` + sudo yum install -y docker-ce docker-ce-cli containerd.io + ``` + + 注意,在openEuler环境安装docker时,可执行如下命令一键安装 + ``` + yum install -y docker + ``` + + ## 脚本安装 + ### 1.下载安装脚本 + ``` + curl -fsSL https://get.docker.com -o get-docker.sh + ``` + ### 2.使用root权限执行脚本 + ``` + sudo sh get-docker.sh + ``` + 使用脚本安装方式时,如果用户要指定安装的docker版本,需要自行修改`get-docker.sh`的源码内容。 + + ## 验证 + ``` + sudo docker run hello-world + ``` + +download: | + 获取容器镜像 + ``` + docker pull openeuler/loki:{TAG} + ``` + +install: | + 启动容器 + ``` + docker run --name loki -p 3100:3100 openeuler/loki:{TAG} + ``` + 用户可根据自身需求,自定义启动选项。 + +license: AGPL-3.0 license +similar_packages: + - Prometheus: Prometheus是一个开源的系统监控和警报工具。它最初由SoundCloud开发,现已成为CNCF(Cloud Native Computing Foundation)的毕业项目之一。Prometheus专门设计用于处理大规模分布式系统的监控数据,并提供了灵活的查询语言和强大的警报功能。 + - Logstash: Logstash是一个开源的数据收集、转换和传输工具,它可以用于收集各种来源的数据,包括日志数据,并将其发送到不同的目标。Logstash是ELK Stack中的一部分,与Elasticsearch和Kibana结合使用,构建一个完整的日志收集、存储和可视化解决方案。。 + - Fluentd: Fluentd是一个开源的数据收集和转发工具,用于收集、处理和传输各种类型的数据。它具有高度可定制和可扩展的特点,被广泛用于日志收集、流式处理和数据管道的构建。 + - Vector: Vector是一个开源的数据采集工具,旨在高效、可靠地收集、转换和传输日志和指标数据。它专注于提供简单、轻量级的解决方案,适用于各种规模的环境。 +dependency: + - Prometheus + - Grafana \ No newline at end of file diff --git a/loki/doc/picture/logo.png b/loki/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..071108a7bd99f5d1f6f6f7724e82cfc1dc15763a GIT binary patch literal 16836 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 literal 0 HcmV?d00001 diff --git a/loki/meta.yml b/loki/meta.yml new file mode 100644 index 00000000..cc7160e0 --- /dev/null +++ b/loki/meta.yml @@ -0,0 +1,2 @@ +2.9.5-oe2203sp3: + - loki/2.9.5/22.03-lts-sp3/Dockerfile \ No newline at end of file diff --git a/prometheus/README.md b/prometheus/README.md index e02293b9..684690d0 100644 --- a/prometheus/README.md +++ b/prometheus/README.md @@ -25,6 +25,7 @@ docker run --name my_prometheus -d -p 9090:9090 openeuler/prometheus:$VERSION # Supported tags and respective Dockerfile links - 2.20.0-22.03-lts: prometheus v2.20.0, openEuler 22.03 LTS +- 2.50.1-oe2203sp3: prometheus v2.50.1, openEuler 22.03 LTS SP3 ## Operating System Linux/Unix, ARM64 or x86-64 architecture. -- Gitee From 0f3638671546eeb31e39175b63c26bb267c13750 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 11 Mar 2024 20:23:03 +0800 Subject: [PATCH 2/2] Add new version image for prometheus. --- prometheus/2.50.1/22.03-lts-sp3/Dockerfile | 34 ++++++++ prometheus/doc/.DS_Store | Bin 0 -> 6148 bytes prometheus/doc/image-info.yml | 89 +++++++++++++++++++++ prometheus/doc/picture/logo.jpeg | Bin 0 -> 48065 bytes prometheus/meta.yml | 4 + 5 files changed, 127 insertions(+) create mode 100644 prometheus/2.50.1/22.03-lts-sp3/Dockerfile create mode 100644 prometheus/doc/.DS_Store create mode 100644 prometheus/doc/image-info.yml create mode 100644 prometheus/doc/picture/logo.jpeg create mode 100644 prometheus/meta.yml diff --git a/prometheus/2.50.1/22.03-lts-sp3/Dockerfile b/prometheus/2.50.1/22.03-lts-sp3/Dockerfile new file mode 100644 index 00000000..d3443b17 --- /dev/null +++ b/prometheus/2.50.1/22.03-lts-sp3/Dockerfile @@ -0,0 +1,34 @@ +ARG BASE=openeuler/openeuler:22.03-lts-sp3 +FROM ${BASE} + +ARG TARGETARCH +ARG VERSION=2.50.1 + +RUN yum -y update && yum -y install wget && yum clean all && \ + wget -O prometheus.tar.gz https://github.com/prometheus/prometheus/releases/download/v${VERSION}/prometheus-${VERSION}.linux-${TARGETARCH}.tar.gz && \ + mkdir /prometheus && tar -zxvf prometheus.tar.gz -C /prometheus --strip-components 1 && \ + rm -f prometheus.tar.gz + +RUN mkdir -p /etc/prometheus/ /usr/share/prometheus/ && \ + mv /prometheus/prometheus /bin/prometheus && \ + mv /prometheus/promtool /bin/promtool && \ + mv /prometheus/prometheus.yml /etc/prometheus/prometheus.yml && \ + mv /prometheus/console_libraries/ /usr/share/prometheus/console_libraries/ && \ + mv /prometheus/consoles/ /usr/share/prometheus/consoles/ && \ + mv /prometheus/LICENSE /LICENSE && \ + mv /prometheus/NOTICE /NOTICE && \ + rm -rf /prometheus/ + +WORKDIR /prometheus +RUN groupadd -r prometheus && useradd -r -g prometheus prometheus && \ + ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ && \ + chown -R prometheus:prometheus /etc/prometheus /prometheus + +USER prometheus +EXPOSE 9090 +VOLUME [ "/prometheus" ] +ENTRYPOINT [ "/bin/prometheus" ] +CMD [ "--config.file=/etc/prometheus/prometheus.yml", \ + "--storage.tsdb.path=/prometheus", \ + "--web.console.libraries=/usr/share/prometheus/console_libraries", \ + "--web.console.templates=/usr/share/prometheus/consoles" ] diff --git a/prometheus/doc/.DS_Store b/prometheus/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cbd4363636d7d4f5b884460ca8c222c4bd489545 GIT binary patch literal 6148 zcmeHKOHRWu5S@WaL}Jq=OJAWk2vs;iFM!%2Kx&i-wF`E>3kTp7EIAN6-t!D7p;@p% z2%#Cteq+za&XZz$L`0W|?LuTOA{81@sZ0o`Cru~rJOgUUagYbO+1)Nyn{Fb}U!3CJ z&!m@o*~nf7`)~WfcE5PEUDK?0-5MU1JUzcXzP?-@=V`m`H@x~gvNc+5uyClsKrj#t z1Ovgqk28Qfn^K({Mjs3W1Hr&213VuR8nJfFhUMr$S4sdNpV392vzA~?a;zP*AuJHJ zP@sjXml$f{m{0CkJ7z-*7xm&pedUkhMa$~QpNhL^Z5Vwp5DbhNIJM!N_x}}snaLu5 z91^2oAQ<>(4Ct&`HA{Sy->pZV$GbM6U87Oxm#ILYj~)RS@Eo})MzbgC@T(oOA+vD4 RgahLtPzZ@G82AMS-T|kLFHQge literal 0 HcmV?d00001 diff --git a/prometheus/doc/image-info.yml b/prometheus/doc/image-info.yml new file mode 100644 index 00000000..abfb3916 --- /dev/null +++ b/prometheus/doc/image-info.yml @@ -0,0 +1,89 @@ +name: Prometheus +category: cloud +description: Prometheus是云原生计算基金会(CNCF)项目,是一个系统和服务监控系统。它以给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并可以在观察到指定条件时触发警报。 +environment: | + 本应用以容器镜像的方式供用户使用,运行于预置docker的Linux环境。Docker的推荐安装方式如下: + ## apt安装 + ### 1.更新系统软件包依赖 + ``` + sudo spt update + sudo apt install ca-certificates curl gnupg lsb-release + ``` + ### 2.添加Docker官方GPG密钥 + ``` + sudo mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + sudo chmod a+r /etc/apt/keyrings/docker.gpg + ``` + ### 3.添加Docker官方APT源 + ``` + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + ``` + ### 4.再次更新软件包索引 + ``` + sudo apt update + ``` + ### 5.安装Docker + ``` + sudo apt install docker-ce docker-ce-cli containerd.io + ``` + + ## yum安装 + ### 1.安装yum-utils + ``` + sudo yum install -y yum-utils + ``` + ### 2.添加Docker源 + ``` + sudo yum-config-manager \ + > --add-repo \ + > https://download.docker.com/linux/centos/docker-ce.repo + ``` + ### 3.安装Docker + ``` + sudo yum install -y docker-ce docker-ce-cli containerd.io + ``` + + 注意,在openEuler环境安装docker时,可执行如下命令一键安装 + ``` + yum install -y docker + ``` + + ## 脚本安装 + ### 1.下载安装脚本 + ``` + curl -fsSL https://get.docker.com -o get-docker.sh + ``` + ### 2.使用root权限执行脚本 + ``` + sudo sh get-docker.sh + ``` + 使用脚本安装方式时,如果用户要指定安装的docker版本,需要自行修改`get-docker.sh`的源码内容。 + + ## 验证 + ``` + sudo docker run hello-world + ``` + +download: | + 获取容器镜像 + ``` + docker pull openeuler/prometheus:{TAG} + ``` + +install: | + 启动容器 + ``` + docker run --name prometheus -p 9090:9090 openeuler/prometheus:{TAG} + ``` + 用户可根据自身需求,自定义启动选项。 + +license: Apache-2.0 license +similar_packages: + - Grafana: Grafana是一种流行的开源数据可视化工具,可以与多个数据源集成,包括Prometheus。它可以通过可视化仪表板展示和分析Prometheus收集的数据。 + - InfluxDB: InfluxDB是一种开源时间序列数据库,专门用于处理和存储大量时间序列数据,如机器指标、事件日志等。和Prometheus类似,InfluxDB也具备数据采集和查询功能。 + - Nagios: Nagios是一种广泛使用的开源网络监控系统,可以监测网络设备、服务器和应用程序的运行状况。与Prometheus不同的是,Nagios主要基于主动式监控,而不是Prometheus的基于抓取的方式。 + - Zabbix: Zabbix是一种功能强大的开源网络监控系统,可以监控各种网络设备、服务器和应用程序。它提供了多种监控方式,包括主动和被动式监控,并支持自定义的监控和警报设置。 + - Elastic Stack: Elastic Stack(前身是ELK Stack)是一个集成了Elasticsearch、Logstash和Kibana的解决方案,能够处理和分析大量的日志和指标数据。Elasticsearch可以用于存储和查询数据,Logstash用于数据采集和清洗,Kibana则提供了数据可视化和仪表板功能。 +dependency: + - Go \ No newline at end of file diff --git a/prometheus/doc/picture/logo.jpeg b/prometheus/doc/picture/logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..23e759e63fafecae1a6ad0e0dfdf5ad81f9d856e GIT binary patch literal 48065 zcmdqJ2Ut_-w=Wz;u_A_U0Th%fB3-GDRA~`I2%P~03=ohOkg8*$!zjHZXn+8TbV5l4 zlqy{ap@iOR=)K-J|2EFK=bSs9Ip00s-8>I0l9jw=t#|KLerp}}91a7{YpUH>0~|SW z1fW6t0UY)LlmT={zg^#c)6uSD^vAwkC+X>r)1Nwd`t+%jr%s(d%Xs$mnR91Oonino zoMSwH9(exrSte$t^UO5*{I@ST^6is!$4=5dc>c_(GqhL#TyM}P7RJ^hj60Kk!> zbjOa<16d#af*v`+r1JSB^HniD>o-zAS+a2OxIB**zxNPg71KdtW9OAHfV#T9ecygf zIV!)PN(THQwW#{Kq_looA?>R#(?&e{ZQy^53jolcIClIb-O+FJ(gGf#jdb+b$F zk01YSdVe4IsuM9~4D8%fMNmVz(5+I(V1 z6QGq#?U39RG10N5(txi1pt-)@^5W0qMkvb?1}ki8oc=6zV9{<0DURS59Mrh*vf~L! zaaw>rLDeFAg(&6e9(TlfzM0(4x%1Xk^hNS2aHkQLx<^*u^U^*$l#y2cI?+nGFetG3 zK=?~p=*>8)W$eX6KxVgT2gQ0FLA2Y^R1RE%xFSZy#5h^zHk<1|zfN)QrQB#Yvb9i4 zJFhKarrF1sA{|3s98%fz;*gQVu|j*$@zj(gH|x*-MrwWC4!G18z@?N>VfGH3V?OJ; z#1{eML%>ScU$!v}fwH^xMiM>4qq^ zsIjb}�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