如何在Ubuntu 16.04上使用Statsd设置Graphite
Graphite是一种高度可扩展的实时绘图系统,可提供实时可视化和数字时间序列数据的存储。
这意味着Graphite需要其他应用程序来收集和传输数据点。
Graphite项目本身由几个不同的组件组成,每个组件都有特定的重点用途,其中Graphite安装程序中最可见和最动态的组件是Graphite Web应用程序。
Graphite-Web,这是一个基于Django的Web应用程序,用于呈现图形和仪表板。
它为设计图形提供了灵活的界面。
我们可以组合不同类型的度量标准,控件标签,字体,颜色和线条属性,还可以在需要时调整大小和操作数据。
Graphite的第二个主要组成部分是Carbon度量处理守护程序。
单个Graphite配置将具有一个或者多个Carbon守护程序,这些守护程序负责处理由收集和传输统计信息的其他进程发送的数据。
Graphite的第三个主要组件是Whisper时间序列数据库库,它非常灵活,可以非常详细地存储时间序列数据。
它会以不同的详细程度创建不同的存档,因此在实际使用中,当信息超过某些已配置的老化阈值时,信息会优雅地降级为较低的分辨率。
Graphite本身与数据收集无关,因此,为此目的,我们将使用Statsd收集程序,该程序将用于将其他数据发送到Graphite进行处理。
StatsD服务将收集所有数据,进行汇总,然后在预期的时间范围内将汇总的数据点发送给Graphite。
准备工作
在开始安装Graphite和Statsd之前,我们需要确保系统已完全更新,因为Ubuntu的默认存储库中有许多必需的Graphite软件包。
让我们使用root或者sudo用户凭据登录到Ubuntu 16.04 LTS服务器,然后运行以下命令来更新系统。
# apt-get update -y
系统更新后,请先移至Graphite软件包的安装。
在Ubuntu 16上安装Graphite
Graphite的安装已经相当简单,因为它在Ubuntu中具有存储库的可用性。
让我们运行以下命令来安装Graphite及其所有作为Web应用程序的组件,一个名为Carbon的存储后端以及一个名为whisper的数据库库。
# apt-get install graphite-web graphite-carbon
一旦按下“ y”并按下Enter键,安装过程就会开始,而在安装过程中,系统会询问我们是否要让Carbon删除数据库文件。
让我们在这里选择“否”,以免破坏统计信息。
让安装过程完成后,我们必须为Graphite配置一些必要的参数以使其正常运行。
Django的设定资料库
Graphite Web应用程序是Django Python应用程序,需要存储其数据,而不是碳和耳语数据库库。
默认情况下,将其配置为使用SQLite3数据库,但是使用PostgreSQL会更好。
让我们使用以下命令安装PostgreSQL及其依赖的软件包。
# apt-get install postgresql libpq-dev python-psycopg2
在键入“ Y”并按“ Enter”键后,将安装PostgreSQL软件包以及与Graphite交互所需的python库。
现在,使用“ postgres”用户连接到PostgreSQL,并使用以下命令创建用于Graphite的新用户和数据库。
# sudo -u postgres psql
# CREATE USER graphite WITH PASSWORD 'passw0rd';
# CREATE DATABASE graphite WITH OWNER graphite;
配置Graphite Web应用程序
设置数据库之后,现在我们将通过打开Graphite的Web应用程序配置文件来配置Graphite,以更新其“ SECRET_KEY”,该文件应设置为一个长的随机唯一字符串以用作此安装的秘密密钥。
该密钥用于对认证令牌,CRSF中间件,cookie存储等中使用的哈希加盐。
如果在负载均衡器后面使用,则应在实例之间进行相同的设置。
# vim /etc/graphite/local_settings.py
SECRET_KEY = 'secure_key'
设置本地时区(Django的默认值为America/Chicago)。
如果图形似乎偏移了几个小时,则可能需要将其显式设置为本地时区。
TIME_ZONE = 'Europe/London'
取消注释REMOTE_USER身份验证
USE_REMOTE_USER_AUTHENTICATION = True
然后在数据库配置下,根据先前在PostgreSQL中创建的用户和数据库更新参数,如图所示。
DATABASES = { 'default': { 'NAME': 'graphite', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'graphite', 'PASSWORD': 'passw0rd', 'HOST': '127.0.0.1', 'PORT': '' } }
保存并关闭配置文件,但在设置新数据库后不要忘记运行'manage.py syncdb'。
石墨数据库同步
运行以下命令以同步数据库,如图所示,将执行以下数量的操作,并且将要求我们为数据库创建一个超级用户帐户。
# graphite-manage migrate auth
Operations to perform: Apply all migrations: auth Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0001_initial... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK
这将防止用户身份验证错误,现在我们可以运行以下命令来同步数据库。
# graphite-manage syncdb
Operations to perform: Synchronize unmigrated apps: account, cli, render, whitelist, metrics, url_shortener, dashboard, composer, events, browser Apply all migrations: admin, contenttypes, tagging, auth, sessions Synchronizing apps without migrations: Creating tables... Creating table account_profile Creating table account_variable Creating table account_view Creating table account_window Creating table account_mygraph Creating table dashboard_dashboard Creating table events_event Creating table url_shortener_link Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying admin.0001_initial... OK Applying sessions.0001_initial... OK Applying tagging.0001_initial... OK You have installed Django's auth system, and don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): Email address: [email protected] Password: Password (again): Superuser created successfully.
配置碳
现在,我们将通过打开服务配置文件来开始配置Carbon(石墨存储后端)的配置。
但是在此之前,让我们通过在以下文件中进行更改来启用Carbon服务在启动时启动。
# vim /etc/default/graphite-carbon
# Change to true, to enable carbon-cache on boot CARBON_CACHE_ENABLED=true
保存并关闭此文件,然后使用我们喜欢的编辑器打开Carbon配置文件以对其进行一些细微更改。
# vim /etc/carbon/carbon.conf
启用每日日志轮转。
如果禁用,碳纤维将自动重新打开
如果文件旋转到不适当的位置(例如,通过logrotate守护程序)
ENABLE_LOGROTATION = True
保存并关闭文件,然后转到下一步以配置存储模式。
存储架构配置
现在,打开存储模式文件,告诉Carbon值存储多长时间以及这些值应有多详细。
#vim /etc/carbon/storage-schemas.conf
这里有两个默认部分,让我们添加另一个带有下面提到的参数的参数,稍后我们将使用它们。
[test] pattern = ^test\. retentions = 5s:5m,1m:1h,5m:1d
因此,当我们从Graphite请求信息时,它将从最详细的档案中返回信息,该信息可以衡量我们所要求的时间范围。
让我们保存并关闭文件,然后介绍存储聚合方法。
我们可以在一个称为storage-aggregation.conf的文件中定义希望聚合发生的方式。
使用以下命令将文件从Carbon实例目录复制到我们的Carbon配置目录中。
# cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
# vim /etc/carbon/storage-aggregation.conf
[min] pattern = \.min$ xFilesFactor = 0.1 aggregationMethod = min [max] pattern = \.max$ xFilesFactor = 0.1 aggregationMethod = max [sum] pattern = \.count$ xFilesFactor = 0 aggregationMethod = sum [default_average] pattern = .* xFilesFactor = 0.5 aggregationMethod = average
使用':wq!'保存并关闭文件编辑器。
并通过执行以下操作启动Carbon服务。
# systemctl start carbon-cache
设置Apache Web服务器
其中我们将安装Apache Web服务器以使用Graphite的Web界面,让我们运行以下命令来安装Apache及其从属石墨组件。
# apt-get install apache2 libapache2-mod-wsgi
安装完成后,请禁用虚拟主机文件,以免冲突。
# a2dissite 000-default
Site 000-default disabled. To activate the new configuration, you need to run: service apache2 reload
在重新加载Apache2之前,将Graphite Apache虚拟主机文件复制到可用站点,启用虚拟主机文件,然后使用以下命令重新加载Apache Web服务。
# cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available
# a2ensite apache2-graphite
# systemctl reload apache2
安装和配置Statsd
Graphite及其主要组件已成功安装和设置,现在我们将安装StatsD以使用statsd,我们需要使用以下命令安装node.js。
# apt-get install nodejs -y
然后安装“ git”并在系统的“/opt”目录中克隆一个Statsd存储库。
# apt-get install git
# cd /opt
# git clone git://github.com/etsy/statsd.git
安装后,在克隆的statsd目录中创建一个新文件,并将以下行插入其中。
# vim /opt/statsd/localConfig.js
{ graphitePort: 2003, graphiteHost: "127.0.0.1", port: 8125 }
保存并关闭文件,然后重新启动以下服务。
# systemctl restart carbon-cache
然后移至statsd目录并运行以下命令。
# cd /opt/statsd
# node ./stats.js ./localConfig.js
就是这样,让我们转到其Web界面。
访问石墨Web界面
所有必需的软件包均已安装并具有必需的配置。
现在该打开Web浏览器以与Graphite Web界面进行交互了。
只需使用FQDN或者服务器的IP,我们将看到其网页,如下所示。
http://your_server_ip
使用我们之前设置的凭据从右上角登录。
接下来,下拉树并展开矩阵,请参见查找并检查所需的图形,如下所示。
在Graphite Composer中,我们可以选择要查看的图形范围。
同样,我们可以在信息中心中添加或者删除我们选择的自定义图表。