在CentOS 8上安装Graphite和Graphite-Web | RHEL 8
Graphite是开发人员友好的监视工具,其硬件资源占用量少。
Graphite被创建为具有容错能力和高可用性。
作为开发人员,我们可以快速创建一个应用程序,该应用程序收集要绘制图形的数字时间序列数据,然后将Graphite的处理后端发送到Carbon服务。
数据存储在Graphite的专用数据库中,并按需绘制以进行图形显示。
如果磁盘无法跟上发生的大量小写操作的速度(每个数据点只有几个字节,但是大多数标准磁盘每秒最多不能执行数千个I/O操作),则Graphite的后端会缓存传入的数据(如果它们很小)。
如果我们不是从头开始编写收集器应用程序,则可以查看可用于数据收集和转发的工具。
在本文中,我们将引导我们完成在CentOS 8上完全安装Graphite的过程。
使用Podman的RHEL 8服务器。
该应用程序将在具有Systemd服务的容器中运行,以管理其生命周期。
Graphite的主要部件包括:
- carbon –监听时间序列数据的Twisted守护进程
- whisper–用于存储时间序列数据的简单数据库库(设计与RRD类似)
- graphite web app – Django webapp,使用Cairo按需绘制图形
在CentOS 8上安装Graphite和Graphite-Web | RHEL 8
我们将使用Podman容器运行时在CentOS 8上运行Graphite。
RHEL 8.除非遵循官方项目文档中的建议,否则无需任何自定义即可进行后续步骤。
系统必须是最新的:
sudo dnf -y update sudo systemctl reboot
步骤1:在CentOS 8 RHEL 8上安装容器工具
等待系统上线,然后登录并安装Container Tools。
sudo dnf module install container-tools -y
查询已安装的Podman的版本以确认是否成功。
$podman version Version: 1.6.4 RemoteAPI Version: 1 Go Version: go1.13.4 OS/Arch: linux/amd64
已安装其他容器管理工具,例如buildah和skopeo:
$buildah version Version: 1.11.6 Go Version: go1.13.4 Image Spec: 1.0.1-dev Runtime Spec: 1.0.1-dev CNI Spec: 0.4.0 libcni Version: image Version: 5.0.0 Git Commit: Built: Thu Jan 1 01:00:00 1970 OS/Arch: linux/amd64 $skopeo -version skopeo version 0.1.40
步骤2:使用Podman在CentOS 8 RHEL 8上运行Graphite Container
可以在Graphite的Docker存储库中找到有关使用Graphite Docker镜像的详细指南。
第一步是我们获取最新的Docker镜像。
让我们切换到root用户使用。
sudo -i
下载最新的Graphite和Statsd容器镜像。
# podman pull docker.io/graphiteapp/graphite-statsd Trying to pull docker.io/graphiteapp/graphite-statsd... Getting image source signatures Copying blob 700de820179a done Copying blob df20fa9351a1 done Copying blob f9a569415da5 done Copying blob 8f0c7d0dc99e done Copying config 875c7f22f4 done Writing manifest to image destination Storing signatures 875c7f22f4cd1b4da99fe6a3ab213e84567d42ed8f544655bfe8694c8d290345
列出可用的镜像:
# podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/ubuntu latest 9140108b62dc 2 weeks ago 75.3 MB docker.io/graphiteapp/graphite-statsd latest 875c7f22f4cd 2 months ago 651 MB
我们下载的镜像包括以下组件:
- Nginx –Graphite仪表板反向代理
- Graphite–前端仪表板
- Carbon–后端
- Statsd –基于UDP的后端代理
映射端口
80 | 80 | nginx |
2003 | 2003 | carbon receiver – plaintext |
2004 | 2004 | carbon receiver – pickle |
2023 | 2023 | carbon aggregator – plaintext |
2024 | 2024 | carbon aggregator – pickle |
8080 | 8080 | Graphite internal gunicorn port (without Nginx proxying). |
8125 | 8125 | statsd |
8126 | 8126 | statsd admin |
创建数据目录以保留容器数据。
在启动容器时,它们将映射到容器卷。
# mkdir -p /data/graphite/{data,logs,conf,statsd_config}
在运行命令之前,将时区更改为正确的设置。
podman run -d \ --name graphite \ --restart=always \ -p 80:80 \ -p 2003-2004:2003-2004 \ -p 2023-2024:2023-2024 \ -p 8125:8125/udp \ -p 8126:8126 \ -v /data/graphite/data:/opt/graphite/storage \ -v /data/graphite/conf:/opt/graphite/conf \ -v /data/graphite/statsd_config:/opt/statsd/config \ -v /data/graphite/logs:/var/log \ -e GRAPHITE_TIME_ZONE='Africa/Nairobi' \ graphiteapp/graphite-statsd
列出运行中的容器以查看Graphite容器是否正在运行。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0a79ef44ad59 docker.io/graphiteapp/graphite-statsd:latest 18 seconds ago Up 17 seconds ago 0.0.0.0:80->80/tcp, 0.0.0.0:8125->8125/udp graphite
检查已发布和占用的端口。
# podman port -l 8125/udp -> 0.0.0.0:8125 8126/tcp -> 0.0.0.0:8126 80/tcp -> 0.0.0.0:80 2003/tcp -> 0.0.0.0:2003 2004/tcp -> 0.0.0.0:2004 2023/tcp -> 0.0.0.0:2023 2024/tcp -> 0.0.0.0:2024
第3步:打开Graphite Web界面
许可模式下的Pu SELinux:
sudo setenforce 0 sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
使用端口80上的服务器IP地址访问Graphite Web控制台。
默认的登录凭据是:
Username: root Password: root
首次登录后,请在http://ip-address/admin/auth/user/1 /上更改此登录凭据。
单击"更改密码"链接以启动root用户密码更改。
注销并使用新密码设置返回。
步骤4:使用Systemd管理Graphite容器
为了确保我们的容器在系统启动时启动,让我们创建新的Systemd服务单元文件。
sudo tee /etc/systemd/system/graphite-podman.service<<EOF [Unit] Description=Graphite Docker Container Documentation=https://github.com/graphite-project/docker-graphite-statsd [Service] Type=simple TimeoutStartSec=0 Restart=on-failure RestartSec=30s ExecStartPre=-/usr/bin/podman kill graphite ExecStartPre=-/usr/bin/podman rm graphite ExecStartPre=/usr/bin/podman pull graphiteapp/graphite-statsd ExecStart=/usr/bin/podman run \ --name graphite \ --restart=always \ -p 80:80 \ -p 2003-2004:2003-2004 \ -p 2023-2024:2023-2024 \ -p 8125:8125/udp \ -p 8126:8126 \ -v /data/graphite/data:/opt/graphite/storage \ -v /data/graphite/conf:/opt/graphite/conf \ -v /data/graphite/statsd_config:/opt/statsd/config \ -v /data/graphite/logs:/var/log \ -e GRAPHITE_TIME_ZONE='Africa/Nairobi' \ graphiteapp/graphite-statsd SyslogIdentifier=graphite ExecStop=/usr/bin/podman stop graphite [Install] WantedBy=multi-user.target EOF
重新加载Systemd以获取新的单位。
sudo systemctl daemon-reload
确认创建了graphite-podman单位文件。
# systemctl list-unit-files graphite-podman.service UNIT FILE STATE graphite-podman.service disabled 1 unit files listed.
启用服务器启动时启动的服务。
# systemctl enable graphite-podman.service Created symlink /etc/systemd/system/multi-user.target.wants/graphite-podman.service → /etc/systemd/system/graphite-podman.service.
终止正在运行的容器,以确认服务正在运行。
# podman rm -f graphite 0a79ef44ad5979ade39a3f0c14ca5351771106b429a8318b7912cc9323e3da20
确认容器已被杀死。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
启动Graphite Systemd服务。
# systemctl start graphite-podman.service
检查服务状态:
# systemctl status graphite-podman.service ● graphite-podman.service - Graphite Docker Container Loaded: loaded (/etc/systemd/system/graphite-podman.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2017-10-11 05:50:04 CEST; 22s ago Docs: https://github.com/graphite-project/docker-graphite-statsd Process: 7182 ExecStartPre=/usr/bin/podman pull graphiteapp/graphite-statsd (code=exited, status=0/SUCCESS) Process: 7171 ExecStartPre=/usr/bin/podman rm graphite (code=exited, status=1/FAILURE) Process: 7160 ExecStartPre=/usr/bin/podman kill graphite (code=exited, status=125) Main PID: 7194 (podman) Tasks: 13 (limit: 24402) Memory: 32.3M CGroup: /system.slice/graphite-podman.service └─7194 /usr/bin/podman run --name graphite --restart=always -p 80:80 -p 2003-2004:2003-2004 -p 2023-2024:2023-2024 -p 8125:8125/udp -p 8126:8126 -v /d> Oct 11 05:50:16 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:16 :: [tagdb] Tagging carbon.aggregator.45793992f2ac-a.memUsage, carbon.aggregat> Oct 11 05:50:16 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:16 :: [tagdb] Tagged carbon.aggregator.45793992f2ac-a.memUsage, carbon.aggregato> Oct 11 05:50:16 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:16 :: [tagdb] Tagging carbon.aggregator.45793992f2ac-a.blacklistMatches, carbon.> Oct 11 05:50:17 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:17 :: [tagdb] Tagged carbon.aggregator.45793992f2ac-a.blacklistMatches, carbon.a> Oct 11 05:50:26 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:26 :: [listener] MetricLineReceiver connection with 127.0.0.1:60582 established Oct 11 05:50:26 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:26 :: [listener] MetricLineReceiver connection with 127.0.0.1:60582 closed clean> Oct 11 05:50:26 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:26 :: [tagdb] Tagging carbon.aggregator.45793992f2ac-a.destinations.127_0_0_1:20> Oct 11 05:50:26 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:26 :: [tagdb] Tagged carbon.aggregator.45793992f2ac-a.destinations.127_0_0_1:200> Oct 11 05:50:26 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:26 :: [tagdb] Tagging carbon.agents.45793992f2ac-a.avgUpdateTime, stats.timers.v> Oct 11 05:50:26 centos-01.theitroad.com graphite[7194]: 11/10/2017 03:50:26 :: [tagdb] Tagged carbon.agents.45793992f2ac-a.avgUpdateTime, stats.timers.vi>
使用Podman CLI列出正在运行的容器。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45793992f2ac docker.io/graphiteapp/graphite-statsd:latest About a minute ago Up About a minute ago 0.0.0.0:80->80/tcp, 0.0.0.0:8125->8125/udp graphite
如果服务器曾被重新引导,请执行系统重新引导以确保容器已启动。
sudo reboot
我们可以确认容器以不同的ID启动:
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c57a157a3600 docker.io/graphiteapp/graphite-statsd:latest 34 seconds ago Up 33 seconds ago 0.0.0.0:80->80/tcp, 0.0.0.0:8125->8125/udp graphite
安装Graphite之后,请访问Graphite文档以了解下一步。