声明:本文首发于柯胜利-李辉的博客,欢迎转载,但是必须保留本文的署名柯胜利-李辉(包含链接)。
来到这里,我假设你已经知道 logstash,graphite, uwsgi,nginx 以及 grafana 的用途。如果你并不了解它们的用途是什么,下面是它们的官方文档地址:
- logstash: https://www.elastic.co/guide/en/logstash/7.5/index.html
- graphite: https://graphite.readthedocs.io/en/latest/
- uwsgi: https://uwsgi-docs.readthedocs.io/en/latest/
- nginx: https://nginx.org/en/docs/
- grafana: https://grafana.com/docs/grafana/latest/
系统环境:
-
CentOS 7.6
-
python 2.7
所需工具软件和依赖:
- pip:python 包管理器。graphite 是用 python 写的,它依赖一些python包,我们用 pip 来安装这些python包。
- git:用于下载 graphite仓库
- gcc:本文后面的安装过程会自动调用gcc,linux 系统一般都已经预先安装了gcc。
- cairo.x86_64:cairo 是 python 的二维图形库。graphite-webapp 使用它来画监控图表(不知道什么是graphite-webapp请看这里)。
- cairo-devel
- cairo-tools
- libffi-devel:一个定义了C数据类型的python包。
- python-devel:python的开发包,其中包括了一些用C/Java/C#等编写的python扩展在编译的时候依赖的头文件等信息。
- epel-release:epel (Extra Packages for Enterprise Linux)。
- Django:基于python的免费开源web框架,graphit-webapp 依赖它提供网络服务。
- uwsgi-plugin-python2:不清楚这是个啥玩意儿,没它 uwsgi 会有问题。如果你的 uwsgi 服务出现问题,这里 或许有你需要的答案。
主要组件:
- logstash
- graphite
- uwsgi
- nginx
- grafana
安装:
所有的 python 包我都是直接安装的,想要用 python 虚拟环境的读者可以从这一步开始自行创建 python 虚拟环境并进入你的虚拟环境然后开始下面的安装。另外下面的指令我全部都是在 root 账户下执行的。
安装工具和依赖:
- 按照 pip官网 的指示安装,或者像我一样执行:
下载 get-pip.py 到当前工作目录。然后执行:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
- CentOS 7.6 预装了 Django 但版本太旧不是 graphite-1.1.6 (本文安装的graphite版本)需要的,执行覆盖安装:
pip install --ignore-installed Django
--ignore-installed 选项表示用新版本覆盖已安装的旧版本。如果你想要先卸载旧版本然后安装新版本的Django可以自己尝试一下,但我劝你别试了,因为我试过了,实在不知道咋卸载旧版本,只能选择覆盖掉了。
- 执行:
安装剩余全部依赖和工具。yum install -y git gcc cairo.x86_64 cairo-devel cairo-tools libffi-devel python-devel epel-release uwsgi-plugin-python2
安装组件:
logstash:
- 考虑到读者使用的可能不是 CentOS 7.6 系统以及未来不可预期的一些变化,建议阅读一下官网的安装指南(如果域名变更请自行谷歌查找最新的官网地址)。我这里安装的 logstash-7.5.1 依赖于Java 8 or Java 11,相同版本的 OpenJDK